3 个不稳定版本
0.2.0 | 2024年7月28日 |
---|---|
0.1.1 | 2024年6月19日 |
0.1.0 | 2024年6月17日 |
#2 in #erc20
每月下载量 146
29KB
682 行
alloy-erc20
ERC20 是一个依赖 Alloy 的 Rust 库,允许与 ERC-20 合约交互。
安装
将 alloy-erc20
添加到您的 Cargo.toml
文件中。
alloy-erc20 = "0.2"
功能
- 一个基本的
Token
结构和与 Alloy 的Provider
相关的扩展方法,允许检索代币小数位数,并从U256
计算余额作为BigDecimal
。 - 一个
TokenStore
特征和一个BasicTokenStore
实现,允许在内存中缓存Token
。 - 一个
LazyToken
结构,作为 Alloy 合约实例的包装器,懒加载从区块链中检索name
、symbol
、decimals
和totalSupply
。
入门
基本用法
let provider = ProviderBuilder::new().on_http("https://...".parse()?);
// Just retrieve a token from its address
let dai = provider
.retrieve_token(address!("6B175474E89094C44Da98b954EedeAC495271d0F"))
.await?;
// Compute a balance as a BigDecimal from a U256
let balance = dai.get_balance(U256::from(1000000000000_u64));
存储
let provider = ProviderBuilder::new().on_http("https://...".parse()?);
let store = BasicTokenStore::new();
// Just retrieve a token from its address, and add it to the store
let dai = provider
.get_token(address!("6B175474E89094C44Da98b954EedeAC495271d0F").into(), &store)
.await?;
// ...
// Now the token can be retrieved from its symbol or address from the store
let dai = store.get(1, TokenId::Symbol("DAI".to_string())).unwrap();
// Compute a balance as a BigDecimal from a U256
let balance = dai.get_balance(U256::from(1000000000000_u64));
懒加载
let provider = ProviderBuilder::new().on_http("https://...".parse()?);
let dai = LazyToken::new(address!("6B175474E89094C44Da98b954EedeAC495271d0F"), provider);
// lazily query the network for the decimals and cache the result
let total_supply = dai.decimals()?;
依赖项
~27–36MB
~720K SLoC