v3.12.0
What's Changed
Run Chains In Separate Processes
envio start --chain <CHAIN_ID> lets multiple processes index different chains of the indexer in parallel:
envio local db-migrate up
ENVIO_INDEXER_PORT=8080 envio start --chain 1
ENVIO_INDEXER_PORT=8081 envio start --chain 137 --chain 5042Create the database once with envio local db-migrate up before any process starts, assign each configured chain to exactly one process, and give each its own port. Every process works fully independently of the others.
Requires a schema whose entities are all per-chain, and can't be combined with --restart, which would wipe the chains other processes are driving.
The mode requires all entities to be in per-chain mode, without @crossChain ones.
Track Progress Block Time
New envio_progress_block_time_seconds metric, also exposed as _meta.progressBlockTime, reports the unix timestamp of the block each chain has processed up to. Head lag was previously measured only against the data source's claimed height, so a source that was itself behind reported zero lag while serving stale data. now() - progress_block_time tells you how far behind chain time the indexer really is.
Populated on a best-effort basis during realtime sync. Chains that reach their
endBlockfreeze the value, so exclude them from alerts.
Solana
accountKeysnow includes addresses resolved through Address Lookup Tables. Previously only static keys were exposed, so handlers doing account analysis silently saw a fraction of a versioned transaction, sometimes not even the indexed program itself.- The
metaplexand block handler templates are replaced byusdc-transfers, indexing SPL Token transfers on mainnet.
By @JasoonS in #1640, by @DZakh in #1635, #1633
Other Changes
- Changed processed events calculation to prevent over-counting when the same log is processed by multiple handlers by @DZakh in #1636
- Increased the follower chain alignment margin from 10% to 20%, so followers stay buffered through slow anchor chain responses by @DZakh in #1632
- The API token is masked in the interactive
envio initprompt by @DZakh in #1639 - New
envio_source_response_blocks_totalandenvio_source_response_empty_totalmetrics by @DZakh in #1634 - Add Arc mainnet support to chain configuration by @DZakh in #1645
- Internal: TUI now derives its state from metrics instead of
IndexerStateby @DZakh in #1638 - Internal: ClickHouse batches are staged into a Rust-owned columnar arena, cutting main-thread staging CPU by 27-75% and peak memory by ~13% by @DZakh in #1643
Full Changelog: v3.11.0...v3.12.0