Data Model
ChainForge separates raw, decoded, canonical and semantic tables. Each layer is derived from the one below it and never mutates it.
Layers
schema
raw arc.blocks · arc.transactions · arc.logs · arc.traces decoded uniswap_v3.swap · erc20.transfer · aave_v3.borrow canonical dex.trades · token.transfers · lending.activities semantic entity.attributions · activity.classifications
Naming
Raw tables are namespaced by chain. Decoded tables are namespaced by protocol. Canonical tables are namespaced by domain and carry a protocol column so rows from different decoders coexist.
Lineage
Every canonical row keeps tx_hash, log_index and block_number, so any value can be traced back to the exact raw log that produced it.