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.
- Events: ERC-20 transfers 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. Swaps are not modelled yet. - 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: dbt rebuilds every star-schema table on each run, so very large warehouses will get slower to update. Incremental models are planned.
- Block reorganisations are not handled. 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:
- swaps fact table (
fct_swaps) - more EVM chains
- SPL mints and burns, and Solana token names from on-chain metadata
- BigQuery and Snowflake targets through dbt adapters
- Homebrew formula