From 269b932a5507d4407d63c917d13e9fc1234dd38d Mon Sep 17 00:00:00 2001 From: Yin Guanhao Date: Fri, 17 Jun 2022 14:02:49 +0800 Subject: [PATCH] debug intrinsic gas --- crates/generator/src/error.rs | 6 ++++-- .../generator/src/verification/transaction.rs | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/crates/generator/src/error.rs b/crates/generator/src/error.rs index f6cd4b226..4b9e3d3b8 100644 --- a/crates/generator/src/error.rs +++ b/crates/generator/src/error.rs @@ -1,3 +1,5 @@ +use std::borrow::Cow; + use ckb_vm::Error as VMError; use gw_common::{error::Error as StateError, sparse_merkle_tree::error::Error as SMTError, H256}; use gw_types::packed::Byte32; @@ -155,8 +157,8 @@ pub enum TransactionError { NoCost, #[error("Nonce Overflow")] NonceOverflow, - #[error("Intrinsic gas")] - IntrinsicGas, + #[error("Intrinsic gas: {0}")] + IntrinsicGas(Cow<'static, str>), } impl From for TransactionError { diff --git a/crates/generator/src/verification/transaction.rs b/crates/generator/src/verification/transaction.rs index bba13d27f..0811798fe 100644 --- a/crates/generator/src/verification/transaction.rs +++ b/crates/generator/src/verification/transaction.rs @@ -82,10 +82,22 @@ impl<'a, S: State + CodeStore> TransactionVerifier<'a, S> { } // Intrinsic Gas if let TypedRawTransaction::Polyjuice(tx) = typed_tx { - let p = tx.parser().ok_or(TransactionError::IntrinsicGas)?; - let intrinsic_gas = tx.intrinsic_gas().ok_or(TransactionError::IntrinsicGas)?; + let p = tx + .parser() + .ok_or_else(|| TransactionError::IntrinsicGas("parser".into()))?; + let intrinsic_gas = tx + .intrinsic_gas() + .ok_or_else(|| TransactionError::IntrinsicGas("intrinsic gas".into()))?; if p.gas() < intrinsic_gas { - return Err(TransactionError::IntrinsicGas.into()); + return Err(TransactionError::IntrinsicGas( + format!( + "gas < intrinsic_gas, gas: {}, intrinsic gas: {}", + p.gas(), + intrinsic_gas + ) + .into(), + ) + .into()); } }