Limitations and roadmap
Limitations and roadmap for chainstar. Raw blockchain data to clean dimensional tables in your own warehouse, from one command.
- Chains: Ethereum, Base, Bitcoin mainnet and Solana mainnet-beta.
- Targets not run against the real service: MotherDuck, BigQuery and Snowflake were
built from their documentation and adapter source and checked as the
Targets table says, not against an account. ClickHouse was tested on a
single 25.8 server, not on ClickHouse Cloud or a cluster (chainstar sets no
ON CLUSTERor replicated engines); S3 lakes on s3mock, not on AWS S3, R2 or MinIO. - ClickHouse and BigQuery batches are not atomic: a sync that stops between loading a batch and recording it loads the batch again next time (see Targets).
- Events: ERC-20 transfers and the swap events of
Swaps and USD prices only on Ethereum and Base. NFT transfers
are not extracted: cryo's ERC-20 dataset skips ERC-721
Transferevents (they have an extra indexed topic), and ERC-1155 uses different events. - USD prices come only from the swaps in the warehouse, so a short range prices only what traded in it, and a token traded only against other tokens is unpriced. Prices are per UTC hour; values use the hourly price only. Stablecoins are taken at 1 USD (a test warns if their swaps disagree); Bitcoin is priced from wrapped BTC on Ethereum and Base and only when those are in the same warehouse. Uniswap v4, PancakeSwap v3, Curve and Balancer are not read. Solana swaps are derived from balance changes, one per transaction, with the limits described there.
- Token names lose their spaces. cryo 0.3.2 strips spaces and control characters
from
name()andsymbol()results, so "Wrapped Ether" arrives asWrappedEther. Tokens that returnbytes32names, or that do not implement these functions, may have odd or empty values. - Symbols are not identities. Any contract can call itself "USDC". Real data is
full of impostor tokens with look-alike or identical symbols, and chainstar does not
filter them. Identify tokens by
token_address. - Token metadata is read at the latest block, not at the time of the transfers. Most
RPC nodes cannot answer calls against old state, and cryo stores a failed call as an
empty value without reporting an error. Metadata is fetched once per token and then
reused; delete
data/<chain>/erc20_metadata/to fetch it again. - Fees exclude Ethereum blob fees and Base's L1 data fee (see
fct_fees). - Bitcoin needs a node that serves
getblockverbosity 3 with undo data: Bitcoin Core 23 or later, not pruned below your range. Other Bitcoin RPC implementations were not tested. The coinbase transactions in blocks 91842 and 91880 repeat txids of earlier coinbases (BIP 30 grandfathers them); loading those blocks would fail the unique key tests. - Solana transfers cover SPL
transferandtransferCheckedand System Programtransfer. Not included: SPL mints and burns (unlike ERC-20, they are separate instructions, not transfers from or to a zero address), Token-2022transferCheckedWithFee, SOL moved bycreateAccount,transferWithSeedor by programs that change lamport balances directly, and staking rewards. SPL token names and symbols are not read. - Solana block times are the RPC's estimate; a block without one fails the
block_timestampnot-null test. - Full rebuilds with
run:chainstar runrebuilds every star-schema table each time, so very large warehouses get slower to update that way;chainstar syncbuilds them incrementally (see Incremental tables). - Block reorganisations are handled by
chainstar sync(see Reorganisations), not byrun,quickstartorwalletwithout--sync: with those, stay a few blocks behind the chain head (Solana reads only finalized slots, which cannot be rolled back). - Your RPC provider sets the limits. Free public endpoints often refuse some
requests, cap request rates, or answer only for recent blocks (the default publicnode
endpoints are asked at 2 to 5 requests per second, see
Public endpoints). cryo fetches ERC-20
transfers with one request per block, and one refused request fails its whole chunk.
chainstar retries a failed extraction (Bitcoin and Solana: each failed request), making
up to three attempts and keeping completed chunks; if a run still fails, run the same command
again, and on a flaky endpoint use a smaller
--chunk-size(for example 10) so each retry makes progress.
Roadmap
Not built yet, in rough order:
- more DEX venues (Uniswap v4, Curve, Balancer, PancakeSwap v3)
- more EVM chains
- SPL mints and burns, and Solana token names from on-chain metadata
- BigQuery and Snowflake verified against real accounts, and MotherDuck with a token
- Homebrew formula