Skip to content

yulesa/tiders-core

Repository files navigation

tiders-core

Documentation PyPI Crates.io tiders tiders-rpc-client telegram

Core libraries for the Tiders blockchain data pipeline framework.

tiders-core is a Rust workspace that provides the high-performance engine behind Tiders (Python SDK). It handles data ingestion, ABI decoding, type casting, encoding, and schema definitions. Tiders calls into these libraries via PyO3 bindings.

Crates

Crate Purpose
tiders-ingest Data provider orchestration and streaming
tiders-evm-decode EVM event and function ABI decoding
tiders-svm-decode Solana instruction and log decoding
tiders-cast Arrow column type casting (blockchain-aware)
tiders-evm-schema Arrow schema definitions for EVM data
tiders-svm-schema Arrow schema definitions for SVM data
tiders-query Query execution and filtering
tiders-core Re-export crate aggregating all of the above
tiders-core-python PyO3 Python bindings

Dependency Graph

tiders-core (re-exports)
├── tiders-ingest
│   ├── tiders-evm-schema
│   ├── tiders-svm-schema
│   └── tiders-rpc-client (optional, for RPC provider)
├── tiders-evm-decode
├── tiders-svm-decode
├── tiders-cast
└── tiders-query

Contributing

To develop locally across all repos, clone all three projects side by side:

git clone https://github.com/yulesa/tiders.git
git clone https://github.com/yulesa/tiders-core.git
git clone https://github.com/yulesa/tiders-rpc-client.git

Building from source

Build tiders-core:

cd tiders-core
cargo build

If you're also modifying tiders-rpc-client locally, override the crates.io version:

cargo build --config 'patch.crates-io.tiders-rpc-client.path="../tiders-rpc-client/rust"'

Build the Python bindings:

cd tiders-core/python
maturin develop --uv
# With local tiders-rpc-client override
maturin develop --uv --config 'patch.crates-io.tiders-rpc-client.path="../../tiders-rpc-client/rust"'

Persistent local development

To avoid passing --config on every build, add to tiders-core/Cargo.toml:

[patch.crates-io]
tiders-rpc-client = { path = "../tiders-rpc-client/rust" }

To use your local tiders-core in tiders, add to tiders/pyproject.toml:

[tool.uv.sources]
tiders-core = { path = "../tiders-core/python", editable = true }

Then sync:

cd tiders
uv sync

Acknowledgements

Tiders is a fork of Cherry and cherry-core, a blockchain data pipeline framework built by the SteelCake team. Cherry laid the architectural foundation that Tiders builds upon, and we're grateful for their work and the open-source spirit that made this continuation possible.

License

Licensed under either of

at your option.

Contribution

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.

About

libraries for decoding/validating/transforming blockchain data in arrow format

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors