Make transaction pool prune transactions only of canonical blocks (#6123)

* Make tx pool aware of retracted fork blocks

* Make it compile

* Update client/transaction-pool/src/lib.rs

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>

* Fix doc test

* Simplify the implementation

* Send tree route as arc to prevent heavy clones

* Switch to use `ExtrinsicHash` to make it more clear

* Fix benchmark

Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
This commit is contained in:
Bastian Köcher
2020-06-05 23:12:00 +02:00
committed by GitHub
parent 8a8b4f99c3
commit d2846e2b9a
31 changed files with 808 additions and 359 deletions
@@ -20,6 +20,7 @@ futures = { version = "0.3.1", optional = true }
log = { version = "0.4.8", optional = true }
serde = { version = "1.0.101", features = ["derive"], optional = true}
sp-api = { version = "2.0.0-rc2", default-features = false, path = "../api" }
sp-blockchain = { version = "2.0.0-rc2", optional = true, path = "../blockchain" }
sp-runtime = { version = "2.0.0-rc2", default-features = false, path = "../runtime" }
sp-utils = { version = "2.0.0-rc2", default-features = false, path = "../utils" }
@@ -32,5 +33,6 @@ std = [
"log",
"serde",
"sp-api/std",
"sp-blockchain",
"sp-runtime/std",
]
@@ -255,8 +255,10 @@ pub enum ChainEvent<B: BlockT> {
id: BlockId<B>,
/// Header of the just imported block
header: B::Header,
/// List of retracted blocks ordered by block number.
retracted: Vec<B::Hash>,
/// Tree route from old best to new best that was calculated on import.
///
/// If `None`, no re-org happened on import.
tree_route: Option<Arc<sp_blockchain::TreeRoute<B>>>,
},
/// An existing block has been finalized.
Finalized {