1"use strict";(globalThis.webpackChunkpublic_docs=globalThis.webpackChunkpublic_docs||[]).push([[1442],{30876(e){e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"history","metadata":{"permalink":"/data/history","source":"@site/data/history/index.mdx","title":"Ethereum History Endpoints","description":"Historical blockchain data archives for Ethereum mainnet and testnets. eraE files provide complete execution layer history from genesis for client bootstrapping and verification.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"execution-client","permalink":"/data/tags/execution-client"},{"inline":true,"label":"ethereum-node","permalink":"/data/tags/ethereum-node"},{"inline":true,"label":"era1","permalink":"/data/tags/era-1"},{"inline":true,"label":"erae","permalink":"/data/tags/erae"},{"inline":true,"label":"history","permalink":"/data/tags/history"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"slug":"history","title":"Ethereum History Endpoints","description":"Historical blockchain data archives for Ethereum mainnet and testnets. eraE files provide complete execution layer history from genesis for client bootstrapping and verification.","image":"/img/blog/historical-panda.jpg","tags":["execution-client","ethereum-node","era1","erae","history"]},"unlisted":false,"nextItem":{"title":"Ethereum Client Snapshots","permalink":"/data/snapshots"}},"content":"import EraFileTable from \'@site/src/components/EraFileTable\';\\nimport EraEFileTable from \'@site/src/components/EraEFileTable\';\\nimport Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Alert from \'@site/src/components/Alert\';\\n\\n\\n<Tabs className=\\"data-tabs\\" queryString=\\"history-format\\">\\n <TabItem value=\\"erae\\" label=\\"Full History (eraE)\\">\\n <h2 id=\\"full-history-archives-erae\\">Full History Archives (eraE)</h2>\\n\\n <Alert>\\n The `eraE` files contain the complete Ethereum execution layer history from genesis, covering both pre-merge (PoW) and post-merge (PoS) blocks. This is the recommended format for full chain import, enabling historical inspection, client bootstrapping, and independent verification. Each file is cryptographically verifiable using included SHA256 checksums.\\n </Alert>\\n\\n <div className=\\"history-module\\">\\n <Tabs className=\\"data-tabs\\" queryString=\\"history-erae-network\\">\\n <TabItem value=\\"mainnet\\" label=\\"\ud83c\udf10 Mainnet\\">\\n <EraEFileTable network=\\"mainnet\\" />\\n </TabItem>\\n <TabItem value=\\"sepolia\\" label=\\"\ud83d\udc2c Sepolia\\">\\n <EraEFileTable network=\\"sepolia\\" />\\n </TabItem>\\n <TabItem value=\\"quickstart\\" label=\\"\u2139\ufe0f Usage Guide\\">\\n <div className=\\"history-tab-content\\">\\n <div style={{ padding: \'0 1.5rem\' }}>\\n <h2 id=\\"quickstart-erae\\">Quickstart</h2>\\n\\n <h3 id=\\"download-erae-files\\">Manually downloading `eraE` files</h3>\\n\\n <p>Files can be downloaded individually or in bulk using various methods:</p>\\n\\n ```sh\\n # Download a specific eraE file for mainnet\\n curl -O https://data.ethpandaops.io/erae/mainnet/mainnet-00000-xxxxxxxx.erae\\n\\n # Download checksums file\\n curl -O https://data.ethpandaops.io/erae/mainnet/checksums.txt\\n\\n # Download all files using aria2c (recommended for bulk downloads)\\n # This uses parallel connections for faster downloads\\n curl -s https://data.ethpandaops.io/erae/mainnet/urls.txt | aria2c -i - --continue=true\\n\\n # For sepolia, use:\\n curl -s https://data.ethpandaops.io/erae/sepolia/urls.txt | aria2c -i - --continue=true\\n\\n # Using Docker (if aria2c is not installed locally)\\n # This mounts the current directory to save downloads\\n docker run --rm -it --name download-erae -v $(pwd):/downloads -w /downloads alpine \\\\\\n sh -c \\"apk add --no-cache aria2 curl && \\\\\\n curl -s https://data.ethpandaops.io/erae/mainnet/urls.txt | aria2c -i - --continue=true\\"\\n ```\\n\\n <h3 id=\\"verify-checksums-erae\\">Verifying File Integrity</h3>\\n\\n <p>Verify downloaded eraE files using the pre-formatted checksums file:</p>\\n\\n ```sh\\n # Download the formatted checksums file\\n curl -O https://data.ethpandaops.io/erae/mainnet/checksums_sha256.txt\\n\\n # Verify all downloaded files (ignores missing files)\\n sha256sum -c checksums_sha256.txt --ignore-missing\\n\\n # For sepolia:\\n curl -O https://data.ethpandaops.io/erae/sepolia/checksums_sha256.txt\\n sha256sum -c checksums_sha256.txt --ignore-missing\\n ```\\n\\n <h3 id=\\"file-format-erae\\">File Format Specification</h3>\\n\\n <p>For detailed information about the `eraE` file format, see:</p>\\n\\n - [`eraE` Format Specification](https://hackmd.io/pIZlxnitSciV5wUgW6W20w)\\n - [`era` Format Specification](https://github.com/eth-clients/e2store-format-specs/blob/main/formats/era.md)\\n\\n <h3 id=\\"hosting-mirror-erae\\">Hosting a Mirror</h3>\\n\\n <p>Organizations interested in hosting `eraE` file mirrors can contact [email protected] for more information.</p>\\n </div>\\n </div>\\n </TabItem>\\n </Tabs>\\n </div>\\n </TabItem>\\n <TabItem value=\\"era1\\" label=\\"Legacy Pre-merge (era1)\\">\\n <h2 id=\\"pre-merge-archives-era1\\">Pre-merge Archives (era1)</h2>\\n\\n <Alert>\\n The `era1` files contain historical data for the former Ethereum proof-of-work chain. For mainnet it\'s **starting at genesis** on July 30, 2015 and **ending at the merge block** 15537393 on September 15, 2022 is available from the following sources, enabling historical inspection, client bootstrapping, and independent verification. Each file is cryptographically verifiable using included SHA256 checksums.\\n </Alert>\\n\\n <div className=\\"history-module\\">\\n <Tabs className=\\"data-tabs\\" queryString=\\"history-network\\">\\n <TabItem value=\\"mainnet\\" label=\\"\ud83c\udf10 Mainnet\\">\\n <EraFileTable network=\\"mainnet\\" />\\n </TabItem>\\n <TabItem value=\\"sepolia\\" label=\\"\ud83d\udc2c Sepolia\\">\\n <EraFileTable network=\\"sepolia\\" />\\n </TabItem>\\n <TabItem value=\\"quickstart\\" label=\\"\u2139\ufe0f Usage Guide\\">\\n <div className=\\"history-tab-content\\">\\n <div style={{ padding: \'0 1.5rem\' }}>\\n <h2 id=\\"quickstart\\">Quickstart</h2>\\n\\n <h3 id=\\"download-era-files\\">Manually downloading `era1` files</h3>\\n\\n <p>Files can be downloaded individually or in bulk using various methods:</p>\\n\\n ```sh\\n # Download a specific era file for mainnet (e.g., block 0-8191)\\n curl -O https://data.ethpandaops.io/era1/mainnet/mainnet-00000-5ec1ffb8.era1\\n\\n # Download checksums file\\n curl -O https://data.ethpandaops.io/era1/mainnet/checksums.txt\\n\\n # Download all files using aria2c (recommended for bulk downloads)\\n # This uses parallel connections for faster downloads\\n curl -s https://data.ethpandaops.io/era1/mainnet/urls.txt | aria2c -i - --continue=true\\n\\n # For sepolia, use:\\n curl -s https://data.ethpandaops.io/era1/sepolia/urls.txt | aria2c -i - --continue=true\\n\\n # Using Docker (if aria2c is not installed locally)\\n # This mounts the current directory to save downloads\\n docker run --rm -it --name download-era1 -v $(pwd):/downloads -w /downloads alpine \\\\\\n sh -c \\"apk add --no-cache aria2 curl && \\\\\\n curl -s https://data.ethpandaops.io/era1/mainnet/urls.txt | aria2c -i - --continue=true\\"\\n ```\\n\\n <h3 id=\\"verify-checksums\\">Verifying File Integrity</h3>\\n\\n <p>Verify downloaded era1 files using the pre-formatted checksums file:</p>\\n\\n ```sh\\n # Download the formatted checksums file\\n curl -O https://data.ethpandaops.io/era1/mainnet/checksums_sha256.txt\\n\\n # Verify all downloaded files (ignores missing files)\\n sha256sum -c checksums_sha256.txt --ignore-missing\\n\\n # For sepolia:\\n curl -O https://data.ethpandaops.io/era1/sepolia/checksums_sha256.txt\\n sha256sum -c checksums_sha256.txt --ignore-missing\\n ```\\n\\n <h3 id=\\"file-format\\">File Format Specification</h3>\\n\\n <p>For detailed information about the `era1` file format, see:</p>\\n\\n - [`era1` Format Specification](https://github.com/eth-clients/e2store-format-specs/blob/main/formats/era1.md)\\n - [`era` Format Specification](https://github.com/eth-clients/e2store-format-specs/blob/main/formats/era.md)\\n\\n <h3 id=\\"hosting-mirror\\">Hosting a Mirror</h3>\\n\\n <p>Organizations interested in hosting `era1` file mirrors can contact [email protected] for more information.</p>\\n </div>\\n </div>\\n </TabItem>\\n </Tabs>\\n </div>\\n </TabItem>\\n</Tabs>
1\\n\\n## Additional Resources\\n\\n- [History Endpoints Documentation](https://eth-clients.github.io/history-endpoints/)\\n- [E2Store Format Specifications](https://github.com/eth-clients/e2store-format-specs)\\n- [eraE Format Specification](https://hackmd.io/pIZlxnitSciV5wUgW6W20w)"},{"id":"snapshots","metadata":{"permalink":"/data/snapshots","source":"@site/data/snapshots/index.mdx","title":"Ethereum Client Snapshots","description":"Node data directory snapshots for clients across different Ethereum networks. Regularly updated snapshots help you quickly sync nodes for testing environments.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"execution-client","permalink":"/data/tags/execution-client"},{"inline":true,"label":"ethereum-node","permalink":"/data/tags/ethereum-node"},{"inline":true,"label":"snapshots","permalink":"/data/tags/snapshots"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"slug":"snapshots","title":"Ethereum Client Snapshots","description":"Node data directory snapshots for clients across different Ethereum networks. Regularly updated snapshots help you quickly sync nodes for testing environments.","image":"/img/blog/snapshots.jpg","tags":["execution-client","ethereum-node","snapshots"]},"unlisted":false,"prevItem":{"title":"Ethereum History Endpoints","permalink":"/data/history"},"nextItem":{"title":"Xatu - Contribute data","permalink":"/data/xatu/contribute"}},"content":"import SnapshotDataTable from \'@site/src/components/SnapshotDataTable\';\\nimport SnapshotStatus from \'@site/src/components/SnapshotStatus\';\\nimport Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Alert from \'@site/src/components/Alert\';\\n\\n\\n<Alert>\\n**Disclaimer:**\\nThe snapshots provided are intended solely for testing and development purposes. They are not guaranteed\\nto reflect the current state, data, or functionality of the canonical Ethereum Network. Use of these\\nsnapshots is at your own risk, and no representations or warranties, either express or implied, are made\\nregarding their accuracy, completeness, or reliability in comparison to the Ethereum Network. These\\nsnapshots should not be used in production or as a substitute for interacting with the canonical Ethereum Network.\\nAlways manually verify the state against the Ethereum Network to ensure consistency and accuracy.\\n</Alert>\\n\\n## Recent snapshots\\n\\nThese snapshots are [regularly updated](#snapshot-generation-status) and at the same block height. They can help you quickly sync your node.\\n\\n<div className=\\"snapshot-module\\">\\n <Tabs className=\\"data-tabs\\" queryString=\\"snapshot-network\\">\\n <TabItem value=\\"mainnet\\" label=\\"\ud83c\udf10 Mainnet\\">\\n <SnapshotDataTable network=\\"mainnet\\" />\\n </TabItem>\\n <TabItem value=\\"sepolia\\" label=\\"\ud83d\udc2c Sepolia\\">\\n <SnapshotDataTable network=\\"sepolia\\" />\\n </TabItem>\\n <TabItem value=\\"hoodi\\" label=\\"\ud83e\udd9a Hoodi\\">\\n <SnapshotDataTable network=\\"hoodi\\" />\\n </TabItem>\\n <TabItem value=\\"more\\" label=\\"\ud83d\udccb More...\\">\\n <Tabs className=\\"data-tabs\\" queryString=\\"more-snapshot-network\\">\\n <TabItem value=\\"holesky\\" label=\\"\ud83d\udc31 Holesky\\">\\n <SnapshotDataTable network=\\"holesky\\" />\\n </TabItem>\\n <TabItem value=\\"perf-devnet-2\\" label=\\"\ud83d\udd27 Perf Devnet-2\\">\\n <SnapshotDataTable network=\\"perf-devnet-2\\" />\\n </TabItem>\\n <TabItem value=\\"perf-devnet-3\\" label=\\"\ud83d\udd27 Perf Devnet-3\\">\\n <SnapshotDataTable network=\\"perf-devnet-3\\" />\\n </TabItem>\\n </Tabs>\\n </TabItem>\\n </Tabs>\\n</div>\\n\\n## Quickstart\\n\\n### TLDR: Just use Docker to download and untar the snapshot\\n\\nIf you have docker installed, this is the easiest way to download and untar a snapshot, without having to install any other dependencies:\\n\\n```sh\\ndocker run --rm -it \\\\\\n -e ETH_NETWORK=hoodi \\\\\\n -e ETH_CLIENT=geth \\\\\\n -e YOUR_USER=$UID \\\\\\n -v $PWD:/data \\\\\\n --entrypoint \\"/bin/sh\\" \\\\\\n alpine -c \\\\\\n \'apk add --no-cache wget curl tar zstd && \\\\\\n export BLOCK_NUMBER=$(curl -s https://snapshots.ethpandaops.io/$ETH_NETWORK/$ETH_CLIENT/latest) && \\\\\\n echo \\\\\\"Downloading snapshot for block number: $BLOCK_NUMBER\\\\\\" && \\\\\\n wget --tries=0 --retry-connrefused -O - https://snapshots.ethpandaops.io/$ETH_NETWORK/$ETH_CLIENT/$BLOCK_NUMBER/snapshot.tar.zst | \\\\\\n tar -I zstd -xvf - -C /data && \\\\\\n chown -R $YOUR_USER:$YOUR_USER /data\'\\n```\\n\\n### Detailed example: Getting a Hoodi Geth data dir snapshot\\n\\nVerify when the latest snapshot was taken:\\n\\n```sh\\n# Get the most recent block number for a snapshot\\nexport BLOCK_NUMBER=$(curl -s https://snapshots.ethpandaops.io/hoodi/geth/latest)\\necho $BLOCK_NUMBER\\n\\n# Check information about the latest block:\\ncurl -s https://snapshots.ethpandaops.io/hoodi/geth/$BLOCK_NUMBER/_snapshot_eth_getBlockByNumber.json\\n\\n# Or just get the block number:\\nprintf \'%d\\\\n\' $(\\n curl -s https://snapshots.ethpandaops.io/hoodi/geth/$BLOCK_NUMBER/_snapshot_eth_getBlockByNumber.json |\\n jq -r \'.result.number\'\\n)\\n\\n# Or just the time when it was taken\\nprintf \'%d\\\\n\' $(\\n curl -s https://snapshots.ethpandaops.io/hoodi/geth/$BLOCK_NUMBER/_snapshot_eth_getBlockByNumber.json |\\n jq -r \'.result.timestamp\'\\n)\\n```\\n\\nThen, also check which client version was used during the snapshot:\\n\\n```sh\\n# Get client version. Can be important, depending on the version that you want to run.\\ncurl -s https://snapshots.ethpandaops.io/hoodi/geth/$BLOCK_NUMBER/_snapshot_web3_clientVersion.json | jq -r \'.result\'\\n```\\n\\nIf you\'re happy with the version and the timestamp of the most recent snapshot, you can download it like:\\n\\n```sh\\n# Download the whole snapshot\\nwget --tries=0 --retry-connrefused https://snapshots.ethpandaops.io/hoodi/geth/$BLOCK_NUMBER/snapshot.tar.zst\\n\\n# Or .. use range requests to be able to resume a download if it fails due to network connectivity issues.\\n# This is very useful when downloading big snapshots, e.g. the mainnet ones.\\n# Alternatively you can also use tools like `aria2`.\\ncurl --continue-at - https://snapshots.ethpandaops.io/hoodi/geth/$BLOCK_NUMBER/snapshot.tar.zst -O\\n\\n# Or... download and untar at the same time. Safes you disk space, so you don\'t have to store the full compressed file.\\nwget --tries=0 --retry-connrefused -O - https://snapshots.ethpandaops.io/hoodi/geth/$BLOCK_NUMBER/snapshot.tar.zst \\\\\\n| tar -I zstd -xvf - -C $PATH_TO_YOUR_GETH_DATA_DIR\\n\\
1n# Or.. use a docker container with all the tools you need (curl, zstd, tar) and untar it on the fly\\ndocker run --rm -it \\\\\\n -e ETH_NETWORK=hoodi \\\\\\n -e ETH_CLIENT=geth \\\\\\n -v $PWD:/data \\\\\\n --entrypoint \\"/bin/sh\\" \\\\\\n alpine -c \\\\\\n \'apk add --no-cache wget curl tar zstd && \\\\\\n export BLOCK_NUMBER=$(curl -s https://snapshots.ethpandaops.io/$ETH_NETWORK/$ETH_CLIENT/latest) && \\\\\\n echo \\\\\\"Downloading snapshot for block number: $BLOCK_NUMBER\\\\\\" && \\\\\\n wget --tries=0 --retry-connrefused -O - https://snapshots.ethpandaops.io/$ETH_NETWORK/$ETH_CLIENT/$BLOCK_NUMBER/snapshot.tar.zst | \\\\\\n tar -I zstd -xvf - -C /data\'\\n```\\n\\n## Snapshot generation status\\n\\nThe following shows the current status of snapshot generation for each network.\\nYou\'ll also be able to see when the next snapshot is going to happen.\\nIf snapshots are being created, this section will display their progress in real-time.\\n\\n<div className=\\"snapshot-module\\">\\n <Tabs className=\\"data-tabs\\" queryString=\\"status-network\\">\\n <TabItem value=\\"mainnet\\" label=\\"\ud83c\udf10 Mainnet\\">\\n <SnapshotStatus network=\\"mainnet\\" />\\n </TabItem>\\n <TabItem value=\\"sepolia\\" label=\\"\ud83d\udc2c Sepolia\\">\\n <SnapshotStatus network=\\"sepolia\\" />\\n </TabItem>\\n <TabItem value=\\"hoodi\\" label=\\"\ud83e\udd9a Hoodi\\">\\n <SnapshotStatus network=\\"hoodi\\" />\\n </TabItem>\\n </Tabs>\\n</div>"},{"id":"xatu/contribute","metadata":{"permalink":"/data/xatu/contribute","source":"@site/data/xatu-data/contribute.md","title":"Xatu - Contribute data","description":"Contribute to the Xatu dataset by running xatu sentry against your beacon node, with privacy levels you control.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"contribute","permalink":"/data/tags/contribute"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"Xatu - Contribute data","slug":"xatu/contribute","description":"Contribute to the Xatu dataset by running xatu sentry against your beacon node, with privacy levels you control.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","contribute"]},"unlisted":false,"prevItem":{"title":"Ethereum Client Snapshots","permalink":"/data/snapshots"},"nextItem":{"title":"Xatu - Getting started","permalink":"/data/xatu/getting-started"}},"content":"import { Details, Summary } from \'@site/src/components/Collapsible\';\\n\\n## Contribute to Xatu data\\n\\nWe\'re excited to announce that we are opening up the Xatu data collection pipeline to the Ethereum community! This initiative enables community members to contribute valuable data to the Xatu dataset.\\n\\nAs discussions regarding the potential increase in maximum blob count continue **we hope to shed light on the perspective of Ethereum\'s most crucial participants - home stakers.**\\n\\n**Summary:**\\n\\n- Privacy focused. Multiple privacy levels that allow contributors to only disclose data they\'re comfortable with\\n- Initially restricted to known community members\\n- [Data is published daily by the EthPandaOps team](/data/xatu/getting-started)\\n\\n### Data Collection\\n#### Overview\\n\\nData is collected by running a Beacon node and the `xatu sentry` sidecar. The data is then sent to a pipeline that we run, which further anonymizes and redacts the data.\\n\\n<img alt=\\"Data Collection\\" class=\\"rounded\\" src=\\"https://github.com/ethpandaops/xatu-data/blob/master/assets/data-collection.jpg?raw=true\\" />\\n\\n#### Events Collected\\n\\nThe following events will be collected:\\n\\n- **[beacon_api_eth_v1_events_head](/data/xatu/tables?table=beacon_api_eth_v1_events_head)**\\n - When the beacon node has a new head block\\n<Details>\\n<Summary>Example payload</Summary>\\n```yaml\\ndata:\\nblock: \\"0x43d85cfa70181f60971dbc59d60c0e82e2ff8aea995bc942dc9c27bb16a055ca\\"\\ncurrent_duty_dependent_root: \\"0xc59a164bf477f138363db57e34f5b0e561c8bb1d30a0526f195b5575b2137513\\"\\nprevious_duty_depen
1dent_root: \\"0xbdbad239bcde3aa281edb7067a86ddba41f7f0a2e55b7ca61d628e57b6f1695f\\"\\nslot: \\"10098904\\"\\nstate: \\"0xbcf7bbd9f5da8b88d09e3876834e93945edd98a258091339caedad2ec6764576\\"\\nevent:\\ndate_time: \\"2024-10-04T03:01:13.245589039Z\\"\\nid: \\"b6b13f23-6412-4e74-aa62-8639fc2fa04e\\"\\nname: \\"BEACON_API_ETH_V1_EVENTS_HEAD_V2\\"\\nadditional_data:\\nepoch:\\n number: \\"315590\\"\\n start_date_time: \\"2024-10-04T02:56:23Z\\"\\npropagation:\\n slot_start_diff: \\"2245\\"\\nslot:\\n start_date_time: \\"2024-10-04T03:01:11Z\\"\\n```\\n</Details>\\n\\n- **[beacon_api_eth_v1_events_block](/data/xatu/tables?table=beacon_api_eth_v1_events_block)**\\n - When the beacon node has a new block\\n<Details>\\n<Summary>Example payload</Summary>\\n```yaml\\ndata:\\nblock: \\"0x7bb7f9e703896d516a0ee56d273dbe8fd71fd994a2f36cc489b8e1b825d74d44\\"\\nslot: \\"10098966\\"\\nevent:\\ndate_time: \\"2024-10-04T03:13:37.703055591Z\\"\\nid: \\"58ccd540-81c2-44ce-820d-e73b5af0bea7\\"\\nname: \\"BEACON_API_ETH_V1_EVENTS_BLOCK_V2\\"\\nadditional_data:\\nepoch:\\n number: \\"315592\\"\\n start_date_time: \\"2024-10-04T03:09:11Z\\"\\npropagation:\\n slot_start_diff: \\"2703\\"\\nslot:\\n number: \\"10098966\\"\\n start_date_time: \\"2024-10-04T03:13:35Z\\"\\n```\\n</Details>\\n\\n- **[beacon_api_eth_v1_events_blob_sidecar](/data/xatu/tables?table=beacon_api_eth_v1_events_blob_sidecar)**\\n - When the beacon node has recieved a blob sidecar that passes gossip validation.\\n<Details>\\n<Summary>Example payload</Summary>\\n```yaml\\ndata:\\nblock_root: \'0xc78adbc7ce7ab828bed85fedc6429989b4f4451d41aac8dc0c40b9f57839a3d7\'\\nindex: \'0\'\\nkzg_commitment: \'0xa8de65da8d07703217d6879c75165a36973ff3ddace933907e7d400662b90e575812bb1302bfd4bb24691a550a0dc02a\'\\nslot: \'10099003\'\\nversioned_hash: \'0x0196e5bc26c289ff58a37c75f72b6824507d67ab0e43577495d1ad7b74716601\'\\nevent:\\ndate_time: \'2024-10-04T03:21:00.752889196Z\'\\nid: adbf1ecb-4e52-404f-b3ba-6f83f6ffc4db\\nname: BEACON_API_ETH_V1_EVENTS_BLOB_SIDECAR\\nadditional_data:\\nepoch:\\n number: \'315593\'\\n start_date_time: \'2024-10-04T03:15:35Z\'\\npropagation:\\n slot_start_diff: \'1752\'\\nslot:\\n number: \'10099003\'\\n start_date_time: \'2024-10-04T03:20:59Z\'\\n```\\n</Details>\\n\\n- **[beacon_api_eth_v1_events_chain_reorg](/data/xatu/tables?table=beacon_api_eth_v1_events_chain_reorg)**\\n - When the beacon node has reorganized its chain\\n<Details>\\n<Summary>Example payload</Summary>\\n```yaml\\ndata:\\ndepth: \'3\'\\nepoch: \'83615\'\\nnew_head_block: \'0x4a99bc2dbb2c5640cf0798102588dcbc3c02d15989c7652bbcf4647e24a14881\'\\nnew_head_state: \'0x3e5af57c5c3bd8fa394c21edd8ac5b07378ef1e143ed18a9ff695090c970b23f\'\\nold_head_block: \'0x28e85b3e33721ad20b86c671f35686c8c91b5a29c6fd0cb41698872048d1b8ed\'\\nold_head_state: \'0x00f61794f1da3817bb8ae4591bbc0bc9cc0c72f4a422d5fdda5cd584ee147cd3\'\\nslot: \'2675702\'\\nevent:\\ndate_time: \'2024-10-04T03:00:36.161478913Z\'\\nid: b0db9607-a862-4dd2-b7e6-4faf77e3a949\\nname: BEACON_API_ETH_V1_EVENTS_CHAIN_REORG_V2\\nadditional_data:\\nepoch:\\n number: \'83615\'\\n start_date_time: \'2024-10-04T02:56:00Z\'\\npropagation:\\n slot_start_diff: \'12161\'\\nslot:\\n start_date_time: \'2024-10-04T03:00:24Z\'\\n```\\n</Details>\\n\\n- **[beacon_api_eth_v1_events_finalized_checkpoint](/data/xatu/tables?table=beacon_api_eth_v1_events_finalized_checkpoint)**\\n - When the beacon node\'s finalized checkpoint has been updated\\n<Details>\\n<Summary>Example payload</Summary>\\n```yaml\\ndata:\\nblock: \'0x418645de30f82a71b7470dfc9831602f750a3b8e14e507e112791d53b3d3842e\'\\nepoch: \'188220\'\\nstate: \'0x195dcdf004596c7afd999c39ff6f718f5bb631f3c8838b445fe87ea8f4f6de52\'\\nevent:\\ndate_time: \'2024-10-04T03:00:47.506914227Z\'\\nid: 57e595a9-c79a-458c-be83-0d6dd58ee81c\\nname: BEACON_API_ETH_V1_EVENTS_FINALIZED_CHECKPOINT_V2\\nadditional_data:\\nepoch:\\n number: \'188220\'\\n start_date_time: \'2024-10-04T02:48:00Z\'\\n```\\n</Details>\\n\\n#### Metadata\\n\\nThe following additional metadata is sent with every event:\\n##### Client Metadata\\n```yaml\\nclock_drift: \'2\' # Clock drift of the host machine\\nethereum:\\n consensus:\\n implementation: lighthouse # Beacon node implementation\\n version: Lighthouse/v5.3.0-d6ba8c3/x86_64-linux # Beacon node version\\n network:\\n id: \'11155111\' # Ethereum network ID\\n name: sepolia # Ethereum network name\\nid: 98df53c0-3de0-477c-a7c9-4ea9b17981c3 # Session ID. Resets on restart\\nimplementation: Xatu\\nmodule_name: SENTRY\\nname: b538bfd92sdv3 # Name of the sentry. Hash of the Beacon Node\'s node ID.\\nos: linux # Operating system of the host running sentry\\nversion: v0.0.202-3645eb8 # Xatu version\\n```\\n\\n##### Server Metadata\\n\\nOnce we recieve the event, we do some additional processing to get the server metadata. The data that is added to the event is configurable per-user and allows users to only disclose data they\'re comfortable with. Geo location data is very useful for understanding how data is propagated through the network, but is not required.\\n\\n```yaml\\nserver:\\
1nclient:\\n geo:\\n # OPTIONAL FIELDS\\n ## Data about ISP\\n autonomous_system_number: 24940 # Autonomous system number of the client\\n autonomous_system_organization: \\"Hetzner Online GmbH\\" # Organization associated with the autonomous system\\n \\n ## Data about location\\n city: \\"Helsinki\\" # City where the client is located\\n continent_code: \\"EU\\" # Continent code of the client\'s location\\n country: \\"Finland\\" # Country where the client is located\\n country_code: \\"FI\\" # Country code of the client\'s location\\n \\n ### ALWAYS REDACTED\\n latitude: REDACTED # Latitude coordinate of the client\'s location\\n longitude: REDACTED # Longitude coordinate of the client\'s location\\n group: \\"asn-city\\" # Group the client belongs to\\n user: \\"simplefrog47\\" # Pseudo username that sent the event\\n # ALWAYS REDACTED\\n ip: \\"REDACTED\\" # IP address of the client that sent the event\\nevent:\\n received_date_time: \\"2024-10-04T03:00:48.533351629Z\\" # Timestamp when the event was received\\n```\\n\\n**Note:** \\n\\n- The `client.name` field is re-hashed with a salt that only the EthPandaOps team has access to. This means that the original name of the client is not disclosed, and there is no way to map events back to a specific node id.\\n- The `client.ip`, `client.geo.latitude`, and `client.geo.longitude` fields are ALWAYS redacted.\\n\\n### Privacy groups\\n\\nPrivacy is a top priority for us. We have created privacy groups to allow users to only disclose data they\'re comfortable with.\\n\\n#### No additional Geo/ASN data\\n\\n<Details>\\n <Summary>No additional Geo/ASN data</Summary>\\n```yaml\\nautonomous_system_number: REDACTED # REDACTED\\nautonomous_system_organization: REDACTED # REDACTED\\ncity: \\"REDACTED\\" # REDACTED\\ncountry: \\"REDACTED\\" # REDACTED\\ncountry_code: \\"REDACTED\\" # REDACTED\\ncontinent_code: \\"REDACTED\\"\\n```\\n</Details>\\n\\n\\n#### With ASN data\\n<Details>\\n <Summary>Share geo location down to the city level</Summary>\\n```yaml\\nautonomous_system_number: 24940\\nautonomous_system_organization: \\"Hetzner Online GmbH\\"\\ncity: \\"Helsinki\\"\\ncontinent_code: \\"EU\\"\\ncountry: \\"Finland\\"\\ncountry_code: \\"FI\\"\\n```\\n</Details>\\n<Details>\\n <Summary>Share geo location down to the country level</Summary>\\n```yaml\\nautonomous_system_number: 24940\\nautonomous_system_organization: \\"Hetzner Online GmbH\\"\\ncontinent_code: \\"EU\\"\\ncountry: \\"Finland\\"\\ncountry_code: \\"FI\\"\\ncity: \\"REDACTED\\" # REDACTED\\n```\\n</Details>\\n<Details>\\n <Summary>Share geo location down to the continent level</Summary>\\n```yaml\\nautonomous_system_number: 24940\\nautonomous_system_organization: \\"Hetzner Online GmbH\\"\\ncontinent_code: \\"EU\\"\\ncity: \\"REDACTED\\" # REDACTED\\ncountry: \\"REDACTED\\" # REDACTED\\ncountry_code: \\"REDACTED\\" # REDACTED\\n```\\n</Details>\\n\\n<Details>\\n <Summary>Share no geo location data</Summary>\\n```yaml\\nautonomous_system_number: 24940\\nautonomous_system_organization: \\"Hetzner Online GmbH\\"\\ncontinent_code: \\"EU\\"\\ncity: \\"REDACTED\\" # REDACTED\\ncountry: \\"REDACTED\\" # REDACTED\\ncountry_code: \\"REDACTED\\" # REDACTED\\n```\\n</Details>\\n\\n#### Without ASN data\\n\\n<Details>\\n <Summary>Share geo location down to the city level without ASN</Summary>\\n```yaml\\ncity: \\"Helsinki\\"\\ncontinent_code: \\"EU\\"\\ncountry: \\"Finland\\"\\ncountry_code: \\"FI\\"\\nautonomous_system_number: REDACTED # REDACTED\\nautonomous_system_organization: REDACTED # REDACTED\\n```\\n</Details>\\n\\n<Details>\\n <Summary>Share geo location down to the country level without ASN</Summary>\\n```yaml\\ncontinent_code: \\"EU\\"\\ncountry: \\"Finland\\"\\ncountry_code: \\"FI\\"\\nautonomous_system_number: REDACTED # REDACTED\\nautonomous_system_organization: REDACTED # REDACTED\\ncity: \\"REDACTED\\" # REDACTED\\n```\\n</Details>\\n\\n<Details>\\n <Summary>Share geo location down to the continent level without ASN</Summary>\\n```yaml\\ncontinent_code: \\"EU\\"\\nautonomous_system_number: REDACTED # REDACTED\\nautonomous_system_organization: REDACTED # REDACTED\\ncity: \\"REDACTED\\" # REDACTED\\ncountry: \\"REDACTED\\" # REDACTED\\ncountry_code: \\"REDACTED\\" # REDACTED\\n```\\n</Details>\\n\\n### Get Started\\n\\nContributing to the Xatu dataset is currently restricted to known community members. We have plans to open this up to the public in the future, but for now, we want to ensure that the data remains high quality and relevant to the home staker community (read: we need to make sure our pipeline can handle the increased load \ud83d\ude02)\\n\\nIf you\'d like to contribute to the Xatu dataset, please\\n**[apply for access here](/contribute-data/)**\\n\\
1nOnce you\'ve been granted access, you\'ll receive instructions on how exactly to run `xatu sentry` and start contributing to the dataset.\\n\\n### Docker\\nIf you\'re already running a beacon node, running `xatu sentry` is as simple as running a docker container on your node. For example:\\n\\n```bash\\ndocker run -d \\\\\\n--name xatu-sentry \\\\\\n--restart unless-stopped \\\\\\n--cpus=\\"0.5\\" \\\\\\n--memory=\\"1g\\" \\\\\\n--read-only \\\\\\nethpandaops/xatu:latest sentry \\\\\\n--preset ethpandaops \\\\\\n--beacon-node-url=http://localhost:5052 \\\\\\n--output-authorization=REDACTED\\n```\\n\\n### Binary\\n\\nYou can download the binary from our [GitHub Releases](https://github.com/ethpandaops/xatu/releases) page or use the [install script](https://github.com/ethpandaops/xatu?tab=readme-ov-file#install-via-bash-script).\\n\\nOnce you have the `xatu` binary, you can run it with the following command:\\n\\n```bash\\nxatu sentry \\\\\\n--preset ethpandaops \\\\\\n--beacon-node-url=http://localhost:5052 \\\\\\n--output-authorization=REDACTED\\n```"},{"id":"xatu/getting-started","metadata":{"permalink":"/data/xatu/getting-started","source":"@site/data/xatu-data/getting-started.md","title":"Xatu - Getting started","description":"How to work with Xatu data: public parquet files, your own ClickHouse, or the EthPandaOps ClickHouse cluster.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"getting-started","permalink":"/data/tags/getting-started"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"Xatu - Getting started","slug":"xatu/getting-started","description":"How to work with Xatu data: public parquet files, your own ClickHouse, or the EthPandaOps ClickHouse cluster.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","getting-started"]},"unlisted":false,"prevItem":{"title":"Xatu - Contribute data","permalink":"/data/xatu/contribute"},"nextItem":{"title":"Xatu Data","permalink":"/data/xatu"}},"content":"import { Details, Summary } from \'@site/src/components/Collapsible\';\\n\\n### Working with the data\\n\\nPublic data is available in the form of Apache Parquet files. You can use any tool that supports the Apache Parquet format to query the data. If you have access to EthPandaOps Clickhouse you can query the data directly.\\n\\nIf you have access to EthPandaOps Clickhouse you can query the data directly. Skip ahead to [Using EthPandaOps Clickhouse](#using-ethpandaops-clickhouse).\\n\\n- [Getting started](#getting-started)\\n- [Choose your data access method](#choose-your-data-access-method)\\n- [Running your own Clickhouse](#running-your-own-clickhouse)\\n- [Using EthPandaOps Clickhouse](#using-ethpandaops-clickhouse)\\n- [Querying public parquet files](#querying-public-parquet-files)\\n- [Examples](#examples)\\n- [Queries](#queries)\\n- [Jupyter Notebooks](#jupyter-notebooks)\\n\\n### Getting started\\n\\nThere\'s a few ways to get started with the data.\\nFirst install the dependencies:\\n1. Install [docker](https://docs.docker.com/get-docker/)\\n2. Verify the installation by running the following command:\\n ```docker version```\\n\\n#### Choose your data access method\\n\\nThere are three options to get started with the data, all of them using Clickhouse. \\n\\n- Option 1: **Setup your own Clickhouse server and import the data.**\\n\\n> Recommended for most use cases.\\n> \\nGreat for larger, repeated queries or when you want to query the data in a more complex way.\\n\\n\\n[Click here to get started](#running-your-own-clickhouse)\\n\\n- Option 2: **Query the public parquet files directly.**\\n\\nGreat for small queries one-off queriesor when you don\'t want to setup your own Clickhouse server.\\n\\n[Click here to get started](#querying-public-parquet-files)\\n\\
1n- Option 3: **Use EthPandaOps Clickhouse.**\\n\\nGreat for quick and easy queries. **No setup required but access is limited.**\\n\\n[Click here to get started](#using-ethpandaops-clickhouse)\\n\\n\\n#### Running your own Clickhouse\\n\\nRunning your own Clickhouse cluster is recommended for most use cases. This process will walk you through the steps of setting up a cluster with the Xatu Clickhouse migrations and importing the data straight from the public parquet files.\\n\\n- **Clone the Xatu repo** \\nXatu contains a docker compose file to run a Clickhouse cluster locally. This server will automatically have the correct schema migrations applied.\\n\\nSteps:\\n 1. Clone the Xatu repo\\n ```bash\\n git clone https://github.com/ethpandaops/xatu.git;\\n cd xatu\\n ```\\n 2. Start the Xatu clickhouse stack\\n ```bash\\n docker compose --profile clickhouse up --detach\\n ```\\n 3. Verify the Clickhouse server is running and migrations are applied\\n ```bash\\n docker run --rm -it --net host clickhouse/clickhouse-server clickhouse client --query \\"SHOW TABLES FROM default\\" | grep -v local\\n ```\\n This should show you the tables that are available in the default database.\\n e.g.\\n ```\\n ...\\n beacon_api_eth_v1_beacon_committee\\n beacon_api_eth_v1_events_attestation\\n beacon_api_eth_v1_events_blob_sidecar\\n ...\\n ```\\n\\n- **Load data into Clickhouse**\\n\\nOur Clickhouse cluster is running but has no data! Let\'s import some data.\\n\\nSteps:\\n 1. Clone the Xatu-data repository\\n ```bash\\n cd;\\n git clone https://github.com/ethpandaops/xatu-data.git\\n cd xatu-data;\\n ```\\n 2. Install clickhouse client\\n ```bash\\n curl https://clickhouse.com/ | sh\\n ```\\n 3. Import the data into Clickhouse\\n ```bash\\n ./import-clickhouse.sh mainnet default beacon_api_eth_v1_events_block 2024-03-20 2024-03-27\\n ```\\n This will import the data for the `default.beacon_api_eth_v1_events_block` table in mainnet from the 20th of March 2024 to the 27th of March 2024.\\n 4. Verify the data import\\n ```bash\\n docker run --rm -it --net host \\\\\\n clickhouse/clickhouse-server clickhouse client -q \\"SELECT toStartOfDay(slot_start_date_time) AS day, COUNT(*) FROM default.beacon_api_eth_v1_events_block GROUP BY day FORMAT Pretty\\"\\n ```\\n This query will show you the count of events per day.\\n\\n- **Query Parquet Files Directly**\\n\\nAlternatively, you can query the parquet files directly without importing. This is useful if you only need to query a small subset of the data. \\n\\nSteps:\\n 1. Query the first 10 rows of the beacon_api_eth_v1_events_block table for 2024-03-20\\n ```bash\\n # date based partitioned tables\\n clickhouse local --query=\\"SELECT * FROM url(\'https://data.ethpandaops.io/xatu/mainnet/databases/default/beacon_api_eth_v1_events_block/2024/3/20.parquet\', \'Parquet\') LIMIT 10 FORMAT Pretty\\"\\n ```\\n 2. Query the first 10 rows of the canonical_execution_block table for chunk `20000000.parquet` (block numbers between `20000000` and `20000999`)\\n ```bash\\n # integer based partitioned tables\\n clickhouse local --query=\\"SELECT * FROM url(\'https://data.ethpandaops.io/xatu/mainnet/databases/default/canonical_execution_block/1000/20000000.parquet\', \'Parquet\') LIMIT 10 FORMAT Pretty\\"\\n ```\\n 3. Use globs to query multiple files, e.g., 15th to 20th March or between block `20000000` and `20010000`\\n ```bash\\n # date based partitioned tables\\n clickhouse local --query=\\"SELECT COUNT(*) FROM url(\'https://data.ethpandaops.io/xatu/mainnet/databases/default/beacon_api_eth_v1_events_block/2024/3/{15..20}.parquet\', \'Parquet\') FORMAT Pretty\\"\\n\\n # integer based partitioned tables\\n clickhouse local --query=\\"SELECT COUNT(*) FROM url(\'https://data.ethpandaops.io/xatu/mainnet/databases/default/canonical_execution_block/1000/{20000..20010}000.parquet\', \'Parquet\') LIMIT 10 FORMAT Pretty\\"\\n ```\\n\\n#### Using EthPandaOps Clickhouse\\nThe EthPandaOps Clickhouse cluster already has the data loaded and the schema migrations applied. You can query the data directly.\\nIf you need access please reach out to us at ethpandaops at ethereum.org. Acce
1ss is limited.\\n\\n- **Query the data**\\n\\nSteps:\\n 1. Setup your credentials\\n\\n ```bash\\n export CLICKHOUSE_USER=YOUR_USERNAME\\n export CLICKHOUSE_PASSWORD=YOUR_PASSWORD\\n ```\\n\\n 2. Execute a query\\n ```bash\\n echo \\"\\"\\"\\n SELECT\\n *\\n FROM default.beacon_api_eth_v1_events_block FINAL\\n WHERE\\n slot_start_date_time >= NOW() - INTERVAL \'1 HOUR\'\\n LIMIT 3\\n FORMAT Pretty\\n \\"\\"\\" | curl \\"https://clickhouse.xatu.ethpandaops.io\\" -u \\"$CLICKHOUSE_USER:$CLICKHOUSE_PASSWORD\\" --data-binary @-\\n ```\\n\\n#### Querying public parquet files\\n\\nQuerying the public parquet files is a great way to get started with the data. **We recommend you don\'t do this for larger queries or queries that you\'ll run again.**\\n\\nExamples:\\n\\n- Count the number of block events per consensus client for the 20th of March 2024 on Mainnet\\n\\n```bash\\ndocker run --rm -it clickhouse/clickhouse-server clickhouse local --query=\\"\\nSELECT\\n count(*), meta_consensus_implementation \\nFROM url(\'https://data.ethpandaops.io/xatu/mainnet/databases/default/beacon_api_eth_v1_events_block/2024/3/20.parquet\', \'Parquet\')\\nGROUP BY meta_consensus_implementation \\nFORMAT Pretty\\n\\"\\n```\\n\\n- Show the top 5 block builders by block numbers between 20000000 and 20010999\\n\\n```bash\\ndocker run --rm -it clickhouse/clickhouse-server clickhouse local --query=\\"\\nSELECT\\n count(*),\\n extra_data_string\\nFROM url(\'https://data.ethpandaops.io/xatu/mainnet/databases/default/canonical_execution_block/1000/{20000..20010}000.parquet\', \'Parquet\')\\nWHERE\\n block_number BETWEEN 20000000 AND 20010000\\nGROUP BY extra_data_string\\nORDER BY count(*) DESC\\nLIMIT 5\\nFORMAT Pretty\\n\\"\\n```\\n\\n### Examples\\nOnce your Clickhouse server is setup and the data is imported, you can query the data.\\n\\n#### Queries\\n\\n- Show all block events for the 20th of March 2024 by nimbus sentries on mainnet between 01:20 and 01:30\\n\\n```bash\\ndocker run --rm -it --net host -e CLICKHOUSE_USER=$CLICKHOUSE_USER -e CLICKHOUSE_PASSWORD=$CLICKHOUSE_PASSWORD -e CLICKHOUSE_HOST=$CLICKHOUSE_HOST clickhouse/clickhouse-server clickhouse client --query=\\"\\"\\"\\n SELECT\\n *\\n FROM beacon_api_eth_v1_events_block\\n WHERE\\n meta_network_name = \'mainnet\'\\n AND slot_start_date_time BETWEEN \'2024-03-20 01:20:00\' AND \'2024-03-20 01:30:00\' -- strongly recommend filtering by the partition key (slot_start_date_time) for query performance\\n AND meta_consensus_implementation = \'nimbus\'\\n FORMAT Pretty\\n\\"\\"\\"\\n```\\n\\n- Show the 90th, 50th, 05th percentile and min arrival time for blocks per day for the 20th to 27th of March 2024\\n\\n```bash\\ndocker run --rm -it --net host -e CLICKHOUSE_USER=$CLICKHOUSE_USER -e CLICKHOUSE_PASSWORD=$CLICKHOUSE_PASSWORD -e CLICKHOUSE_HOST=$CLICKHOUSE_HOST clickhouse/clickhouse-server clickhouse client --query=\\"\\"\\"\\n SELECT\\n toStartOfDay(slot_start_date_time) AS day,\\n round(MIN(propagation_slot_start_diff)) AS min_ms,\\n round(quantile(0.05)(propagation_slot_start_diff)) AS p05_ms,\\n round(quantile(0.50)(propagation_slot_start_diff)) AS p50_ms,\\n round(quantile(0.90)(propagation_slot_start_diff)) AS p90_ms\\n FROM beacon_api_eth_v1_events_block\\n WHERE\\n slot_start_date_time BETWEEN \'2024-03-20\' AND \'2024-03-27\' -- strongly recommend filtering by the partition key (slot_start_date_time) for query performance\\n GROUP BY day\\n ORDER BY day AS\\n FORMAT Pretty\\n\\"\\"\\"\\n```\\n\\n- Show the amount of times a block was seen per sentry for the 20th to 27th of March 2024\\n\\n```bash\\ndocker run --rm -it --net host -e CLICKHOUSE_USER=$CLICKHOUSE_USER -e CLICKHOUSE_PASSWORD=$CLICKHOUSE_PASSWORD -e CLICKHOUSE_HOST=$CLICKHOUSE_HOST clickhouse/clickhouse-server clickhouse client --query=\\"\\"\\"\\n SELECT\\n meta_client_name AS client_name,\\n COUNT(*) AS count\\n FROM beacon_api_eth_v1_events_block\\n WHERE\\n slot_start_date_time BETWEEN \'2024-03-20\' AN
1D \'2024-03-27\' -- strongly recommend filtering by the partition key (slot_start_date_time) for query performance\\n GROUP BY client_name\\n FORMAT Pretty\\n\\"\\"\\"\\n```\\n\\n- Show the top 5 block builders by block numbers between 20000000 and 20010000\\n\\n```bash\\ndocker run --rm -it --net host -e CLICKHOUSE_USER=$CLICKHOUSE_USER -e CLICKHOUSE_PASSWORD=$CLICKHOUSE_PASSWORD -e CLICKHOUSE_HOST=$CLICKHOUSE_HOST clickhouse/clickhouse-server clickhouse client --query=\\"\\"\\"\\n SELECT\\n count(*),\\n extra_data_string\\n FROM canonical_execution_block\\n WHERE\\n block_number BETWEEN 20000000 AND 20010000\\n GROUP BY extra_data_string\\n ORDER BY count(*) DESC\\n LIMIT 5\\n FORMAT Pretty\\n\\"\\"\\"\\n```\\n\\n#### Jupyter Notebooks\\n\\nThere are some examples for both Parquet and Clickhouse and SQLAlchemy in the [examples/parquet](https://github.com/ethpandaops/xatu-data/tree/master/examples/parquet) and [examples/clickhouse](https://github.com/ethpandaops/xatu-data/tree/master/examples/clickhouse) directories respectively."},{"id":"xatu","metadata":{"permalink":"/data/xatu","source":"@site/data/xatu-data/index.md","title":"Xatu Data","description":"Open data on the Ethereum network: beacon chain events, mempool activity, canonical chain data, MEV, and p2p networking \u2014 from production networks and upgrade devnets.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"beacon-api","permalink":"/data/tags/beacon-api"},{"inline":true,"label":"mempool","permalink":"/data/tags/mempool"},{"inline":true,"label":"mainnet","permalink":"/data/tags/mainnet"},{"inline":true,"label":"sepolia","permalink":"/data/tags/sepolia"},{"inline":true,"label":"hoodi","permalink":"/data/tags/hoodi"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"slug":"xatu","title":"Xatu Data","description":"Open data on the Ethereum network: beacon chain events, mempool activity, canonical chain data, MEV, and p2p networking \u2014 from production networks and upgrade devnets.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","beacon-api","mempool","mainnet","sepolia","hoodi"]},"unlisted":false,"prevItem":{"title":"Xatu - Getting started","permalink":"/data/xatu/getting-started"},"nextItem":{"title":"Xatu - Networks","permalink":"/data/xatu/networks"}},"content":"import { XatuLanding } from \'@site/src/components/XatuSchema\';\\n\\n<XatuLanding />"},{"id":"xatu/networks","metadata":{"permalink":"/data/xatu/networks","source":"@site/data/xatu-data/networks.md","title":"Xatu - Networks","description":"Which networks Xatu collects from: production networks with coverage, and devnets testing upcoming upgrades.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"networks","permalink":"/data/tags/networks"},{"inline":true,"label":"devnets","permalink":"/data/tags/devnets"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"Xatu - Networks","slug":"xatu/networks","description":"Which networks Xatu collects from: production networks with coverage, and devnets testing upcoming upgrades.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","networks","devnets"]},"unlisted":false,"prevItem":{"title":"Xatu Data","permalink":"/data/xatu"},"nextItem":{"title":"Xatu - Table explorer","permalink":"/data/xatu/tables"}},"content":"import { NetworksView } from \'@site/src/components/XatuSchema\';\\n\\n<NetworksView />"},{"id":"xatu/tables","metadata":{"permalink":"/data/xatu/tables","source":"@site/data/xatu-data/tables.md","title":"Xatu - Table explorer","description":"Search every Xatu table across all datasets and networks \u2014 by name, column, or description.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"tables","permalink":"/data/tags/tables"},{"inline":true,"label":"explorer","permalink":"/data/tags/explorer"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - Table explorer","slug":"xatu/tables","de
1scription":"Search every Xatu table across all datasets and networks \u2014 by name, column, or description.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","tables","explorer"]},"unlisted":false,"prevItem":{"title":"Xatu - Networks","permalink":"/data/xatu/networks"},"nextItem":{"title":"Xatu - Beacon API events","permalink":"/data/xatu/datasets/beacon_api_"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser />"},{"id":"xatu/datasets/beacon_api_","metadata":{"permalink":"/data/xatu/datasets/beacon_api_","source":"@site/data/xatu-data/datasets/beacon_api_.md","title":"Xatu - Beacon API events","description":"Events derived from the Beacon API event stream. This data is usually useful for \'timing\' events, such as when a block was seen by a sentry.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"beacon-api","permalink":"/data/tags/beacon-api"},{"inline":true,"label":"mainnet","permalink":"/data/tags/mainnet"},{"inline":true,"label":"sepolia","permalink":"/data/tags/sepolia"},{"inline":true,"label":"hoodi","permalink":"/data/tags/hoodi"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - Beacon API events","slug":"xatu/datasets/beacon_api_","description":"Events derived from the Beacon API event stream. This data is usually useful for \'timing\' events, such as when a block was seen by a sentry.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","beacon-api","mainnet","sepolia","hoodi"]},"unlisted":false,"prevItem":{"title":"Xatu - Table explorer","permalink":"/data/xatu/tables"},"nextItem":{"title":"Xatu - Canonical Beacon chain events","permalink":"/data/xatu/datasets/canonical_beacon_"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser dataset=\\"beacon_api_\\" />"},{"id":"xatu/datasets/canonical_beacon_","metadata":{"permalink":"/data/xatu/datasets/canonical_beacon_","source":"@site/data/xatu-data/datasets/canonical_beacon_.md","title":"Xatu - Canonical Beacon chain events","description":"Events derived from the finalized beacon chain. This data is only derived by a single instance, are deduped, and are more complete and reliable than the beacon_api_ tables.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"beacon-api","permalink":"/data/tags/beacon-api"},{"inline":true,"label":"mainnet","permalink":"/data/tags/mainnet"},{"inline":true,"label":"sepolia","permalink":"/data/tags/sepolia"},{"inline":true,"label":"hoodi","permalink":"/data/tags/hoodi"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - Canonical Beacon chain events","slug":"xatu/datasets/canonical_beacon_","description":"Events derived from the finalized beacon chain. This data is only derived by a single instance, are deduped, and are more complete and reliable than the beacon_api_ tables.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","beacon-api","mainnet","sepolia","hoodi"]},"unlisted":false,"prevItem":{"title":"Xatu - Beacon API events","permalink":"/data/xatu/datasets/beacon_api_"},"nextItem":{"title":"Xatu - Canonical Execution data","permalink":"/data/xatu/datasets/canonical_execution_"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser dataset=\\"canonical_beacon_\\" />"},{"id":"xatu/datasets/canonical_execution_","metadata":{"permalink":"/data/xatu/datasets/canonical_execution_","source":"@site/data/xatu-data/datasets/canonical_execution_.md","title":"Xatu - Canonical Execution data","description":"Data extracted from the execution layer. This data is only derived by a single instance, are deduped, and are more complete and reliable than the execution_layer_p2p tables.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"mempool","permalink":"/data/tags/mempool"},{"inline":true,"label":"mainnet","permalink":"/data/tags/mainnet"},{"inline":true,"label":"sepolia","permalink":"/data/tags/sepolia"},{"inline":true,"label":"hoodi","permalink":"/data/tags/hoodi"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - Canonical Execution data","slug":"xatu/datasets/canonical_execution_","description":"Data extracted from the execution layer. This data is only derived by a single instance, are deduped, and are more complete and reliable than the execution_layer_p2p tables.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","mempool","mainnet","sepolia","hoodi"]},"unlisted":false,"prevItem":{"title":"Xatu - Canonical Beacon chain events","permalink":"/data/xatu/datasets/canonical_beacon_"}
1,"nextItem":{"title":"Xatu - CBT (Clickhouse Build Tools)","permalink":"/data/xatu/datasets/cbt"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser dataset=\\"canonical_execution_\\" />"},{"id":"xatu/datasets/cbt","metadata":{"permalink":"/data/xatu/datasets/cbt","source":"@site/data/xatu-data/datasets/cbt.md","title":"Xatu - CBT (Clickhouse Build Tools)","description":"Pre-aggregated analytical tables for common blockchain queries powered by xatu-cbt and Clickhouse Build Tools. These tables are organized by network-specific databases and include dimension, fact, and intermediate tables for analyzing blockchain data.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"cbt","permalink":"/data/tags/cbt"},{"inline":true,"label":"mainnet","permalink":"/data/tags/mainnet"},{"inline":true,"label":"sepolia","permalink":"/data/tags/sepolia"},{"inline":true,"label":"holesky","permalink":"/data/tags/holesky"},{"inline":true,"label":"hoodi","permalink":"/data/tags/hoodi"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - CBT (Clickhouse Build Tools)","slug":"xatu/datasets/cbt","description":"Pre-aggregated analytical tables for common blockchain queries powered by xatu-cbt and Clickhouse Build Tools. These tables are organized by network-specific databases and include dimension, fact, and intermediate tables for analyzing blockchain data.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","cbt","mainnet","sepolia","holesky","hoodi"]},"unlisted":false,"prevItem":{"title":"Xatu - Canonical Execution data","permalink":"/data/xatu/datasets/canonical_execution_"},"nextItem":{"title":"Xatu - Libp2p events","permalink":"/data/xatu/datasets/libp2p_"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser dataset=\\"cbt\\" />"},{"id":"xatu/datasets/libp2p_","metadata":{"permalink":"/data/xatu/datasets/libp2p_","source":"@site/data/xatu-data/datasets/libp2p_.md","title":"Xatu - Libp2p events","description":"Events from the consensus layer p2p network. This data is usually useful for \'timing\' events, such as when a block was seen by a sentry.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"beacon-api","permalink":"/data/tags/beacon-api"},{"inline":true,"label":"libp2p","permalink":"/data/tags/libp-2-p"},{"inline":true,"label":"mainnet","permalink":"/data/tags/mainnet"},{"inline":true,"label":"sepolia","permalink":"/data/tags/sepolia"},{"inline":true,"label":"hoodi","permalink":"/data/tags/hoodi"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - Libp2p events","slug":"xatu/datasets/libp2p_","description":"Events from the consensus layer p2p network. This data is usually useful for \'timing\' events, such as when a block was seen by a sentry.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","beacon-api","libp2p","mainnet","sepolia","hoodi"]},"unlisted":false,"prevItem":{"title":"Xatu - CBT (Clickhouse Build Tools)","permalink":"/data/xatu/datasets/cbt"},"nextItem":{"title":"Xatu - Mempool events","permalink":"/data/xatu/datasets/mempool_"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser dataset=\\"libp2p_\\" />"},{"id":"xatu/datasets/mempool_","metadata":{"permalink":"/data/xatu/datasets/mempool_","source":"@site/data/xatu-data/datasets/mempool_.md","title":"Xatu - Mempool events","description":"Events from the execution layer p2p network. This data is usually useful for \'timing\' events, such as when a transaction was seen in the mempool by an instance.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"mempool","permalink":"/data/tags/mempool"},{"inline":true,"label":"mainnet","permalink":"/data/tags/mainnet"},{"inline":true,"label":"sepolia","permalink":"/data/tags/sepolia"},{"inline":true,"label":"hoodi","permalink":"/data/tags/hoodi"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - Mempool events","slug":"xatu/datasets/mempool_","description":"Events from the execution layer p2p network. This data is usually useful for \'t
1iming\' events, such as when a transaction was seen in the mempool by an instance.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","mempool","mainnet","sepolia","hoodi"]},"unlisted":false,"prevItem":{"title":"Xatu - Libp2p events","permalink":"/data/xatu/datasets/libp2p_"},"nextItem":{"title":"Xatu - MEV Relay events","permalink":"/data/xatu/datasets/mev_relay_"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser dataset=\\"mempool_\\" />"},{"id":"xatu/datasets/mev_relay_","metadata":{"permalink":"/data/xatu/datasets/mev_relay_","source":"@site/data/xatu-data/datasets/mev_relay_.md","title":"Xatu - MEV Relay events","description":"Events derived from MEV relays. Data is scraped from multiple MEV Relays by multiple instances.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"mev","permalink":"/data/tags/mev"},{"inline":true,"label":"mainnet","permalink":"/data/tags/mainnet"},{"inline":true,"label":"sepolia","permalink":"/data/tags/sepolia"},{"inline":true,"label":"hoodi","permalink":"/data/tags/hoodi"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - MEV Relay events","slug":"xatu/datasets/mev_relay_","description":"Events derived from MEV relays. Data is scraped from multiple MEV Relays by multiple instances.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","mev","mainnet","sepolia","hoodi"]},"unlisted":false,"prevItem":{"title":"Xatu - Mempool events","permalink":"/data/xatu/datasets/mempool_"},"nextItem":{"title":"Xatu - Fusaka experimental data","permalink":"/data/xatu/forks/fusaka"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser dataset=\\"mev_relay_\\" />"},{"id":"xatu/forks/fusaka","metadata":{"permalink":"/data/xatu/forks/fusaka","source":"@site/data/xatu-data/forks/fusaka.md","title":"Xatu - Fusaka experimental data","description":"Devnet-only Xatu tables being tested for the Fusaka network upgrade.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"devnets","permalink":"/data/tags/devnets"},{"inline":true,"label":"experimental","permalink":"/data/tags/experimental"},{"inline":true,"label":"fusaka","permalink":"/data/tags/fusaka"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - Fusaka experimental data","slug":"xatu/forks/fusaka","description":"Devnet-only Xatu tables being tested for the Fusaka network upgrade.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","devnets","experimental","fusaka"]},"unlisted":false,"prevItem":{"title":"Xatu - MEV Relay events","permalink":"/data/xatu/datasets/mev_relay_"},"nextItem":{"title":"Xatu - Glamsterdam experimental data","permalink":"/data/xatu/forks/glamsterdam"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser dataset=\\"fork:fusaka\\" />"},{"id":"xatu/forks/glamsterdam","metadata":{"permalink":"/data/xatu/forks/glamsterdam","source":"@site/data/xatu-data/forks/glamsterdam.md","title":"Xatu - Glamsterdam experimental data","description":"Devnet-only Xatu tables being tested for the Glamsterdam network upgrade.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"devnets","permalink":"/data/tags/devnets"},{"inline":true,"label":"experimental","permalink":"/data/tags/experimental"},{"inline":true,"label":"glamsterdam","permalink":"/data/tags/glamsterdam"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"hide_hero":true,"title":"Xatu - Glamsterdam experimental data","slug":"xatu/forks/glamsterdam","description":"Devnet-only Xatu tables being tested for the Glamsterdam network upgrade.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","devnets","experimental","glamsterdam"]},"unlisted":false,"prevItem":{"title":"Xatu - Fusaka experimental data","permalink":"/data/xatu/forks/fusaka"},"nextItem":{"title":"Xatu - Network upgrades","permalink":"/data/xatu/forks"}},"content":"import XatuBrowser from \'@site/src/components/XatuSchema/Browser\';\\n\\n<XatuBrowser dataset=\\"fork:glamsterdam\\" />"},{"id":"xatu/forks","metadata":{"permalink":"/data/xatu/forks","source":"@site/data/xatu-data/forks/index.md","title":"Xatu - Network upgrades","description":"Experimental Xatu data from devnets testing upcoming network upgrades. Devnets run xatu from a fork branch and carry tables that don\'t exist on production networks yet, each in its own network-specific database.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"devnets","permalink":"/data/tags/devnets"},{"inline":true,"label":"experimental","permalink":"/data/tags/experimental"},{"inline":true,"label":"forks","permalink":"/data/tags/forks"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"Xatu - Network upgrades","slug":"xatu/forks","description":"Experimental Xatu data from devnets testing upcoming network upgrades. Devnets run xatu from a fork branch and carry tables that don\'t exist on production networks yet, each in its own network-specific database.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","devnets","experimental","forks"]},"unlisted":false,"prevItem":{"title":"Xatu - Glamsterdam experimental data","permalink":"/data/xatu/forks/glamsterdam"}},"content":"import { ExperimentalOverview } from \'@site/src/components/XatuSchema\';\\n\\n<ExperimentalOverview />"}]}}')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.