substreams-abis 0.5.2

Substreams ABIs
docs.rs failed to build substreams-abis-0.5.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

Substreams ABIs

This directory contains standard ABIs for the various blockchains that Substreams supports.

EVM

Ethereum, Base, BSC, ArbOne, Polygon,...

  • ERC-20
  • ERC-721
  • ERC-1155
  • ERC-2981
  • ERC-4626
  • ERC-777
  • ERC-3643

EVM Tokens

  • SAI/DAI
  • USDC
  • USDT
  • WETH
  • WBTC
  • stETH

EVM Contracts

  • Uniswap V2
    • Pair
    • Factory
  • Uniswap V3
    • Pool
    • Factory
  • Uniswap V4
    • PoolManager
  • ENS V1
    • ENSRegistry
    • EthRegistrarController
    • PublicResolver
    • ReverseRegistrar
    • NameWrapper
  • Seaport
    • OrderFulfilled
    • OrderCancelled
    • OrderValidated
    • OrdersMatched

NFTs Collections

  • Azuki
  • BoredApeYachtClub
  • Doodles
  • LilPudgys
  • MutantApeYachtClub
  • PudgyPenguins

Tron EVM

  • SunSwap
  • JustSwap

SunSwap V2

  • Factory: TKWJdrQkqHisa1X8HUdHEfREvTzw4pMAaY
  • Pair contract (for USDT/TRX pair): TFGDbUyP8xez44C76fin3bn3Ss6jugoUwJ
  • Router: TKzxdSv2FZKQrEqkKVgp5DcwEXBEKMg2Ax
  • Smart routing (aggregator): TJ4NNy8xZEqsowCBhLvZ45LCqPdGjkET5j

JustSwap V1

  • Exchange: TPavNqt8xhoBp4NNBSdEx3FBP24NBfVRxU

How to contribute?

  • Compile the ABI from the source code.
  • Add the ABI to the corresponding directory.
    • Only include abi section in the JSON file.
    • Name the file as the contract name (ex: evm/token/ERC20.json).
  • Build cargo build
  • Update/add new contract to mod.rs file(s).
  • Run cargo test to ensure everything is working.
  • Create a PR.

Quickstart

...
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
  }
}