blockchain-etl / ethereum2-etl

Python scripts for ETL (extract, transform and load) jobs for Ethereum 2.0 beacon blocks, attestations, deposits, slashings, validators, committees. Data is available in Google BigQuery
https://console.cloud.google.com/bigquery?page=dataset&d=crypto_ethereum2_medalla&p=public-data-finance
MIT License
71 stars 12 forks source link

Ethereum 2.0 ETL

Build Status Join the chat at https://gitter.im/ethereum-eth Telegram Discord

Ethereum 2.0 ETL lets you convert blockchain data into convenient formats like CSVs and relational databases.

Do you just want to query Ethereum data right away? Use the public dataset in BigQuery.

Full documentation available here.

Quickstart

Install Ethereum 2.0 ETL:

pip install ethereum2-etl

Sync your own node or request access to node on Infura.

Export beacon blocks, attestations, deposits, proposer slashings, attester slashings, voluntary exits (JSON Schema, CSV Schema, Reference):

> ethereum2etl export_beacon_blocks --start-block 0 --end-block 200 \
--output-dir output --output-format json \
--provider-uri https://projectid:secret@medalla.infura.io

Export beacon validators (JSON Schema, CSV Schema, Reference):

> ethereum2etl export_beacon_validtors --epoch 10 \
--output-dir output --output-format json \
--provider-uri https://projectid:secret@medalla.infura.io

Export beacon committees (JSON Schema, CSV Schema, Reference):

> ethereum2etl export_beacon_committees --start-epoch 0 --end-epoch 10 \
--output-dir output --output-format json \
--provider-uri https://projectid:secret@medalla.infura.io

Find other commands here. Read this article for example SQL queries.

For the latest version, check out the repo and call

> pip install -e . 
> python ethereum2etl.py

Useful Links

Running Tests

> pip install -e .[dev]
> export ETHEREUM2ETL_PROVIDER_URI=https://projectid:secret@medalla.infura.io
> pytest -vv

Running Tox Tests

> pip install tox
> tox

Running in Docker

  1. Install Docker https://docs.docker.com/install/

  2. Build a docker image

    > docker build -t ethereum2-etl:latest .
    > docker image ls
  3. Run a container out of the image

    > docker run -v $HOME/output:/ethereum2-etl/output ethereum2-etl:latest export_beacon_blocks -s 0 -e 200 -p https://projectid:secret@medalla.infura.io
    > docker run -v $HOME/output:/ethereum2-etl/output ethereum2-etl:latest export_beacon_blocks -s 2020-08-04 -e 2020-08-05 -p https://projectid:secret@medalla.infura.io

Projects using Ethereum ETL