From e11ee4898552d32afa4199f512fd3fd315105295 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+pythonberg1997@users.noreply.github.com> Date: Wed, 10 Jul 2024 17:09:56 +0800 Subject: [PATCH] fix: zero block reward issue (#60) --- crates/bsc/evm/src/execute.rs | 2 +- crates/bsc/evm/src/post_execution.rs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/bsc/evm/src/execute.rs b/crates/bsc/evm/src/execute.rs index 4fecd9adc..20e22c73d 100644 --- a/crates/bsc/evm/src/execute.rs +++ b/crates/bsc/evm/src/execute.rs @@ -585,7 +585,7 @@ where let nonce = evm.db_mut().basic(sender).unwrap().unwrap_or_default().nonce; transaction.set_nonce(nonce); let hash = transaction.signature_hash(); - if hash != system_txs[0].signature_hash() { + if system_txs.is_empty() || hash != system_txs[0].signature_hash() { debug!("unexpected transaction: {:?}", transaction); for tx in system_txs.iter() { debug!("left system tx: {:?}", tx); diff --git a/crates/bsc/evm/src/post_execution.rs b/crates/bsc/evm/src/post_execution.rs index 9b32bef88..be387829c 100644 --- a/crates/bsc/evm/src/post_execution.rs +++ b/crates/bsc/evm/src/post_execution.rs @@ -280,6 +280,11 @@ where let (mut block_reward, transition) = system_account.drain_balance(); self.state.apply_transition(vec![(SYSTEM_ADDRESS, transition)]); + // if block reward is zero, no need to distribute + if block_reward == 0 { + return Ok(()); + } + let balance_increment = HashMap::from([(validator, block_reward)]); self.state .increment_balances(balance_increment)