This directory contains standard ABIs for the various blockchains that Substreams supports.
Ethereum, Base, BSC, ArbOne, Polygon,...
-
ERC-20 -
ERC-721 -
ERC-1155 -
ERC-2981 -
ERC-4626 -
ERC-777 -
ERC-3643
- SAI/DAI
- USDC
- USDT
- WETH
- WBTC
- stETH
-
Balancer -
CurveFi -
Bancor -
Uniswap V1 -
Uniswap V2-
Pair -
Factory
-
-
Uniswap V3-
Pool -
Factory
-
-
Uniswap V4-
PoolManager
-
-
ENS V1-
ENSRegistry -
EthRegistrarController -
PublicResolver -
ReverseRegistrar -
NameWrapper
-
-
Seaport-
OrderFulfilled -
OrderCancelled -
OrderValidated -
OrdersMatched
-
- Azuki
- BoredApeYachtClub
- Doodles
- LilPudgys
- MutantApeYachtClub
- PudgyPenguins
- SunSwap
- JustSwap
- Factory:
TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY - Pair contract (for USDT/TRX pair):
TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ Router:TKzxdSv2FZKQrEqkKVgp5DcwEXBEKMg2AxSmart routing (aggregator):TJ4NNy8xZEqsowCBhLvZ45LCqPdGjkET5j
- Exchange:
TPavNqt8xhoBp4NNBSdEx3FBP24NBfVRxU
- Compile the ABI from the source code.
- Add the ABI to the corresponding directory.
- Only include
abisection in the JSON file. - Name the file as the contract name (ex:
evm/token/ERC20.json).
- Only include
- Build
cargo build - Update/add new contract to
mod.rsfile(s). - Run
cargo testto ensure everything is working. - Create a PR.
...
use substreams_abi::evm::token::erc20::events::Transfer;
// Iterates over successful transactions
for trx in block.transactions() {
// Iterates over all logs in the transaction, excluding those from calls that were not recorded to the chain's state.
// The logs are sorted by their ordinal and returned as pairs of (log, call) where call is the call that produced the log.
for (log, call_view) in trx.logs_with_calls() {
// -- Transfer --
let transfer = match Transfer::decode(&log) {
Some(transfer) => transfer,
None => continue,
};
// transfer.from => 6D1D1ebe7dA598194293784252659e862d55b52c
// transfer.to => c7bBeC68d12a0d1830360F8Ec58fA599bA1b0e9b
// transfer.value => 3400000000
}
}