Ethereum - ERC20 Token Metadata
ERC20 Token Metadata Foundational Store
Overview
Consuming Foundational Store Data
use substreams::store::FoundationalStore;
use substreams_ethereum::pb::eth::v2::Block;
#[substreams::handlers::map]
fn map_tokens_transfers(
block: Block,
foundational_store: FoundationalStore,
) -> Result<TokenTransfers, Error> {
// ... extract transfers from block
// Collect token addresses that need metadata lookup
let keys_to_query: Vec<Vec<u8>> = token_addresses_to_resolve.into_iter().collect();
let resp = foundational_store.get_all(&keys_to_query);
// Process responses and decode metadata
let mut metadata_map = std::collections::HashMap::new();
for entry in resp.entries {
let code = ResponseCode::try_from(entry.response.as_ref().unwrap().response)?;
if code != ResponseCode::Found {
continue;
}
if let Ok(token_metadata) = TokenMetadata::decode(entry.response.unwrap().value.unwrap().value.as_slice()) {
metadata_map.insert(entry.key, token_metadata);
}
}
// Use metadata_map to enrich transfers with name, symbol, decimals
Ok(TokenTransfers { transfers })
}Data Model
Key Structure
Value Schema
Implementation details
Implementation
Creating Foundational Store Entries
Substreams Manifest Configuration
Related Resources
Last updated
Was this helpful?

