Skip to content

Commit 2ce53cd

Browse files
authored
chore: Update fork_ref_transact to use alloy instead of ethers (#1454)
1 parent 8b6ab31 commit 2ce53cd

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

examples/fork_ref_transact.rs

+12-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use ethers_contract::BaseContract;
2-
use ethers_core::abi::parse_abi;
1+
use alloy_sol_types::sol;
2+
use alloy_sol_types::SolCall;
33
use ethers_providers::{Http, Provider};
44
use revm::{
55
db::{CacheDB, EmptyDB, EthersDB},
@@ -35,14 +35,12 @@ async fn main() -> anyhow::Result<()> {
3535
let pool_address = address!("0d4a11d5EEaaC28EC3F61d100daF4d40471f1852");
3636

3737
// generate abi for the calldata from the human readable interface
38-
let abi = BaseContract::from(
39-
parse_abi(&[
40-
"function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)",
41-
])?
42-
);
38+
sol! {
39+
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
40+
}
4341

4442
// encode abi into Bytes
45-
let encoded = abi.encode("getReserves", ())?;
43+
let encoded = getReservesCall::new(()).abi_encode();
4644

4745
// initialize new EthersDB
4846
let mut ethersdb = EthersDB::new(Arc::clone(&client), None).unwrap();
@@ -74,7 +72,7 @@ async fn main() -> anyhow::Result<()> {
7472
// account you want to transact with
7573
tx.transact_to = TransactTo::Call(pool_address);
7674
// calldata formed via abigen
77-
tx.data = encoded.0.into();
75+
tx.data = encoded.into();
7876
// transaction value in wei
7977
tx.value = U256::from(0);
8078
})
@@ -94,13 +92,13 @@ async fn main() -> anyhow::Result<()> {
9492
result => panic!("Execution failed: {result:?}"),
9593
};
9694

97-
// decode bytes to reserves + ts via ethers-rs's abi decode
98-
let (reserve0, reserve1, ts): (u128, u128, u32) = abi.decode_output("getReserves", value)?;
95+
// decode bytes to reserves + ts via alloy's abi decode
96+
let return_vals = getReservesCall::abi_decode_returns(&value, true)?;
9997

10098
// Print emulated getReserves() call output
101-
println!("Reserve0: {:#?}", reserve0);
102-
println!("Reserve1: {:#?}", reserve1);
103-
println!("Timestamp: {:#?}", ts);
99+
println!("Reserve0: {:#?}", return_vals.reserve0);
100+
println!("Reserve1: {:#?}", return_vals.reserve1);
101+
println!("Timestamp: {:#?}", return_vals.blockTimestampLast);
104102

105103
Ok(())
106104
}

0 commit comments

Comments
 (0)