From 4aa91a806e558f29d75d56f35725eca568826a5f Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Mon, 20 Nov 2023 20:07:59 +0100 Subject: [PATCH] Fix order of deposit inc_nonce in transact --- src/standard/invoker/mod.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/standard/invoker/mod.rs b/src/standard/invoker/mod.rs index 565208b3..fa631f8a 100644 --- a/src/standard/invoker/mod.rs +++ b/src/standard/invoker/mod.rs @@ -132,6 +132,8 @@ where let gas_fee = args.gas_limit().saturating_mul(gas_price); handler.withdrawal(caller, gas_fee)?; + handler.inc_nonce(caller)?; + let address = match &args { TransactArgs::Call { address, .. } => *address, TransactArgs::Create { @@ -230,8 +232,6 @@ where handler.mark_hot(address, None); } - handler.inc_nonce(caller)?; - Ok((invoke, machine)) } TransactArgs::Create { @@ -310,19 +310,19 @@ where let refunded_fee = refunded_gas.saturating_mul(invoke.gas_price); let coinbase_reward = invoke.gas_fee.saturating_sub(refunded_fee); - handler.deposit(invoke.caller, refunded_fee); - handler.deposit(handler.block_coinbase(), coinbase_reward); - - match result { - Ok(exit) => { + match &result { + Ok(_) => { handler.pop_substate(MergeStrategy::Commit); - Ok(exit) } - Err(err) => { + Err(_) => { handler.pop_substate(MergeStrategy::Discard); - Err(err) } } + + handler.deposit(invoke.caller, refunded_fee); + handler.deposit(handler.block_coinbase(), coinbase_reward); + + result } fn enter_substack(