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 contractsweb3test-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...
- Please check if your issue is listed in the Issues tab.
- If not, consider writing a new issue 🙂
Contributing
All contributions are welcome! To start improving web3client
, please refer to our contribution guide.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4d74c0467b65b26855422e0306fb9ba346322b3e9f58b94d155c01b63247bd8 |
|
MD5 | 1138edd3a56a7f98a285c59fe07aaca7 |
|
BLAKE2b-256 | 5691c5532412448bef302848035b1ac65608b3f7b8321cd3be9086612cba0a71 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86bd919ef65622cf64cb1effec8dd70f0950c4ae39cc2a4176affe68bda2a2e7 |
|
MD5 | 7aa9a7bfbee69d974752f4e9aa1be4a3 |
|
BLAKE2b-256 | 09267e82a077cf49830edc4d074650d1780a016d15a5629fb0c4d9aa7aa19072 |