diff --git a/client/rpc/src/eth/transaction.rs b/client/rpc/src/eth/transaction.rs index 29fbb30347..2778aa6a39 100644 --- a/client/rpc/src/eth/transaction.rs +++ b/client/rpc/src/eth/transaction.rs @@ -287,14 +287,31 @@ where let effective_gas_price = match transaction { EthereumTransaction::Legacy(t) => t.gas_price, EthereumTransaction::EIP2930(t) => t.gas_price, - EthereumTransaction::EIP1559(t) => self - .client - .runtime_api() - .gas_price(substrate_hash) - .unwrap_or_default() - .checked_add(t.max_priority_fee_per_gas) - .unwrap_or_else(U256::max_value) - .min(t.max_fee_per_gas), + EthereumTransaction::EIP1559(t) => { + let parent_eth_hash = block.header.parent_hash; + let base_fee_block_substrate_hash = if parent_eth_hash.is_zero() { + substrate_hash + } else { + frontier_backend_client::load_hash::( + self.client.as_ref(), + self.backend.as_ref(), + parent_eth_hash, + ) + .await + .map_err(|err| internal_err(format!("{:?}", err)))? + .ok_or(internal_err( + "Failed to retrieve substrate parent block hash", + ))? + }; + + self.client + .runtime_api() + .gas_price(base_fee_block_substrate_hash) + .unwrap_or_default() + .checked_add(t.max_priority_fee_per_gas) + .unwrap_or_else(U256::max_value) + .min(t.max_fee_per_gas) + } }; return Ok(Some(Receipt {