MethodologyDecoding · 8 min
How We Decode Protocol Events
Decoding is a registry lookup plus a typed writer. This note is the procedure, not the ABI catalogue.
Context
A log is bytes. A decoded table is a typed row. The gap is an ABI, a contract version and a writer that never appends duplicates.
Method
topic0 is matched against a versioned ABI registry keyed by (protocol, version, event). Unknown topics stay in arc.logs. Known topics write one row to a protocol-namespaced table.
Findings
Proxy contracts reuse implementation ABIs across versions. The registry therefore keys on the implementation code hash, not the proxy address, and records the proxy as the emitting address.
Implications for the data model
Decoded tables are protocol-specific. Canonical tables union them. Raw logs are never mutated, so a decoder bug is a rebuild, not a patch.