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:
@@ -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();
|
||||
|
||||
@@ -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()?;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user