Token Metadata
ERC-20 contract registry mapping addresses to symbols, names, and decimals across 5 chains.
5 tables — one per chain.
| Table | Chain |
|---|---|
agent.ethereum_erc20 | Ethereum |
agent.base_erc20 | Base |
agent.arbitrum_erc20 | Arbitrum |
agent.bsc_erc20 | BSC |
agent.robinhood_token_metadata | Robinhood Chain (adds metadata_source, see below) |
Schema
The four *_erc20 tables share this schema.
Engine: MergeTree | ORDER BY: contract_address
| Column | Type | Description |
|---|---|---|
blockchain | String | Chain name |
contract_address | String | Lowercase hex. Primary key for joins. |
symbol | Nullable(String) | Token ticker (e.g., USDC, WETH). Not unique — multiple contracts can share a symbol. |
name | Nullable(String) | Full token name |
decimals | Nullable(Int64) | Typically 18 (ETH-like) or 6 (USDC/USDT) |
Good to Know
- Small dimension tables — safe to use in subqueries or JOINs without filtering.
- Always join on
contract_address, never onsymbol(symbols are not unique). - EVM chains only — Tron, HyperEVM, and Tempo don't have a separate token metadata table.
- Reflects deployment-time metadata — tokens that rebrand won't show new names.
Robinhood Chain Token Metadata Schema
agent.robinhood_token_metadata has the same five columns plus metadata_source.
| Column | Type | Description |
|---|---|---|
blockchain | String | Chain name |
contract_address | String | Token contract |
symbol | Nullable(String) | Token symbol |
name | Nullable(String) | Token name |
decimals | Nullable(Int64) | Token decimals |
metadata_source | String | Where the metadata came from (e.g., quicknode_eth_call, native_weth_proxy) |