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.0.tar.gz (32.7 kB view details)

Uploaded Source

Built Distribution

pyxatu-1.0-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pyxatu-1.0.tar.gz
Algorithm Hash digest
SHA256 8ed774d400fee15b2e1ffe9286a881ac6a1dfc192091fa9714f6e00c49681ae1
MD5 30a777b5003738778061fc42c0115a45
BLAKE2b-256 c948dd686b996beae8b71f383f958795b22b636a5c6b5ba6fe3e584558e7e069

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyxatu-1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.2 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e06403ff37894d05878ba4554869a0432d810bb284b530e8eba11b9597db8730
MD5 32c90b38665d2824f83301d961dcc999
BLAKE2b-256 b8407b7851327f38f09c2670c4c5dd8b272bb60a62f1a5f9cecd0033cfc546f6

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