V2.5.12 stable (#11336)
* Enable EIP-2384 for ice age hard fork (#11281) * ethcore/res: activate agharta on classic 9573000 (#11331) * Istanbul HF in xDai (2019-12-12) (#11299) * Istanbul HF in POA Core (2019-12-19) (#11298) * Istanbul HF in POA Sokol (2019-12-05) (#11282) * Activate ecip-1061 on kotti and mordor (#11338) * Enable basic verification of local transactions (#11332) * Disallow EIP-86 style null signatures for transactions outside tests (#11335)
This commit is contained in:
@@ -245,7 +245,7 @@ impl<'a> EvmTestClient<'a> {
|
||||
) -> std::result::Result<TransactSuccess<T::Output, V::Output>, TransactErr> {
|
||||
let initial_gas = transaction.gas;
|
||||
// Verify transaction
|
||||
let is_ok = transaction.verify_basic(true, None, false);
|
||||
let is_ok = transaction.verify_basic(true, None);
|
||||
if let Err(error) = is_ok {
|
||||
return Err(
|
||||
TransactErr{
|
||||
|
||||
@@ -367,7 +367,7 @@ impl EthereumMachine {
|
||||
} else {
|
||||
None
|
||||
};
|
||||
t.verify_basic(check_low_s, chain_id, false)?;
|
||||
t.verify_basic(check_low_s, chain_id)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -1600,6 +1600,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();
|
||||
|
||||
@@ -136,7 +136,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 = self.engine.verify_transaction_unordered(tx, &self.best_block_header)?;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user