Skip to content

Commit b34f762

Browse files
committed
chore: refine some trivals
1 parent d4de599 commit b34f762

3 files changed

Lines changed: 20 additions & 22 deletions

File tree

src/evm/api/exec.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,11 @@ where
3131
self.inner.set_block(block);
3232
}
3333

34-
fn transact_one(&mut self, tx: Self::Tx) -> Result<Self::ExecutionResult, Self::Error> {
35-
let mut tx = tx;
34+
fn transact_one(&mut self, mut tx: Self::Tx) -> Result<Self::ExecutionResult, Self::Error> {
3635
self.prepare_tx_for_execution(&mut tx);
37-
self.maybe_bump_beneficiary_balance_for_trace(tx.is_system_transaction, tx.base.value);
36+
if tx.is_system_transaction {
37+
self.fund_beneficiary_for_system_tx_replay(tx.base.value);
38+
}
3839
self.inner.ctx.set_tx(tx);
3940
BscHandler::new().run(self)
4041
}
@@ -45,9 +46,10 @@ where
4546

4647
fn replay(&mut self) -> Result<ResultAndState, Self::Error> {
4748
self.prepare_current_tx_for_execution();
48-
let is_sys = self.inner.ctx.tx.is_system_transaction;
49-
let value = self.inner.ctx.tx.base.value;
50-
self.maybe_bump_beneficiary_balance_for_trace(is_sys, value);
49+
if self.inner.ctx.tx.is_system_transaction {
50+
let value = self.inner.ctx.tx.base.value;
51+
self.fund_beneficiary_for_system_tx_replay(value);
52+
}
5153
BscHandler::new().run(self).map(|result| {
5254
let state = self.finalize();
5355
ResultAndState::new(result, state)
@@ -75,10 +77,11 @@ where
7577
self.inner.set_inspector(inspector);
7678
}
7779

78-
fn inspect_one_tx(&mut self, tx: Self::Tx) -> Result<Self::ExecutionResult, Self::Error> {
79-
let mut tx = tx;
80+
fn inspect_one_tx(&mut self, mut tx: Self::Tx) -> Result<Self::ExecutionResult, Self::Error> {
8081
self.prepare_tx_for_execution(&mut tx);
81-
self.maybe_bump_beneficiary_balance_for_trace(tx.is_system_transaction, tx.base.value);
82+
if tx.is_system_transaction {
83+
self.fund_beneficiary_for_system_tx_replay(tx.base.value);
84+
}
8285
self.inner.ctx.set_tx(tx);
8386
BscHandler::new().inspect_run(self)
8487
}

src/evm/api/mod.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,12 @@ impl<DB: Database, I> BscEvm<DB, I> {
110110
}
111111
}
112112

113-
/// Trace-only: top up beneficiary so a value-transferring system tx (e.g. the
114-
/// block-reward deposit) does not fail balance checks during replay — archive
115-
/// state at block start has not yet received that reward.
116-
pub(crate) fn maybe_bump_beneficiary_balance_for_trace(
117-
&mut self,
118-
is_system_tx: bool,
119-
value: revm::primitives::U256,
120-
) {
121-
if !self.trace || !is_system_tx {
113+
/// Fund the beneficiary with `value` so a value-transferring BSC system tx
114+
/// (e.g. the block-reward deposit) does not fail balance checks during trace
115+
/// replay — archive state at block start has not yet received that reward.
116+
/// Trace-mode only; callers must gate on `tx.is_system_transaction`.
117+
pub(crate) fn fund_beneficiary_for_system_tx_replay(&mut self, value: revm::primitives::U256) {
118+
if !self.trace {
122119
return;
123120
}
124121
let beneficiary = self.block.beneficiary;
@@ -419,7 +416,7 @@ mod tests {
419416
);
420417
db.insert_account_info(system_contract, AccountInfo::default());
421418

422-
// trace = true enables `maybe_bump_beneficiary_balance_for_trace`.
419+
// trace = true enables `fund_beneficiary_for_system_tx_replay`.
423420
BscEvm::new(env, db, NoOpInspector, false, true)
424421
}
425422

src/node/evm/mod.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ where
6969
// BlockExecutor filters mined system txs out before reaching here; trace
7070
// RPCs do not — let `prepare` mark them idempotently for `BscHandler`.
7171
self.prepare_tx_for_execution(&mut tx);
72-
self.maybe_bump_beneficiary_balance_for_trace(tx.is_system_transaction, tx.base.value);
7372

7473
let saved_env = if tx.is_system_transaction {
74+
self.fund_beneficiary_for_system_tx_replay(tx.base.value);
7575
Some((
7676
core::mem::replace(&mut self.block.gas_limit, tx.base.gas_limit),
7777
core::mem::replace(&mut self.block.basefee, 0),
@@ -81,10 +81,8 @@ where
8181
None
8282
};
8383

84-
// Execute transaction
8584
let res = if self.inspect { self.inspect_tx(tx) } else { ExecuteEvm::transact(self, tx) };
8685

87-
// Restore environment for system transactions
8886
if let Some((gas_limit, basefee, disable_nonce_check)) = saved_env {
8987
self.block.gas_limit = gas_limit;
9088
self.block.basefee = basefee;

0 commit comments

Comments
 (0)