diff --git a/ethcore/private-tx/src/lib.rs b/ethcore/private-tx/src/lib.rs
index 71a97d6a041..797c6357518 100644
--- a/ethcore/private-tx/src/lib.rs
+++ b/ethcore/private-tx/src/lib.rs
@@ -278,13 +278,12 @@ impl Provider {
fn pool_client<'a>(&'a self, nonce_cache: &'a NonceCache, local_accounts: &'a HashSet
) -> miner::pool_client::PoolClient<'a, Client> {
let engine = self.client.engine();
- let refuse_service_transactions = true;
miner::pool_client::PoolClient::new(
&*self.client,
nonce_cache,
engine,
local_accounts,
- refuse_service_transactions,
+ None, // refuse_service_transactions = true
)
}
diff --git a/ethcore/src/client/client.rs b/ethcore/src/client/client.rs
index b1f2f0d7949..550771c2097 100644
--- a/ethcore/src/client/client.rs
+++ b/ethcore/src/client/client.rs
@@ -25,7 +25,6 @@ use blockchain::{BlockReceipts, BlockChain, BlockChainDB, BlockProvider, TreeRou
use bytes::Bytes;
use call_contract::{CallContract, RegistryInfo};
use ethcore_miner::pool::VerifiedTransaction;
-use ethcore_miner::service_transaction_checker::ServiceTransactionChecker;
use ethereum_types::{H256, Address, U256};
use evm::Schedule;
use hash::keccak;
@@ -2155,10 +2154,14 @@ impl BlockChainClient for Client {
fn transact_contract(&self, address: Address, data: Bytes) -> Result<(), transaction::Error> {
let authoring_params = self.importer.miner.authoring_params();
- let service_transaction_checker = ServiceTransactionChecker::default();
- let gas_price = match service_transaction_checker.check_address(self, authoring_params.author) {
- Ok(true) => U256::zero(),
- _ => self.importer.miner.sensible_gas_price(),
+ let service_transaction_checker = self.importer.miner.service_transaction_checker();
+ let gas_price = if let Some(checker) = service_transaction_checker {
+ match checker.check_address(self, authoring_params.author) {
+ Ok(true) => U256::zero(),
+ _ => self.importer.miner.sensible_gas_price(),
+ }
+ } else {
+ self.importer.miner.sensible_gas_price()
};
let transaction = transaction::Transaction {
nonce: self.latest_nonce(&authoring_params.author),
diff --git a/ethcore/src/miner/miner.rs b/ethcore/src/miner/miner.rs
index 82e0e4bb0be..0a40e7613ca 100644
--- a/ethcore/src/miner/miner.rs
+++ b/ethcore/src/miner/miner.rs
@@ -25,6 +25,7 @@ use call_contract::CallContract;
use ethcore_miner::gas_pricer::GasPricer;
use ethcore_miner::local_accounts::LocalAccounts;
use ethcore_miner::pool::{self, TransactionQueue, VerifiedTransaction, QueueStatus, PrioritizationStrategy};
+use ethcore_miner::service_transaction_checker::ServiceTransactionChecker;
#[cfg(feature = "work-notify")]
use ethcore_miner::work_notify::NotifyWork;
use ethereum_types::{H256, U256, Address};
@@ -247,6 +248,7 @@ pub struct Miner {
engine: Arc,
accounts: Arc,
io_channel: RwLock