Skip to main content

registry/
registry.rs

1use ethers_abirpc::prelude::*;
2
3abigen!(Erc20Token, "./tests/abi/Erc20Token.json");
4abirpc!(Erc20Token);
5
6const WS_PROVIDER: &str = "wss://ethereum-rpc.publicnode.com";
7const WETH_ADDRESS: &str = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
8const WBTC_ADDRESS: &str = "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599";
9
10#[tokio::main]
11async fn main() -> Result<(), Box<dyn std::error::Error>> {
12    let registry =
13        Erc20TokenRegistry::<WsProvider>::new(String::from(WS_PROVIDER), Chain::from_id(1));
14
15    let provider = registry.provider().await?;
16
17    let weth_address = address_from!(WETH_ADDRESS)?;
18    let wbtc_address = address_from!(WBTC_ADDRESS)?;
19
20    let weth_instance = registry.register(provider.clone(), weth_address);
21    let wbtc_instance = registry.register(provider.clone(), wbtc_address);
22
23    let res = weth_instance.decimals().await?;
24    println!("decimals (weth): {res:}");
25
26    let res = wbtc_instance.decimals().await?;
27    println!("decimals (wbtc): {res:}");
28
29    Ok(())
30}