Verify transaction against its block during import (#10954)
* Verify transaction against its block during import * Client method for transaction verification added * Verification methods united * Verification sequence for transaction verifier returned
This commit is contained in:
parent
ef47426a93
commit
fd75491103
@ -513,7 +513,7 @@ impl Miner {
|
|||||||
let sender = transaction.sender();
|
let sender = transaction.sender();
|
||||||
|
|
||||||
// Re-verify transaction again vs current state.
|
// Re-verify transaction again vs current state.
|
||||||
let result = client.verify_signed(&transaction)
|
let result = client.verify_for_pending_block(&transaction, &open_block.header)
|
||||||
.map_err(|e| e.into())
|
.map_err(|e| e.into())
|
||||||
.and_then(|_| {
|
.and_then(|_| {
|
||||||
open_block.push_transaction(transaction, None)
|
open_block.push_transaction(transaction, None)
|
||||||
|
@ -117,11 +117,13 @@ impl<'a, C: 'a> PoolClient<'a, C> where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Verifies if signed transaction is executable.
|
/// Verifies transaction against its block (before its import into this block)
|
||||||
|
/// Also Verifies if signed transaction is executable.
|
||||||
///
|
///
|
||||||
/// This should perform any verifications that rely on chain status.
|
/// This should perform any verifications that rely on chain status.
|
||||||
pub fn verify_signed(&self, tx: &SignedTransaction) -> Result<(), transaction::Error> {
|
pub fn verify_for_pending_block(&self, tx: &SignedTransaction, header: &Header) -> Result<(), transaction::Error> {
|
||||||
self.engine.machine().verify_transaction(&tx, &self.best_block_header, self.chain)
|
self.engine.machine().verify_transaction_basic(tx, header)?;
|
||||||
|
self.engine.machine().verify_transaction(tx, &self.best_block_header, self.chain)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,8 +144,7 @@ impl<'a, C: 'a> pool::client::Client for PoolClient<'a, C> where
|
|||||||
self.engine.verify_transaction_basic(&tx, &self.best_block_header)?;
|
self.engine.verify_transaction_basic(&tx, &self.best_block_header)?;
|
||||||
let tx = tx.verify_unordered()?;
|
let tx = tx.verify_unordered()?;
|
||||||
|
|
||||||
self.verify_signed(&tx)?;
|
self.engine.machine().verify_transaction(&tx, &self.best_block_header, self.chain)?;
|
||||||
|
|
||||||
Ok(tx)
|
Ok(tx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user