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 ofpair_address
.factory_address__in
: Filters the data by a list of pairfactory_address
.token0__in
/token0_address__in
: Filters the data by a list oftoken0_address
.token1__in
/token1_address__in
: Filters the data by a list oftoken1_address
.tokens__in
: Filters the data by a list of bothtoken0_address
andtoken1_address
.