Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Providers

Providers are the data sources that tiders fetches blockchain data from. Each provider connects to a different backend service.

Available Providers

ProviderEVM (Ethereum)SVM (Solana)Description
HyperSyncYesNoHigh-performance indexed data
SQDYesYesDecentralized data network
RPCYesNoAny standard EVM JSON-RPC endpoint

Configuration

All providers use ProviderConfig from tiders_core.ingest:

from tiders_core.ingest import ProviderConfig, ProviderKind

Common Parameters

These parameters are available for all providers:

ParameterTypeDefaultDescription
kindProviderKindProvider backend (hypersync, sqd, rpc)
urlstrNoneProvider endpoint URL. If None, uses the provider’s default
bearer_tokenstrNoneAuthentication token for protected APIs
stop_on_headboolfalseIf true, stop when reaching the chain head; if false, keep polling indefinitely
head_poll_interval_millisintNoneHow frequently (ms) to poll for new blocks when streaming live data
buffer_sizeintNoneNumber of responses to buffer before sending to the consumer
max_num_retriesintNoneMaximum number of retries for failed requests
retry_backoff_msintNoneDelay increase between retries in milliseconds
retry_base_msintNoneBase retry delay in milliseconds
retry_ceiling_msintNoneMaximum retry delay in milliseconds
req_timeout_millisintNoneRequest timeout in milliseconds

RPC-only Parameters

ParameterTypeDefaultDescription
batch_sizeintNoneNumber of blocks fetched per batch
compute_units_per_secondintNoneRate limit in compute units per second
reorg_safe_distanceintNoneNumber of blocks behind head considered safe from chain reorganizations
trace_methodstrNoneTrace API method: "trace_block" or "debug_trace_block_by_number"

HyperSync

Python

provider = ProviderConfig(
    kind=ProviderKind.HYPERSYNC,
    url="https://eth.hypersync.xyz",
    bearer_token = HYPERSYNC_TOKEN
)

yaml

provider:
  kind: hypersync
  url: ${PROVIDER_URL}
  bearer_token: ${HYPERSYNC_BEARER_TOKEN}   # optional

SQD

Python

provider = ProviderConfig(
    kind=ProviderKind.SQD,
    url="https://portal.sqd.dev/datasets/ethereum-mainnet",
)

yaml

provider:
  kind: sqd
  url: ${PROVIDER_URL}

RPC

Use any standard EVM JSON-RPC endpoint (Alchemy, Infura, QuickNode, local node, etc.):

Python

provider = ProviderConfig(
    kind=ProviderKind.RPC,
    url="https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY",
)

yaml

provider:
  kind: rpc
  url: ${PROVIDER_URL}
  stop_on_head: true                     # optional, default: false
  trace_method: trace_block              # optional — trace_block or debug_trace_block_by_number

The RPC provider uses tiders-rpc-client under the hood, which supports adaptive concurrency, retry logic, and streaming.

Choosing a Provider

  • HyperSync — fast EVM historical data, allow request filtering; requires API key
  • SQD — fast, supports both EVM and SVM, allow request filtering; decentralized
  • RPC — works with traditional RPC, don’t allow request filtering; useful when other providers don’t support your chain