Skip to main content
Tiders

Documentation PyPI tiders-core tiders-rpc-client telegram

Tiders is an open-source framework that simplifies getting data out of blockchains and into your favorite tools. Whether you are building a DeFi dashboard, tracking NFT transfers, or running complex analytics, Tiders handles the heavy lifting of fetching, cleaning, transforming and storing blockchain data.

Tiders is modular. A Tiders pipeline is built from four components:

four_pipeline_components
Component Description
Provider Data source (HyperSync, SQD, or RPC)
Query What data to fetch (block range, transaction, logs, filters, field selection)
Steps Transformations to apply (decode, cast, encode, custom)
Writer Output destination

New Here? Start with the Full Stack Example

tiders-stack repo is a ready-to-run end-to-end example that wires up a complete Tiders environment from scratch: ingestion pipeline, database, server config, dashboard, and a paying client — all in one repo. If you don't have data or infrastructure yet, start here.

Why Tiders?

Most indexers lock you into a specific platform or database. Tiders is built to be modular, meaning you can swap parts in and out without breaking your setup:

  • Swap Providers: Don't like your current data source? Switch between HyperSync, SQD, or a standard RPC node by changing one line of code.
  • Plug-and-Play data transformations: Need to decode smart contract events or change data types? Use our built-in Rust-powered steps or write your own custom logic.
  • Write Anywhere: Send your data to a local DuckDB file for prototyping, or a production-grade ClickHouse or PostgreSQL instance when you're ready to scale.
  • Modular Reusable Pipelines: Protocols often reuse the same data structures. You don't need write modules from scratch every time. Since Tiders pipelines are regular Python objects, you can build functions around them, reuse across pipelines, or set input parameters to customize as needed.

Getting Started

See getting started section of the docs.

Two ways to use tiders

Mode How When to use
Python SDK Write a Python script, import tiders Full control, custom logic, complex pipelines
CLI (No-Code) Write a YAML config, run tiders start Quick setup, no Python required, standard pipelines

Both modes share the same pipeline engine.

You can also use tiders codegen to generate a Python script from a YAML config — a quick way to move from no-code to full Python control.

Installation

For both CLI and SDK

pip install tiders

Features

  • Continuous Ingestion: Keep your datasets live and fresh. Tiders can poll the chain head to ensure your data is always up to date.
  • Switch Providers: Move between HyperSync, SQD, or standard RPC nodes with a single config change.
  • No Vendor Lock-in: Use the best data providers in the industry without being tied to their specific platforms or database formats.
  • Custom Logic: Easily extend and customize your pipeline code in Python for complete flexibility.
  • Advanced Analytics: Seamlessly works with industry-standard tools like Polars, Pandas, Data fusion and PyArrow as the data is fetched.
  • Multiple Outputs: Send the same data to a local file and a production database simultaneously.
  • Rust-Powered Speed: Core tasks like decoding and transforming data are handled in Rust, giving you massive performance without needing to learn a low-level language.
  • Parallel Execution: Tiders doesn't wait around. While it's writing the last batch of data to your database, it’s already fetching and processing the next one in the background.

Data Providers

Connect to the best data sources in the industry without vendor lock-in. Tiders decouples the provider from the destination, giving you a consistent way to fetch data.

Provider Ethereum (EVM) Solana (SVM)
HyperSync ✅ ❌
SQD ✅ ✅
RPC ✅ ❌

Tiders can support new providers. If your project has custom APIs to fetch blockchain data, especially ones that support server-side filtering, you can create a client for it, similar to the Tiders RPC client. Get in touch with us.

Transformations

Leverage the tools you already know. Tiders automatically convert data batch-by-batch into your engine's native format, allowing for seamless, custom transformations on every incoming increment immediately before it is written.

Engine Data format in your function Best for
Polars Dict[str, pl.DataFrame] Fast columnar operations, expressive API
Pandas Dict[str, pd.DataFrame] Familiar API, complex row-level operations
DataFusion Dict[str, datafusion.DataFrame] SQL-based transformations, lazy evaluation
PyArrow Dict[str, pa.Table] Zero-copy, direct Arrow manipulation

Supported Output Formats

Whether local or a production-grade data lake, Tiders handles the schema mapping and batch-loading to your destination of choice.

Destination Type Description
DuckDB Database Embedded analytical database, great for local exploration and prototyping
ClickHouse Database Column-oriented database optimized for real-time analytical queries
PostgreSQL Database General-purpose relational database with broad ecosystem support
Apache Iceberg Table Format Open table format for large-scale analytics on data lakes
Delta Lake Table Format Storage layer with ACID transactions for data lakes
Parquet File Columnar file format, efficient for analytical workloads
CSV File Plain-text format, widely compatible and easy to inspect

Examples

Example Chain Provider Decoding Writer
rETH Transfer (no code) Ethereum (EVM) HyperSync EVM event decode Parquet
Jupiter Swaps Solana (SVM) SQD SVM instruction decode DuckDB
Uniswap V3 Ethereum (EVM) HyperSync / SQD / RPC EVM event decode (factory + children) DuckDB / Parquet / Delta Lake / ClickHouse / Iceberg
  • rETH Transfer — Simplest starting point. Uses a YAML config with no Python code to index a single event from a single contract.
  • Jupiter Swaps — Uses the Python SDK on Solana. Shows instruction decoding and custom Polars steps.
  • Uniswap V3 — Demonstrates the factory + children two-stage indexing pattern, chaining two pipelines where the first discovers contracts and the second indexes their events.

Browse all examples in the examples/ directory.

Logging

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

Development

Tiders is composed of some repositories. 3 owned ones.

Tiders-architecture

This repo uses uv for development. 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

Local development with tiders-core

Configure tiders to use your local tiders-core Python package by adding to pyproject.toml:

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

Then sync the environment:

cd tiders
uv sync

For full instructions including building tiders-core and tiders-rpc-client from source, see the Development Setup docs.

Core libraries we use for ingesting/decoding/validating/transforming blockchain data are implemented in tiders-core repo.

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.

Release files for tiders 0.1.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tiders 0.1.9
File Size Uploaded
tiders-0.1.9.tar.gz 371.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tiders 0.1.9
File Interpreter ABI Platform
tiders-0.1.9-py3-none-any.whl Python 3 none any Details

Total release size: 471.6 kB

Release files / tiders-0.1.9.tar.gz

Download URL tiders-0.1.9.tar.gz
Size 371.1 kB
Tags Source
SHA-256 checksum
How to use checksums
52f9df6e63214b1cb62ea161621b01a4fceefcd603fa3632e86bdab1b45dd65f
BLAKE2b-256 checksum
How to use checksums
aa35e2fce4b7013159caf3b3278b3684c21dfc385574f0222dc28a546fcd2061
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / tiders-0.1.9-py3-none-any.whl

Download URL tiders-0.1.9-py3-none-any.whl
Size 100.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2f1fb1544fb3c19a957cd1a320e6fbe464ed3a5a5eccd911fcf4aaf1d566960d
BLAKE2b-256 checksum
How to use checksums
8dc3cf16ac0423008976713a012f5f26462700fb7aef872c8fef91239a07b583
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.9 This release

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page