When to provide metadata
| Scenario | Metadata needed? |
|---|---|
| Native transfers (ETH, SOL, SUI) | No |
| Known protocols (Uniswap, Jupiter, Aave) | No (built-in support) |
| Standard token transfers (ERC-20, SPL) | No (built-in support) |
| Custom smart contracts | Yes |
| Anchor programs without public IDL | Yes |
Ethereum: Contract ABI
For Ethereum and EVM chains, provide the contract ABI to decode function calls:gRPC example
ABI format
The ABI is standard Solidity ABI JSON:Specifying network
For EVM chains other than mainnet, specify the network:Solana: Program IDL
For Solana programs, provide the Anchor IDL to decode instructions:gRPC example
Multiple programs
If your transaction interacts with multiple programs, use the IDL mappings:Supported IDL types
| Type | Description |
|---|---|
SOLANA_IDL_TYPE_ANCHOR | Anchor framework IDL |
SOLANA_IDL_TYPE_SHANK | Shank IDL format |
Library integration
When using the library directly (not gRPC), pass metadata as a function parameter:Obtaining metadata
Ethereum ABIs
| Source | How to get |
|---|---|
| Etherscan | View verified contract → Contract tab → ABI |
| Compilation | solc --abi Contract.sol |
| Hardhat | artifacts/contracts/Contract.sol/Contract.json |
| Foundry | out/Contract.sol/Contract.json |
Solana IDLs
| Source | How to get |
|---|---|
| Anchor build | target/idl/program_name.json |
| On-chain | Some programs publish IDL on-chain |
| Program repo | Check the program’s source repository |
Without metadata
If you don’t provide metadata for a contract interaction, the parser will:- Decode what it can (addresses, amounts in native token)
- Show the function selector (first 4 bytes) as hex
- Display raw calldata for unknown parameters
Next steps
- How Parsing Works — Understand the parsing pipeline
- Error Handling — Handle cases where parsing fails
- gRPC API Reference — Full request/response formats