Skip to content

Commit

Permalink
fix(forge): support --tx-origin with --fork-url (gakonst#400)
Browse files Browse the repository at this point in the history
Co-authored-by: Tim Lancina <[email protected]>
  • Loading branch information
tlancina and tlancina authored Jan 8, 2022
1 parent cb279a2 commit 47c47b1
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 4 deletions.
6 changes: 5 additions & 1 deletion cli/src/opts/forge.rs
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,11 @@ impl EvmOpts {
Ok(if let Some(ref url) = self.fork_url {
let provider = ethers::providers::Provider::try_from(url.as_str())?;
let rt = tokio::runtime::Runtime::new().expect("could not start tokio rt");
rt.block_on(evm_adapters::sputnik::vicinity(&provider, self.fork_block_number))?
rt.block_on(evm_adapters::sputnik::vicinity(
&provider,
self.fork_block_number,
Some(self.env.tx_origin),
))?
} else {
self.env.sputnik_state()
})
Expand Down
2 changes: 1 addition & 1 deletion evm-adapters/src/sputnik/forked_backend/cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ mod tests {
let address: Address = "63091244180ae240c87d1f528f5f269134cb07b3".parse().unwrap();

let rt = Runtime::new().unwrap();
let vicinity = rt.block_on(vicinity(&provider, None)).unwrap();
let vicinity = rt.block_on(vicinity(&provider, None, None)).unwrap();
let cache = new_shared_cache(MemCache::default());

let backend = SharedBackend::new(Arc::new(provider), cache.clone(), vicinity, None);
Expand Down
2 changes: 1 addition & 1 deletion evm-adapters/src/sputnik/forked_backend/rpc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ mod tests {
.unwrap();
let rt = Runtime::new().unwrap();
let blk = Some(13292465);
let vicinity = rt.block_on(vicinity(&provider, blk)).unwrap();
let vicinity = rt.block_on(vicinity(&provider, blk, None)).unwrap();
let backend = new_backend(&vicinity, Default::default());
let backend = ForkMemoryBackend::new(provider, backend, blk, Default::default());

Expand Down
3 changes: 2 additions & 1 deletion evm-adapters/src/sputnik/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ use sputnik_evm::executor::stack::PrecompileSet;
pub async fn vicinity<M: Middleware>(
provider: &M,
pin_block: Option<u64>,
origin: Option<H160>,
) -> Result<MemoryVicinity, M::Error> {
let block_number = if let Some(pin_block) = pin_block {
pin_block
Expand All @@ -43,7 +44,7 @@ pub async fn vicinity<M: Middleware>(
let block = block.expect("block not found");

Ok(MemoryVicinity {
origin: Default::default(),
origin: origin.unwrap_or_default(),
chain_id,
block_hashes: Vec::new(),
block_number: block.number.expect("block number not found").as_u64().into(),
Expand Down

0 comments on commit 47c47b1

Please sign in to comment.