Skip to main content

Batteries-included client to interact with blockchains and smart contracts

Project description

Batteries-included client to interact with blockchains and smart contracts; used by web3cli and crabada.py.

Features

  • Easily create a client to interact with EVM-compatible chains
  • Interact with the most popular chains: Ethereum, Binance, Avalanche, Arbitrum One, zkSync Era, and more to come!
  • Includes a client for Compound V2 operations, and its clones
  • Subscribe to pending transactions in the mempool and new blocks.
  • Save gas by setting an upper limit on the base fee.
  • Need more flexibility? Use directly the underlying web3.py client.

Install

pip3 install -U web3client

Examples

Get the latest block on supported blockchains:

from web3factory.factory import make_client

eth_block = make_client("eth").get_latest_block() # Ethereum
bnb_block = make_client("bnb").get_latest_block() # BNB chain
avax_block = make_client("avax").get_latest_block() # Avalanche
arb_block = make_client("arb").get_latest_block() # Arbitrum
era_block = make_client("era").get_latest_block() # zkSync Era

Get the ETH and USDC balances of the Ethereum foundation:

from web3factory.factory import make_client, make_erc20_client

address = "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae"
eth = make_client("eth").get_balance_in_eth(address)
usdc = make_erc20_client("USDC", "eth").balanceOf(address) / 10**6

Get the BNB and BUSD balances of Binance's hot wallet:

from web3factory.factory import make_client, make_erc20_client

address = "0x8894e0a0c962cb723c1976a4421c95949be2d4e3"
bnb = make_client("bnb").get_balance_in_eth(address)
busd = make_erc20_client("BUSD", "bnb").balanceOf(address) / 10**18

More examples

Please have a look at the tests folder or at the examples folder 🙂

Custom chains & contracts

The factory module only allows to interact with a small list of chains and contracts.

To interact with an arbitrary EVM chain or smart contract, instantiate a custom client using the BaseClient class.

For a more structured approach, use web3core, a sub-package of web3cli that comes with many preloaded chains, and allows to import chains and smart contracts dynamically.

web3test test suite

web3client comes with several pytest plugins you can use to test your scripts:

  • web3test-ape: fixtures of accounts and smart contracts (erc20, compound, etc)
  • web3test-web3client: fixtures of clients for various smart contracts
  • web3test-web3factory: fixtures of clients for various chains

To use one or more plugins in your script, add the following lines at the top of your `conftest.py``:

pytest_plugins = [
    "web3test-ape", "web3test-web3client", "web3test-web3factory"
]

The order of the plugins in the aray is important.

It doesn't work 😡

Don't panic! Instead...

  1. Please check if your issue is listed in the Issues tab.
  2. If not, consider writing a new issue 🙂

Contributing

All contributions are welcome! To start improving web3client, please refer to our contribution guide.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

web3client-1.2.5.tar.gz (643.2 kB view details)

Uploaded Source

Built Distribution

web3client-1.2.5-py3-none-any.whl (39.4 kB view details)

Uploaded Python 3

File details

Details for the file web3client-1.2.5.tar.gz.

File metadata

  • Download URL: web3client-1.2.5.tar.gz
  • Upload date:
  • Size: 643.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.8.2 CPython/3.11.5

File hashes

Hashes for web3client-1.2.5.tar.gz
Algorithm Hash digest
SHA256 a4d74c0467b65b26855422e0306fb9ba346322b3e9f58b94d155c01b63247bd8
MD5 1138edd3a56a7f98a285c59fe07aaca7
BLAKE2b-256 5691c5532412448bef302848035b1ac65608b3f7b8321cd3be9086612cba0a71

See more details on using hashes here.

File details

Details for the file web3client-1.2.5-py3-none-any.whl.

File metadata

  • Download URL: web3client-1.2.5-py3-none-any.whl
  • Upload date:
  • Size: 39.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.8.2 CPython/3.11.5

File hashes

Hashes for web3client-1.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 86bd919ef65622cf64cb1effec8dd70f0950c4ae39cc2a4176affe68bda2a2e7
MD5 7aa9a7bfbee69d974752f4e9aa1be4a3
BLAKE2b-256 09267e82a077cf49830edc4d074650d1780a016d15a5629fb0c4d9aa7aa19072

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page