From 45d8fc9bf1c7e37d5bb210b7b3eea01e537d9eb0 Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Fri, 18 Nov 2016 17:45:19 +0100 Subject: [PATCH] Check transaction signature when adding to the queue (#3508) --- ethcore/src/miner/miner.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ethcore/src/miner/miner.rs b/ethcore/src/miner/miner.rs index 55c05f067..04aa0daba 100644 --- a/ethcore/src/miner/miner.rs +++ b/ethcore/src/miner/miner.rs @@ -21,6 +21,7 @@ use util::*; use util::using_queue::{UsingQueue, GetAction}; use account_provider::AccountProvider; use views::{BlockView, HeaderView}; +use header::Header; use state::{State, CleanupMode}; use client::{MiningBlockChainClient, Executive, Executed, EnvInfo, TransactOptions, BlockID, CallAnalytics}; use executive::contract_address; @@ -467,7 +468,15 @@ impl Miner { balance: chain.latest_balance(a), }; + let best_block_header: Header = ::util::rlp::decode(&chain.best_block_header()); transactions.into_iter() + .filter(|tx| match self.engine.verify_transaction_basic(tx, &best_block_header) { + Ok(()) => true, + Err(e) => { + debug!(target: "miner", "Rejected tx {:?} with invalid signature: {:?}", tx.hash(), e); + false + } + }) .map(|tx| transaction_queue.add(tx, &fetch_account, origin)) .collect() }