ABI decoding is an optional pipeline stage that transforms raw EVM event logs or transaction calldata into structured, typed rows using Solidity ABI definitions. It is activated when an abi section is present in your pipeline configuration.
Applicability
ABI decoding only applies to the following topic entities:
logs - raw event logs emitted by smart contracts.
transactions - raw transaction calldata submitted to the network.
ABI decoding is incompatible with the Kafka (raw) destination. Pipelines that combine ABI decoding with a Kafka destination are rejected at startup.
Decoders
The pipeline provides two decoders, each responsible for a different entity type:
| Decoder | Input Entity | Output Tables |
|---|
| EventDecoder | logs | {chain_name}_evt_{event_name} tables |
| FunctionDecoder | transactions | {chain_name}_fn_{function_name} tables |
Data Flow
╔═════════════════════╗ ╔═════════════════╗ ╔═══════════════════════════════════════════════════╗
║ logs stream ║░ ──▶ ║ EventDecoder ║░ ──▶ ║ base_evt_swap, base_evt_transfer, ... ║░
╚═════════════════════╝░ ╚═════════════════╝░ ╚═══════════════════════════════════════════════════╝░
░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
╔═════════════════════╗ ╔═════════════════╗ ╔═══════════════════════════════════════════════════╗
║ transactions stream ║░ ──▶ ║ FunctionDecoder ║░ ──▶ ║ base_fn_exact_input_single, base_fn_transfer, ... ║░
╚═════════════════════╝░ ╚═════════════════╝░ ╚═══════════════════════════════════════════════════╝░
░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
Raw log or transaction rows flow through the appropriate decoder, which matches each record against the provided ABI. Matched records are emitted into named output tables derived from the event or function name. Unmatched records are either dropped or routed to a raw fallback table, depending on your configuration.
Configuration
Add the abi section to your pipeline configuration to enable decoding:
abi:
path: "/etc/pipeline-api/abi.json"
contract_addresses:
- "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45"
unmatched: "skip"
Fields
| Field | Type | Required | Default | Description |
|---|
path | string | Yes | — | Path to the ABI JSON file. Must conform to the standard Solidity ABI JSON format. |
contract_addresses | list | No | — | Optional list of contract addresses to filter on. When omitted, all contracts are decoded. |
unmatched | string | No | skip | Strategy for records that do not match any ABI entry. skip drops the record; raw_table writes it to raw_logs or raw_transactions. |
Next Steps
Event Decoding
Decode event logs into structured evt_ tables.
Function Decoding
Decode transaction calldata into structured fn_ tables.
Reference
ABI file format, type mappings, and filtering behavior.