Remove InherentsPool and introduce non-propagateable transactions. (#2695)

* Remove InherentsPool.

* Introduce transactions that are not propagated over the network.

* Bump spec version.

* Use separate flag for propagation.

* Fix tests.
This commit is contained in:
Tomasz Drwięga
2019-05-29 16:06:49 +02:00
committed by Gavin Wood
parent 8d378cb293
commit 25b9c12c20
22 changed files with 250 additions and 171 deletions
+28 -3
View File
@@ -34,8 +34,9 @@ use substrate_client::{
impl_runtime_apis,
};
use runtime_primitives::{
ApplyResult, transaction_validity::TransactionValidity,
ApplyResult,
create_runtime_str,
transaction_validity::TransactionValidity,
traits::{
BlindCheckable, BlakeTwo256, Block as BlockT, Extrinsic as ExtrinsicT,
GetNodeBlockType, GetRuntimeBlockType, AuthorityIdFor, Verify,
@@ -121,14 +122,18 @@ impl BlindCheckable for Extrinsic {
Err(runtime_primitives::BAD_SIGNATURE)
}
},
Extrinsic::IncludeData(data) => Ok(Extrinsic::IncludeData(data)),
Extrinsic::IncludeData(_) => Err(runtime_primitives::BAD_SIGNATURE),
}
}
}
impl ExtrinsicT for Extrinsic {
fn is_signed(&self) -> Option<bool> {
Some(true)
if let Extrinsic::IncludeData(_) = *self {
Some(false)
} else {
Some(true)
}
}
}
@@ -361,6 +366,16 @@ cfg_if! {
impl client_api::TaggedTransactionQueue<Block> for Runtime {
fn validate_transaction(utx: <Block as BlockT>::Extrinsic) -> TransactionValidity {
if let Extrinsic::IncludeData(data) = utx {
return TransactionValidity::Valid {
priority: data.len() as u64,
requires: vec![],
provides: vec![data],
longevity: 1,
propagate: false,
};
}
system::validate_transaction(utx)
}
}
@@ -499,6 +514,16 @@ cfg_if! {
impl client_api::TaggedTransactionQueue<Block> for Runtime {
fn validate_transaction(utx: <Block as BlockT>::Extrinsic) -> TransactionValidity {
if let Extrinsic::IncludeData(data) = utx {
return TransactionValidity::Valid {
priority: data.len() as u64,
requires: vec![],
provides: vec![data],
longevity: 1,
propagate: false,
};
}
system::validate_transaction(utx)
}
}
@@ -190,6 +190,7 @@ pub fn validate_transaction(utx: Extrinsic) -> TransactionValidity {
requires,
provides,
longevity: 64,
propagate: true,
}
}