ethcore: use Machine::verify_transaction on parent block (#9900)
* ethcore: use Machine::verify_transaction on parent block also fixes off-by-one activation of transaction permission contract * ethcore: clarify call to verify_transaction
This commit is contained in:
parent
5cbe834024
commit
5f3ae4dee3
@ -371,11 +371,11 @@ impl EthereumMachine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Does verification of the transaction against the parent state.
|
/// Does verification of the transaction against the parent state.
|
||||||
pub fn verify_transaction<C: BlockInfo + CallContract>(&self, t: &SignedTransaction, header: &Header, client: &C)
|
pub fn verify_transaction<C: BlockInfo + CallContract>(&self, t: &SignedTransaction, parent: &Header, client: &C)
|
||||||
-> Result<(), transaction::Error>
|
-> Result<(), transaction::Error>
|
||||||
{
|
{
|
||||||
if let Some(ref filter) = self.tx_filter.as_ref() {
|
if let Some(ref filter) = self.tx_filter.as_ref() {
|
||||||
if !filter.transaction_allowed(header.parent_hash(), header.number(), t, client) {
|
if !filter.transaction_allowed(&parent.hash(), parent.number() + 1, t, client) {
|
||||||
return Err(transaction::Error::NotAllowed.into())
|
return Err(transaction::Error::NotAllowed.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -147,7 +147,9 @@ pub fn verify_block_family<C: BlockInfo + CallContract>(header: &Header, parent:
|
|||||||
verify_uncles(params.block, params.block_provider, engine)?;
|
verify_uncles(params.block, params.block_provider, engine)?;
|
||||||
|
|
||||||
for tx in ¶ms.block.transactions {
|
for tx in ¶ms.block.transactions {
|
||||||
engine.machine().verify_transaction(tx, header, params.client)?;
|
// transactions are verified against the parent header since the current
|
||||||
|
// state wasn't available when the tx was created
|
||||||
|
engine.machine().verify_transaction(tx, parent, params.client)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
Loading…
Reference in New Issue
Block a user