From 78c970f7019cbbb4edd5ec2dc648a2d658d37244 Mon Sep 17 00:00:00 2001 From: pikatos Date: Tue, 11 Jun 2024 15:50:53 +0200 Subject: [PATCH 1/2] EVM/Execution: remove ExecutionOutcome.is_success and use reason instead --- .../kernel_evm/evm_execution/src/handler.rs | 17 +++++++++-------- etherlink/kernel_evm/evm_execution/src/lib.rs | 4 ++-- etherlink/kernel_evm/kernel/src/apply.rs | 3 +-- .../kernel_evm/kernel/src/block_in_progress.rs | 3 ++- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/etherlink/kernel_evm/evm_execution/src/handler.rs b/etherlink/kernel_evm/evm_execution/src/handler.rs index a2818bcc9b57..5cb11e137ab5 100644 --- a/etherlink/kernel_evm/evm_execution/src/handler.rs +++ b/etherlink/kernel_evm/evm_execution/src/handler.rs @@ -73,12 +73,6 @@ pub type Withdrawal = OutboxMessage; pub struct ExecutionOutcome { /// How much gas was used for processing an entire transaction. pub gas_used: u64, - /// Whether the transaction succeeded or not. - /// - In case of transfer-, whether the funds were transferred - /// - In case of call-, whether toplevel call returned or stopped (success), or - /// something else (revert, invalid code, etc. are non-successes). - /// - In case of create-, whethere a new contract was created or not. - pub is_success: bool, /// The sputnik reason for ending execution. In case of transfers, this is made up /// (sputnik Doesn't execute those - we do). pub reason: ExtendedExitReason, @@ -95,6 +89,15 @@ pub struct ExecutionOutcome { pub estimated_ticks_used: u64, } +impl ExecutionOutcome { + pub const fn is_success(&self) -> bool { + matches!( + self.reason, + ExtendedExitReason::Exit(ExitReason::Succeed(_)) + ) + } +} + /// The result of calling a contract as expected by the SputnikVM EVM implementation. /// First part of the tuple tells Sputnik how the execution went (success or failure /// and in what way). Second part tells Sputnik the return data if any. @@ -1482,7 +1485,6 @@ impl<'a, Host: Runtime> EvmHandler<'a, Host> { Ok(ExecutionOutcome { gas_used, - is_success: true, reason: reason.into(), new_address, logs: last_layer.logs, @@ -1542,7 +1544,6 @@ impl<'a, Host: Runtime> EvmHandler<'a, Host> { Ok(ExecutionOutcome { gas_used, - is_success: false, reason, new_address: None, logs: vec![], diff --git a/etherlink/kernel_evm/evm_execution/src/lib.rs b/etherlink/kernel_evm/evm_execution/src/lib.rs index 29e49e878edc..03709dfba9eb 100644 --- a/etherlink/kernel_evm/evm_execution/src/lib.rs +++ b/etherlink/kernel_evm/evm_execution/src/lib.rs @@ -187,7 +187,7 @@ where match outcome.reason { ExtendedExitReason::Exit(ExitReason::Revert(_)) | ExtendedExitReason::OutOfTicks => pay_for_gas, - _ => pay_for_gas && outcome.is_success, + _ => pay_for_gas && outcome.is_success(), } } @@ -249,7 +249,7 @@ where trace_outcome( handler, tracing, - result.is_success, + result.is_success(), &result.result, result.gas_used, )?; diff --git a/etherlink/kernel_evm/kernel/src/apply.rs b/etherlink/kernel_evm/kernel/src/apply.rs index 7e184abdac07..e7548db5a040 100644 --- a/etherlink/kernel_evm/kernel/src/apply.rs +++ b/etherlink/kernel_evm/kernel/src/apply.rs @@ -390,7 +390,7 @@ fn apply_ethereum_transaction_common( host, Benchmarking, "Transaction status: OK_{}.", - execution_outcome.is_success + execution_outcome.is_success() ); ( execution_outcome.gas_used.into(), @@ -447,7 +447,6 @@ fn apply_deposit( let execution_outcome = ExecutionOutcome { gas_used, - is_success, reason: reason.into(), new_address: None, logs: vec![], diff --git a/etherlink/kernel_evm/kernel/src/block_in_progress.rs b/etherlink/kernel_evm/kernel/src/block_in_progress.rs index cc365cdb9a3d..4acc758309df 100644 --- a/etherlink/kernel_evm/kernel/src/block_in_progress.rs +++ b/etherlink/kernel_evm/kernel/src/block_in_progress.rs @@ -377,6 +377,7 @@ impl BlockInProgress { match execution_outcome { Some(outcome) => { + let is_success = outcome.is_success(); let log_iter = outcome.logs.into_iter(); let logs: Vec = log_iter .enumerate() @@ -399,7 +400,7 @@ impl BlockInProgress { logs_bloom: TransactionReceipt::logs_to_bloom(&logs), logs, type_, - status: if outcome.is_success { + status: if is_success { TransactionStatus::Success } else { TransactionStatus::Failure -- GitLab From b0973cfbf482afd6ebaf695458c8f35980d3140b Mon Sep 17 00:00:00 2001 From: pikatos Date: Tue, 11 Jun 2024 16:19:25 +0200 Subject: [PATCH 2/2] EVM/Tests: update tests --- .../kernel_evm/evm_evaluation/src/runner.rs | 2 +- .../evm_execution/src/fa_bridge/tests.rs | 4 +-- .../kernel_evm/evm_execution/src/handler.rs | 3 +- etherlink/kernel_evm/evm_execution/src/lib.rs | 33 ++++--------------- .../evm_execution/src/precompiles/blake2.rs | 2 +- .../evm_execution/src/precompiles/ecdsa.rs | 8 ++--- .../evm_execution/src/precompiles/hash.rs | 2 -- .../evm_execution/src/precompiles/modexp.rs | 4 +-- .../src/precompiles/withdrawal.rs | 4 --- .../src/precompiles/zero_knowledge.rs | 16 ++++----- etherlink/kernel_evm/kernel/src/fees.rs | 1 - 11 files changed, 26 insertions(+), 53 deletions(-) diff --git a/etherlink/kernel_evm/evm_evaluation/src/runner.rs b/etherlink/kernel_evm/evm_evaluation/src/runner.rs index 356f61281b14..1a7ca4621466 100644 --- a/etherlink/kernel_evm/evm_evaluation/src/runner.rs +++ b/etherlink/kernel_evm/evm_evaluation/src/runner.rs @@ -264,7 +264,7 @@ fn check_results( Ok(execution_outcome_opt) => { let outcome_status = match execution_outcome_opt { Some(execution_outcome) => { - if execution_outcome.is_success { + if execution_outcome.is_success() { "[SUCCESS]" } else { "[FAILURE]" diff --git a/etherlink/kernel_evm/evm_execution/src/fa_bridge/tests.rs b/etherlink/kernel_evm/evm_execution/src/fa_bridge/tests.rs index 3d572f33e197..cc2ce0ff4fd2 100644 --- a/etherlink/kernel_evm/evm_execution/src/fa_bridge/tests.rs +++ b/etherlink/kernel_evm/evm_execution/src/fa_bridge/tests.rs @@ -40,7 +40,7 @@ fn fa_deposit_reached_wrapper_contract() { &deposit, &caller, ); - assert!(res.is_success); + assert!(res.is_success()); assert_eq!(2, res.logs.len()); let flag = get_storage_flag(&mock_runtime, &evm_account_storage, proxy); @@ -251,7 +251,7 @@ fn fa_deposit_proxy_state_reverted_if_ticket_balance_overflows() { &deposit, &caller, ); - assert!(!res.is_success); + assert!(!res.is_success()); assert!(res.logs.is_empty()); let flag = get_storage_flag(&mock_runtime, &evm_account_storage, proxy); diff --git a/etherlink/kernel_evm/evm_execution/src/handler.rs b/etherlink/kernel_evm/evm_execution/src/handler.rs index 5cb11e137ab5..aa4f5bcee9b1 100644 --- a/etherlink/kernel_evm/evm_execution/src/handler.rs +++ b/etherlink/kernel_evm/evm_execution/src/handler.rs @@ -4075,7 +4075,7 @@ mod test { ); match result { - Ok(exec_out) if exec_out.is_success => { + Ok(exec_out) if exec_out.is_success() => { assert_eq!( get_balance(&mut handler, &contract), U256::zero(), @@ -4300,7 +4300,6 @@ mod test { assert_eq!( Ok(ExecutionOutcome { gas_used: 53839, // costs 53841 on ethereum - is_success: true, reason: ExtendedExitReason::Exit(ExitReason::Succeed( ExitSucceed::Stopped )), diff --git a/etherlink/kernel_evm/evm_execution/src/lib.rs b/etherlink/kernel_evm/evm_execution/src/lib.rs index 03709dfba9eb..64f1a93fa149 100644 --- a/etherlink/kernel_evm/evm_execution/src/lib.rs +++ b/etherlink/kernel_evm/evm_execution/src/lib.rs @@ -488,7 +488,6 @@ mod test { let expected_result = Ok(Some(ExecutionOutcome { gas_used: config.gas_transaction_call, - is_success: false, reason: ExitReason::Error(ExitError::OutOfFund).into(), new_address: None, logs: vec![], @@ -556,7 +555,6 @@ mod test { let expected_result = Ok(Some(ExecutionOutcome { gas_used: config.gas_transaction_call, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Stopped).into(), new_address: None, logs: vec![], @@ -618,7 +616,6 @@ mod test { let expected_result = Ok(Some(ExecutionOutcome { gas_used: 0, - is_success: false, reason: ExitReason::Error(ExitError::OutOfFund).into(), new_address: None, logs: vec![], @@ -685,7 +682,7 @@ mod test { "execution should have produced some outcome" ); let result = result.unwrap(); - assert!(result.is_success, "transaction should have succeeded"); + assert!(result.is_success(), "transaction should have succeeded"); assert_eq!( new_address, result.new_address, "Contract addess not its expected value" @@ -718,7 +715,7 @@ mod test { "execution should have produced some outcome" ); let result = result.unwrap(); - assert!(result.is_success, "transaction should have succeeded"); + assert!(result.is_success(), "transaction should have succeeded"); assert!(result.result.is_some(), "Call should have returned a value"); let value = U256::from_little_endian(result.result.unwrap().as_slice()); assert_eq!(U256::zero(), value, "unexpected result value"); @@ -749,7 +746,7 @@ mod test { "execution should have produced some outcome" ); let result = result.unwrap(); - assert!(result.is_success, "transaction should have succeeded"); + assert!(result.is_success(), "transaction should have succeeded"); assert!(result.result.is_some(), "Call should have returned a value"); let value = U256::from_big_endian(result.result.unwrap().as_slice()); assert_eq!(U256::zero(), value, "unexpected result value"); @@ -779,7 +776,7 @@ mod test { "execution should have produced some outcome" ); let result = result.unwrap(); - assert!(result.is_success, "transaction should have succeeded"); + assert!(result.is_success(), "transaction should have succeeded"); assert!(result.result.is_some(), "Call should have returned a value"); let value = U256::from_big_endian(result.result.unwrap().as_slice()); assert_eq!(U256::from(42), value, "unexpected result value"); @@ -834,7 +831,7 @@ mod test { let result = result.unwrap(); assert!(result.is_some()); let result = result.unwrap(); - assert!(result.is_success); + assert!(result.is_success()); assert_eq!( Some(H160::from_str("907823e0a92f94355968feb2cbf0fbb594fe3214").unwrap()), result.new_address @@ -885,7 +882,6 @@ mod test { let expected_result = Ok(Some(ExecutionOutcome { gas_used: 0, - is_success: false, reason: ExitReason::Error(ExitError::DesignatedInvalid).into(), new_address: None, logs: vec![], @@ -944,7 +940,6 @@ mod test { // Assert let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Stopped).into(), new_address: None, logs: vec![], @@ -1094,7 +1089,6 @@ mod test { // Assert let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Returned).into(), new_address: None, logs: vec![], @@ -1160,7 +1154,6 @@ mod test { // Assert let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: false, reason: ExitReason::Revert(ExitRevert::Reverted).into(), new_address: None, logs: vec![], @@ -1222,7 +1215,6 @@ mod test { // Assert let expected_result = Ok(Some(ExecutionOutcome { gas_used: 0, - is_success: false, reason: ExitReason::Error(ExitError::DesignatedInvalid).into(), new_address: None, logs: vec![], @@ -1281,7 +1273,6 @@ mod test { let expected_result = Ok(Some(ExecutionOutcome { gas_used: 0, - is_success: false, reason: ExitReason::Error(ExitError::DesignatedInvalid).into(), new_address: None, logs: vec![], @@ -1347,7 +1338,6 @@ mod test { // Assert let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Returned).into(), new_address: None, logs: vec![], @@ -1409,7 +1399,6 @@ mod test { "0000000000000000000000007156526fbd7a3c72969b54f64e42c10fbb768c8a"; let expected_result = Ok(Some(ExecutionOutcome { gas_used: 25676, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Returned).into(), new_address: None, logs: vec![], @@ -1608,7 +1597,6 @@ mod test { // _all_ the gas allocated to the call (so 0xFFFF or 65535) let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Stopped).into(), new_address: None, logs: vec![], @@ -1704,7 +1692,6 @@ mod test { // expect to spend _all_ the gas. let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Stopped).into(), new_address: None, // No logs were produced @@ -1830,7 +1817,6 @@ mod test { let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Stopped).into(), new_address: None, logs: vec![log_record1, log_record2], @@ -1939,7 +1925,6 @@ mod test { let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Stopped).into(), new_address: None, logs: vec![log_record1], @@ -2035,7 +2020,6 @@ mod test { + 5124; // execution gas cost (taken at face value from tests) let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Stopped).into(), new_address: None, logs: vec![], @@ -2155,8 +2139,6 @@ mod test { let expected_result = Ok(Some(ExecutionOutcome { gas_used: all_the_gas, - is_success: false, - reason: ExitReason::Error(ExitError::InvalidCode(Opcode::INVALID)).into(), new_address: None, logs: vec![], @@ -2261,7 +2243,6 @@ mod test { // Assert let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Returned).into(), new_address: None, logs: vec![], @@ -2347,7 +2328,6 @@ mod test { let expected_result = Ok(Some(ExecutionOutcome { gas_used: expected_gas, reason: ExitReason::Succeed(ExitSucceed::Returned).into(), - is_success: true, new_address: None, logs: vec![], result: Some(base_fee_per_gas_bytes.into()), @@ -2367,7 +2347,8 @@ mod test { assert!(tmp.is_some(), "Couldn't unwrap, Option was None"); let tmp = tmp.as_ref().unwrap(); assert_eq!( - tmp.is_success, $expect_success, + tmp.is_success(), + $expect_success, "outcome field 'is_success' should be {}", $expect_success ); diff --git a/etherlink/kernel_evm/evm_execution/src/precompiles/blake2.rs b/etherlink/kernel_evm/evm_execution/src/precompiles/blake2.rs index 1074fd7fad8f..bdd4f0d5fc02 100644 --- a/etherlink/kernel_evm/evm_execution/src/precompiles/blake2.rs +++ b/etherlink/kernel_evm/evm_execution/src/precompiles/blake2.rs @@ -300,7 +300,7 @@ mod tests { assert!(result.is_ok()); let outcome = result.unwrap(); println!("{}", outcome.gas_used); - assert!(outcome.is_success); + assert!(outcome.is_success()); let expected = hex::decode(test.expected).unwrap(); diff --git a/etherlink/kernel_evm/evm_execution/src/precompiles/ecdsa.rs b/etherlink/kernel_evm/evm_execution/src/precompiles/ecdsa.rs index f0f7943ceec7..a6b0ff7af45b 100644 --- a/etherlink/kernel_evm/evm_execution/src/precompiles/ecdsa.rs +++ b/etherlink/kernel_evm/evm_execution/src/precompiles/ecdsa.rs @@ -165,7 +165,7 @@ mod tests { assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(Some(vec![]), outcome.result); } @@ -181,7 +181,7 @@ mod tests { assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(Some(vec![]), outcome.result); } @@ -257,7 +257,7 @@ mod tests { assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!( hex::encode(expected_output), hex::encode(outcome.result.unwrap()) @@ -319,7 +319,7 @@ mod tests { assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!( hex::encode(expected_output), hex::encode(outcome.result.unwrap()) diff --git a/etherlink/kernel_evm/evm_execution/src/precompiles/hash.rs b/etherlink/kernel_evm/evm_execution/src/precompiles/hash.rs index 6e720e866a14..e695b1720733 100644 --- a/etherlink/kernel_evm/evm_execution/src/precompiles/hash.rs +++ b/etherlink/kernel_evm/evm_execution/src/precompiles/hash.rs @@ -118,7 +118,6 @@ mod tests { let expected = ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Returned).into(), new_address: None, logs: vec![], @@ -149,7 +148,6 @@ mod tests { let expected = ExecutionOutcome { gas_used: expected_gas, - is_success: true, reason: ExitReason::Succeed(ExitSucceed::Returned).into(), new_address: None, logs: vec![], diff --git a/etherlink/kernel_evm/evm_execution/src/precompiles/modexp.rs b/etherlink/kernel_evm/evm_execution/src/precompiles/modexp.rs index 1b19d9f0cc11..43cc4a7c7e26 100644 --- a/etherlink/kernel_evm/evm_execution/src/precompiles/modexp.rs +++ b/etherlink/kernel_evm/evm_execution/src/precompiles/modexp.rs @@ -398,7 +398,7 @@ mod tests { assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(hex::encode(outcome.result.unwrap()), test.expected,); } } @@ -410,7 +410,7 @@ mod tests { assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!("", hex::encode(outcome.result.unwrap())); } diff --git a/etherlink/kernel_evm/evm_execution/src/precompiles/withdrawal.rs b/etherlink/kernel_evm/evm_execution/src/precompiles/withdrawal.rs index 5e971da74481..1d3346d5e46f 100644 --- a/etherlink/kernel_evm/evm_execution/src/precompiles/withdrawal.rs +++ b/etherlink/kernel_evm/evm_execution/src/precompiles/withdrawal.rs @@ -265,7 +265,6 @@ mod tests { let expected = ExecutionOutcome { gas_used: expected_gas, reason: ExitReason::Succeed(ExitSucceed::Returned).into(), - is_success: true, new_address: None, logs: vec![], result: Some(expected_output), @@ -320,7 +319,6 @@ mod tests { let expected = ExecutionOutcome { gas_used: expected_gas, reason: ExitReason::Succeed(ExitSucceed::Returned).into(), - is_success: true, new_address: None, logs: vec![], result: Some(expected_output), @@ -357,7 +355,6 @@ mod tests { let expected = ExecutionOutcome { gas_used: expected_gas, reason: ExitReason::Revert(ExitRevert::Reverted).into(), - is_success: false, new_address: None, logs: vec![], result: Some(vec![]), @@ -380,7 +377,6 @@ mod tests { let expected = ExecutionOutcome { gas_used: expected_gas, reason: ExitReason::Revert(ExitRevert::Reverted).into(), - is_success: false, new_address: None, logs: vec![], result: Some(vec![]), diff --git a/etherlink/kernel_evm/evm_execution/src/precompiles/zero_knowledge.rs b/etherlink/kernel_evm/evm_execution/src/precompiles/zero_knowledge.rs index 5017f0518b72..08a868f7a2c1 100644 --- a/etherlink/kernel_evm/evm_execution/src/precompiles/zero_knowledge.rs +++ b/etherlink/kernel_evm/evm_execution/src/precompiles/zero_knowledge.rs @@ -321,7 +321,7 @@ mod tests { execute_precompiled(H160::from_low_u64_be(6), &input, None, Some(50_000)); assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(outcome.result.unwrap(), expected); // zero sum test @@ -344,7 +344,7 @@ mod tests { execute_precompiled(H160::from_low_u64_be(6), &input, None, Some(50_000)); assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(outcome.result.unwrap(), expected); // no input test @@ -360,7 +360,7 @@ mod tests { execute_precompiled(H160::from_low_u64_be(6), &input, None, Some(50_000)); assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(outcome.result.unwrap(), expected); // point not on curve fail @@ -399,7 +399,7 @@ mod tests { execute_precompiled(H160::from_low_u64_be(7), &input, None, Some(40_000)); assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(outcome.result.unwrap(), expected); // zero multiplication test @@ -421,7 +421,7 @@ mod tests { execute_precompiled(H160::from_low_u64_be(7), &input, None, Some(40_000)); assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(outcome.result.unwrap(), expected); // no input test @@ -437,7 +437,7 @@ mod tests { execute_precompiled(H160::from_low_u64_be(7), &input, None, Some(40_000)); assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(outcome.result.unwrap(), expected); // point not on curve fail @@ -483,7 +483,7 @@ mod tests { println!("result {:?}", result); assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(outcome.result.unwrap(), expected); // no input test @@ -497,7 +497,7 @@ mod tests { execute_precompiled(H160::from_low_u64_be(8), &input, None, Some(260_000)); assert!(result.is_ok()); let outcome = result.unwrap(); - assert!(outcome.is_success); + assert!(outcome.is_success()); assert_eq!(outcome.result.unwrap(), expected); // point not on curve fail diff --git a/etherlink/kernel_evm/kernel/src/fees.rs b/etherlink/kernel_evm/kernel/src/fees.rs index 940c21152c2d..6ec596123d79 100644 --- a/etherlink/kernel_evm/kernel/src/fees.rs +++ b/etherlink/kernel_evm/kernel/src/fees.rs @@ -530,7 +530,6 @@ mod tests { fn mock_execution_outcome(gas_used: u64) -> ExecutionOutcome { ExecutionOutcome { gas_used, - is_success: true, reason: ExtendedExitReason::Exit(ExitReason::Succeed(ExitSucceed::Stopped)), new_address: None, logs: Vec::new(), -- GitLab