Cherry is a python library for building blockchain data pipelines.
It is designed to make building production-ready blockchain data pipelines easy.
See getting started section of the docs.
- Pure
pythonlibrary. Don't need yaml, SQL, toml etc. - High-level
datasetsAPI and flexible pipeline API. High-performance,low-costanduniformdata access. Ability to use advanced providers without platform lock-in.- Included functionality to
decode,validate,transformblockchain data. All implemented inrustfor performance. - Write transformations using
polars,pyarrow,datafusion,pandas,duckdbor any otherpyarrowcompatible library. Schema inferenceautomatically creates output tables.- Keep datasets fresh with
continuous ingestion. Parallelized, next batch of data is being fetched while your pre-processing function is running, while the database writes are being executed in parallel. Don't need to hand optimize anything.- Included library of transformations.
- Included functionality to implement
crash-resistance.
| Provider | Ethereum (EVM) | Solana (SVM) |
|---|---|---|
| HyperSync | ✅ | ❌ |
| SQD | ✅ | ✅ |
- ClickHouse
- Iceberg
- Deltalake
- DuckDB
- Arrow Datasets
- Parquet
Python code uses the standard logging module of python, so it can be configured according to python docs.
Set RUST_LOG environment variable according to env_logger docs in order to see logs from rust modules.
To run an example with trace level logging for rust modules:
RUST_LOG=trace uv run examples/path/to/my/example
This repo uses uv for development.
- Format the code with
uv run ruff format - Lint the code with
uv run ruff check - Run type checks with
uv run pyright - Run the tests with
uv run pytest
Core libraries we use for ingesting/decoding/validating/transforming blockchain data are implemented in cherry-core repo.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


