ERC20 Transfers
Fetch ERC20 transfers for blocks 21000000
to 21000100
for WBTC
0x2260fac5e5542a773aa44fbcfedf7c193bc2c599
.
Code
Rust
use futures::StreamExt;
use std::{collections::HashSet, sync::Arc};
use pangea_client::{
core::types::ChainId, query::Bound,
ClientBuilder, Format, WsProvider,
provider::Erc20Provider, requests::erc20::GetErc20TransferssRequest,
};
#[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 = GetErc20TransferssRequest {
chains: HashSet::from([ChainId::ETH]),
from_block: Bound::Exact(21000000),
to_block: Bound::Exact(21010000),
address__in: HashSet::from(["0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"
.parse()
.unwrap()]),
..Default::default()
};
let stream = match client
.get_erc20_transfers_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": 21000099,
"block_hash": "0x4334aa15d92a15a71b774326d0df1d0e6d2b661d2ee1a40f04621cf3b3349b13",
"transaction_hash": "0xd85446edc3a134f78416e994fd8726734910926cc828969bdd9d1c1b40ebe3ec",
"transaction_index": 4,
"log_index": 19,
"address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
"name": "Wrapped BTC",
"symbol": "WBTC",
"decimals": 8,
"from": "0xe43ca1dee3f0fc1e2df73a0745674545f11a59f5",
"to": "0x4585fe77225b41b697c938b018e2ac67ac5a20c0",
"value": 0.995,
"timestamp": 1729346735
}
]
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.address__in
: Filters the data by a list of ERC20 contractaddress
.to__in
: Filters the data by a list ofto
addresses.from__in
: Filters the data by a list offrom
addresses.value__gte
: Filters the data byvalue
using the greater than or equal to operator.value__lte
: Filters the data byvalue
using the less than or equal to operator.