Skip to main content

A Python interface for the Xatu API

Project description

PyXatu Configuration

Pyxatu is a Python package for querying data from the Xatu data base and was developed to make access to Ethereum data as easy as possible while 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
    

The default configuration file will be copied to your HOME directory as pyxatu_config.json. Please modify this file with your actual Xatu credentials. If you don't have credentials yet, please get in contact with someone from EthPandaOps.

Example Usage

In the following, I want to provide a quick example.

As a first step, we want to initialize PyXatu. First, let's 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:

  1. Fork the Repository: Start by forking the repository to your GitHub account.
  2. Create a New Branch: Create a new branch for your feature or bugfix.
    git checkout -b feature/new-feature
    
  3. Write Tests: Ensure your code is well-tested and follows the project's coding standards.
  4. 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

pyxatu-1.4.tar.gz (32.9 kB view details)

Uploaded Source

Built Distribution

pyxatu-1.4-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file pyxatu-1.4.tar.gz.

File metadata

  • Download URL: pyxatu-1.4.tar.gz
  • Upload date:
  • Size: 32.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.2

File hashes

Hashes for pyxatu-1.4.tar.gz
Algorithm Hash digest
SHA256 7a5fb41a1e9e522be0d8b425e6abee8a4aaa0f1d85e3ecd0b5c5e13f010a73b2
MD5 3b9cb62e4e35ea6c3f00fe354a3a1c5a
BLAKE2b-256 910f973cc0708871c33dd60b2b82df6041e8710219c505b0e255c0a34efeead8

See more details on using hashes here.

File details

Details for the file pyxatu-1.4-py3-none-any.whl.

File metadata

  • Download URL: pyxatu-1.4-py3-none-any.whl
  • Upload date:
  • Size: 21.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.2

File hashes

Hashes for pyxatu-1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 04dbb4ce37474133214ad62f64130059cf2728d8b929c16ef8d51882a45842fd
MD5 99c5945525ef0da9919de614d6162228
BLAKE2b-256 9007f4f94e04a412d35f3f3bf17e7c7aa85b245a861489fff8bb4b2e3b8775c7

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