let provider = ProviderBuilder::new()
.connect_anvil_with_config(|a| a.fork("https://reth-ethereum.ithaca.xyz/rpc"));
// 使用 anvil_impersonate_account 执行 transfer 的方法
async fn transfer_with_impersonate<P: Provider>(
provider: &P,
from_addr: Address,
token_addr: Address,
to_addr: Address,
amount: U256,
) -> Result<()> {
// 1. 先查询转账前余额
let token = ERC20::new(token_addr, provider);
let balance_before = token.balanceOf(to_addr).call().await?;
println!("转账前 {} 地址余额: {}", to_addr, balance_before);
let eth_bal = provider.get_balance(from_addr).await?;
println!("eth bal {}",eth_bal);
provider.anvil_set_balance(from_addr, U256::from(1e18)).await?;
let eth_bal = provider.get_balance(from_addr).await?;
println!("eth bal after {}",eth_bal);
let balance_set = token.balanceOf(from_addr).call().await?;
println!("set balance {} 地址余额: {}", from_addr, balance_set);
// 2. impersonate 账户
provider.anvil_impersonate_account(from_addr).await?;
println!("已 impersonate 账户: {}", from_addr);
// 3. 执行转账
let transfer_tx = token.transfer(to_addr, amount);
let receipt = transfer_tx.send().await?;
println!("转账交易成功: {:?}", receipt);
// 4. 查询转账后余额
let balance_after = token.balanceOf(to_addr).call().await?;
println!("转账后 {} 地址余额: {}", to_addr, balance_after);
println!("余额变化: {}", balance_after - balance_before);
Ok(())
}
执行上面方法的时候报错
Error: local usage error: missing properties: [("NonceManager", ["from"])]
Caused by:
missing properties: [("NonceManager", ["from"])]
是哪里没设置对吗