tx-q: enable basic verification of local transactions (#11332)

* tx-q: basic verification of local transactions

* miner: basic test for local import

* miner: info log when rejecting local txn

* Hernandofmt

Co-Authored-By: Hernando Castano <HCastano@users.noreply.github.com>

* miner: assert in a test with the concrete error type

* tx-q: info! -> warn! on local tx rejection
This commit is contained in:
Andronik Ordian
2019-12-13 20:25:51 +01:00
committed by GitHub
parent 63535860bc
commit fd29926a21
5 changed files with 52 additions and 2 deletions

View File

@@ -1695,6 +1695,30 @@ mod tests {
assert_eq!(miner.prepare_pending_block(&client), BlockPreparationStatus::NotPrepared);
}
#[test]
fn should_reject_local_transaction_with_invalid_chain_id() {
let spec = spec::new_test();
let miner = Miner::new_for_tests(&spec, None);
let client = TestBlockChainClient::default();
let chain_id = spec.chain_id();
// chain_id + 100500 is invalid
let import = miner.import_claimed_local_transaction(
&client,
PendingTransaction::new(transaction_with_chain_id(chain_id + 10500), None),
false,
);
assert_eq!(import, Err(transaction::Error::InvalidChainId));
// chain_id is valid
let import = miner.import_claimed_local_transaction(
&client,
PendingTransaction::new(transaction_with_chain_id(chain_id), None),
false,
);
assert_eq!(import, Ok(()));
}
#[test]
fn should_prioritize_locals() {
let client = TestBlockChainClient::default();

View File

@@ -139,7 +139,12 @@ impl<'a, C: 'a> pool::client::Client for PoolClient<'a, C> where
self.chain.transaction_block(TransactionId::Hash(*hash)).is_some()
}
fn verify_transaction(&self, tx: UnverifiedTransaction)-> Result<SignedTransaction, transaction::Error> {
fn verify_transaction_basic(&self, tx: &UnverifiedTransaction) -> Result<(), transaction::Error> {
self.engine.verify_transaction_basic(tx, &self.best_block_header)?;
Ok(())
}
fn verify_transaction(&self, tx: UnverifiedTransaction) -> Result<SignedTransaction, transaction::Error> {
self.engine.verify_transaction_basic(&tx, &self.best_block_header)?;
let tx = tx.verify_unordered()?;