mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 09:51:02 +00:00
bfbf7f5d6f
This PR ensures that the reported pruned blocks are unique. While at it, ensure that the best block event is properly generated when the last best block is a fork that will be pruned in the future. To achieve this, the chainHead keeps a LRU set of reported pruned blocks to ensure the following are not reported twice: ```bash finalized -> block 1 -> block 2 -> block 3 -> block 2 -> block 4 -> block 5 -> block 1 -> block 2_f -> block 6 -> block 7 -> block 8 ``` When block 7 is finalized the branch [block 2; block 3] is reported as pruned. When block 8 is finalized the branch [block 2; block 4; block 5] should be reported as pruned, however block 2 was already reported as pruned at the previous step. This is a side-effect of the pruned blocks being reported at level N - 1. For example, if all pruned forks would be reported with the first encounter (when block 6 is finalized we know that block 3 and block 5 are stale), we would not need the LRU cache. cc @paritytech/subxt-team Closes https://github.com/paritytech/polkadot-sdk/issues/3658 --------- Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> Co-authored-by: Sebastian Kunert <skunert49@gmail.com>
62 lines
2.4 KiB
TOML
62 lines
2.4 KiB
TOML
[package]
|
|
name = "sc-rpc-spec-v2"
|
|
version = "0.34.0"
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
|
|
homepage = "https://substrate.io"
|
|
repository.workspace = true
|
|
description = "Substrate RPC interface v2."
|
|
readme = "README.md"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
targets = ["x86_64-unknown-linux-gnu"]
|
|
|
|
[dependencies]
|
|
jsonrpsee = { version = "0.22", features = ["client-core", "macros", "server"] }
|
|
# Internal chain structures for "chain_spec".
|
|
sc-chain-spec = { path = "../chain-spec" }
|
|
# Pool for submitting extrinsics required by "transaction"
|
|
sc-transaction-pool-api = { path = "../transaction-pool/api" }
|
|
sp-core = { path = "../../primitives/core" }
|
|
sp-runtime = { path = "../../primitives/runtime" }
|
|
sp-api = { path = "../../primitives/api" }
|
|
sp-rpc = { path = "../../primitives/rpc" }
|
|
sp-blockchain = { path = "../../primitives/blockchain" }
|
|
sp-version = { path = "../../primitives/version" }
|
|
sc-client-api = { path = "../api" }
|
|
sc-utils = { path = "../utils" }
|
|
sc-rpc = { path = "../rpc" }
|
|
codec = { package = "parity-scale-codec", version = "3.6.1" }
|
|
thiserror = { workspace = true }
|
|
serde = { workspace = true, default-features = true }
|
|
hex = "0.4"
|
|
futures = "0.3.30"
|
|
parking_lot = "0.12.1"
|
|
tokio-stream = { version = "0.1.14", features = ["sync"] }
|
|
tokio = { version = "1.22.0", features = ["sync"] }
|
|
array-bytes = "6.1"
|
|
log = { workspace = true, default-features = true }
|
|
futures-util = { version = "0.3.30", default-features = false }
|
|
rand = "0.8.5"
|
|
schnellru = "0.2.1"
|
|
|
|
[dev-dependencies]
|
|
jsonrpsee = { version = "0.22", features = ["server", "ws-client"] }
|
|
serde_json = { workspace = true, default-features = true }
|
|
tokio = { version = "1.22.0", features = ["macros"] }
|
|
substrate-test-runtime-client = { path = "../../test-utils/runtime/client" }
|
|
substrate-test-runtime = { path = "../../test-utils/runtime" }
|
|
substrate-test-runtime-transaction-pool = { path = "../../test-utils/runtime/transaction-pool" }
|
|
sp-consensus = { path = "../../primitives/consensus/common" }
|
|
sp-externalities = { path = "../../primitives/externalities" }
|
|
sp-maybe-compressed-blob = { path = "../../primitives/maybe-compressed-blob" }
|
|
sc-block-builder = { path = "../block-builder" }
|
|
sc-service = { path = "../service", features = ["test-helpers"] }
|
|
assert_matches = "1.3.0"
|
|
pretty_assertions = "1.2.1"
|
|
sc-transaction-pool = { path = "../transaction-pool" }
|