Overview
- Dataset ID:
0201 - Table:
blockdb_evm.b0201_erc20_tokens_v1 - Description: Catalog of ERC-20 token contracts (EIP-20).
- Primary Key:
contract_address - API: POST /evm/tokens/erc20
How we recognize ERC-20
We treat a contract as ERC-20 when it implements the EIP-20 Token Standard. Detection requires that the contract exposes and returns valid results for the three mandatory EIP-20 functions:totalSupply(), balanceOf(address), and allowance(address, address). We call these at the block where the contract is first seen and only add the address to this catalog if all three calls succeed and return decodable data. The optional EIP-20 metadata — name(), symbol(), and decimals() — are read when present and stored in the table; they may be null for tokens that do not implement them.
Columns
| Column | Type | Description |
|---|---|---|
contract_address | BYTEA | Address of the ERC-20 token contract (20 bytes). |
block_number | BIGINT | Block of the log we attribute as the genesis/recognition point. |
block_time | TIMESTAMPTZ | UTC timestamp of the block. |
tx_index | INTEGER | Transaction index within the block. |
name | TEXT | Token name from name() (optional in EIP-20). |
symbol | TEXT | Token symbol from symbol() (optional in EIP-20). |
decimals | SMALLINT | Decimals from decimals() (optional in EIP-20; e.g. 8 = divide by 10^8). |
_tracing_id | BYTEA | Tracing ID of this ERC-20 token record. |
_parent_tracing_ids | BYTEA[] | Tracing IDs of the parent records leading to this ERC-20 token record. |
_created_at | TIMESTAMPTZ | Record creation timestamp. |
_updated_at | TIMESTAMPTZ | Record last update timestamp. |
Use Cases
- Token registry to normalize joins for swaps, transfers, pools, and prices
- Amount scaling via decimals for analytics, PnL, and model features
- App backends: display names/symbols and validate token addresses