Skip to content

Uniswap V2 Pairs

Get all pairs that trade with USDC token 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 for blocks 0 to 21170000.

Code

Rust
use futures::StreamExt;
use std::{collections::HashSet, sync::Arc};
use pangea_client::{
    core::types::ChainId, query::Bound,
    ClientBuilder, Format, WsProvider,
    provider::UniswapV2Provider, requests::uniswap_v2::GetPairsRequest, 
};
 
#[tokio::main]
async fn main() {
    dotenvy::dotenv_override().ok();
 
    let client = match ClientBuilder::default()
        .endpoint("app.pangea.foundation")
        .build::<WsProvider>()
        .await
    {
        Ok(client) => Arc::new(client),
        Err(e) => {
            eprintln!("Client failed to initialize:\n{e}");
            return;
        }
    };
 
    {
        let request = GetPairsRequest { 
            chains: HashSet::from([ChainId::ETH]), 
            from_block: Bound::Exact(0), 
            to_block: Bound::Exact(21170000), 
            tokens__in: HashSet::from(["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
            .parse() 
            .unwrap()]), 
            ..Default::default() 
        }; 
        let stream = match client 
            .get_pairs_by_format(request, Format::JsonStream, false) 
            .await
        {
            Ok(stream) => stream,
            Err(e) => {
                eprintln!("Request failed\n{e}");
                return;
            }
        };
 
        futures::pin_mut!(stream);
 
        while let Some(chunk) = stream.next().await {
            let chunk = String::from_utf8(chunk.unwrap()).unwrap();
            println!("{chunk}");
        }
    }
}

Response

[
  ...
  {
    "chain": 1,
    "block_number": 21168894,
    "block_hash": "0x663730c5cacd58e8186bb21dad597b60eebd8b63b3bcefc5b91be68732cb3f02",
    "transaction_hash": "0x3ba54aa110aede892a96fd4c5bf4fc4af534d8baecc4e85f2e96ebc2fb60493f",
    "transaction_index": 152,
    "log_index": 491,
    "factory": "0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f",
    "token0_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "token0_decimals": 6,
    "token0_name": "USD//C",
    "token0_symbol": "USDC",
    "token1_address": "0xc035a7cf15375ce2706766804551791ad035e0c2",
    "token1_decimals": 18,
    "token1_name": "Aave Ethereum Lido wstETH",
    "token1_symbol": "aEthLidowstETH",
    "pair_address": "0xa0a0e5fb1f93d953e0839d2eaf364eadf1dfaf5d",
    "pair_index": 387776,
    "timestamp": 1731381779
  }
]

Query parameters

  • chains: Filters the data by specific blockchain networks.
  • from_block: Filters the data by a starting block number.
  • to_block: Filters the data by an ending block number.
  • pair_address__in: Filters the data by a list of pair_address.
  • factory_address__in: Filters the data by a list of pair factory_address.
  • token0__in / token0_address__in: Filters the data by a list of token0_address.
  • token1__in / token1_address__in: Filters the data by a list of token1_address.
  • tokens__in: Filters the data by a list of both token0_address and token1_address.