mirror of
https://github.com/autistic-symposium/web3-starter-py.git
synced 2025-05-17 14:10:21 -04:00
![]() Bumps [requests](https://github.com/psf/requests) from 2.28.2 to 2.31.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.28.2...v2.31.0) --- updated-dependencies: - dependency-name: requests dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> |
||
---|---|---|
.. | ||
abis | ||
scripts | ||
.env.example | ||
Makefile | ||
poetry.lock | ||
pyproject.toml | ||
README.md |
📚 web3-python-toolkit
👉 on-going development of a library and set of python scripts with my fav on-chain ops.
setting up
we use poetry to setup this package (config details at pyproject.toml
).
installing:
brew install poetry
make install
cp .env.example .env
vim .env
scripts
get contracts deployed to mainnet and testnets
we leverage ethereumetl to extract this data.
- add info to
.env
- run
cd scripts
poetry run python get_contracts_deployed.py
- any output is saved to
data/
.
get reserve history by block for a pair of addresses
- add the pair abi to
abis/
- run
cd scripts
poetry run python get_reserve_history_by_block.py
get deep block data
- add info to
.env
- run
cd scripts
poetry run python get_deep_block_data.py
decode calldata
- add info to
.env
- run
cd scripts
poetry run python decode_calldata.py
get token transfer events logs and wallet balances
- add info to
.env
- run
cd scripts
poetry run python get_transfer_logs_and_wallets_balance_for_a_token.py
scrape transfer events for token data
- add info to
.env
- run
cd scripts
poetry run python scrape_transfer_events.py
troubleshoot
if you see ethereum-etl not compatible to m1
run:
pip uninstall ethereum-etl
pip install --no-binary ethereum-etl
resources
relevant info
providers
- providers are how libraries such as
web3.py
talk to the blockchain. - providers take
JSON-RPC
requests and return responses - the most common ways to connect to your node are:
- IPC (uses local filesystem, fastest and most secure)
- Websockets (works remotely, faster than HTTP)
- HTTP (more nodes support it)
middleware
- a web3.py instance can be configured via middleware (sitting between the web3 methods and the provider).
- middlewares use an onion metaphor: each layer may affect both the request and response from the provider.
- each middleware layer gets invoked before the request reaches the provider, and then processes the result after the provider returns, in reverse order.
- we often use
geth_poa_middleware
, to run with geth's Proof-of-Authority (PoA) consensus. this adds support for more than 32 bytes in each block (theextraData
field).