A Python interface for the Xatu API
Project description
PyXatu
Pyxatu is a Python package for querying data from the Xatu database and was developed to make access to Ethereum data as easy as possible without sacrificing on a rich set of features.
Pyxatu comes out of the box with:
-
High level access to Xatu (Ethereum EL + CL)
-
Mevboost Data API Interface
-
Validator label mapping
Install
pip install pyxatu xatu setup
xatu setup
copies the default configuration file to your HOME directory as .pyxatu_config.json
. Update this file with your actual Xatu credentials. Alternatively, you can use environment variables.
If you don't have credentials yet, please get in contact with someone from EthPandaOps.
Example Usage
As a first step, we always want to initialize PyXatu.
import pyxatu
xatu = pyxatu.PyXatu()
We use xatu
to execute our first query: We want to get the block number and the gas used of a block in a certain slot:
df = xatu.get_slots(
slot = [9000000, 9000010],
columns="slot, execution_payload_block_number, execution_payload_gas_used",
orderby="slot"
)
print(df)
slot | execution_payload_block_number | execution_payload_gas_used |
---|---|---|
9000000 | 19796604 | 18026681 |
9000001 | 19796605 | 13920219 |
9000002 | 19796606 | 12498513 |
9000003 | 19796607 | 2914192 |
9000004 | 19796608 | 29996743 |
... | ... | ... |
Second, let's say we want to know which validator attested correctly in a certain epoch:
df = xatu.get_elaborated_attestations(slot = 9000000)
print(df.head().to_markdown(index=False))
slot | validator | status | vote_type |
---|---|---|---|
9000000 | 7 | correct | source |
9000000 | 1179655 | correct | source |
9000000 | 524305 | correct | source |
9000000 | 17 | correct | source |
9000000 | 1179681 | correct | source |
... | ... | ... | ... |
Next, we want to get all bids accross all mevboost relays for a specific slot:
df = xatu.mevboost.get_bids(slot = 9096969)
print(df.groupby("relay")["value"].median().reset_index().to_markdown(index=False))
relay | value |
---|---|
aestus | 3.92872e+16 |
bloxroute (max profit) | 3.89533e+16 |
bloxroute (regulated) | 3.89042e+16 |
eden | 3.07634e+16 |
flashbots | 3.89779e+16 |
and the delivered mevboost payloads:
df = xatu.mevboost.get_payloads(slot = 9814162)
print(df.groupby("relay")["value"].median().reset_index().to_markdown(index=False))
relay | value |
---|---|
bloxroute (max profit) | 1.39261e+16 |
ultra sound | 1.39261e+16 |
What if we need a mappling from validator ids to labels:
xatu.validators.mapping[["validator_id", "deposit_address", "label", "lido_node_operator"]]
validator_id | deposit_address | label | lido_node_operator |
---|---|---|---|
1545106 | 0xfddf38947afb03c621c71b06c9c70bce73f12999 | lido | Develp GmbH |
1545105 | 0xfddf38947afb03c621c71b06c9c70bce73f12999 | lido | Develp GmbH |
1546068 | 0xd523794c879d9ec028960a231f866758e405be34 | everstake | |
1546067 | 0xe3cbd06d7dadb3f4e6557bab7edd924cd1489e8f | mantle | |
1546066 | 0xd4039ecc40aeda0582036437cf3ec02845da4c13 | kraken | |
1546065 | 0xd4039ecc40aeda0582036437cf3ec02845da4c13 | kraken | |
1545103 | 0xfddf38947afb03c621c71b06c9c70bce73f12999 | lido | Launchnodes |
1545102 | 0xfddf38947afb03c621c71b06c9c70bce73f12999 | lido | Launchnodes |
Contribution Guidelines
Please follow these steps to contribute:
- Fork the Repository: Start by forking the repository to your GitHub account.
- Create a New Branch: Create a new branch for your feature or bugfix.
git checkout -b feature/new-feature
- Write Tests: Ensure your code is well-tested and follows the project's coding standards.
- Submit a Pull Request: Once you're ready, submit a pull request for review.
New contributions that help improve PyXatu are more than welcome!
For any additional questions or support, feel free to open an issue on the GitHub repository.
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
Built Distribution
File details
Details for the file pyxatu-1.8.tar.gz
.
File metadata
- Download URL: pyxatu-1.8.tar.gz
- Upload date:
- Size: 35.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4adbe97610e7c523a60309697fe4949c0d6bce4c3b3708b237fb83aedd378e7c |
|
MD5 | ed51fa4ec8218991b969503a861768b1 |
|
BLAKE2b-256 | f030b6f402677fe09573e1fed0e1a8b87d0708e2cb23ed99ea95849307da93b9 |
File details
Details for the file pyxatu-1.8-py3-none-any.whl
.
File metadata
- Download URL: pyxatu-1.8-py3-none-any.whl
- Upload date:
- Size: 26.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f66549f431d7a7a741aacb15674d31fa6d392531abc37c72d3de24197a637f37 |
|
MD5 | 689805a1069cff71fb3c346edea30df3 |
|
BLAKE2b-256 | 2a5f57ead2b50b4399da8719c8601ffc65aacba63d9d6d2805b8b37ab0517b8e |