grandpa: rewrite warp sync proof generation (#8148)

* grandpa: use AuthoritySetChanges to generate warp sync proof

* node: init grandpa warp sync protocol

* grandpa: iterator for AuthoritySetChanges

* grandpa: rewrite warp sync proof generation

* grandpa: remove old code for warp sync generation

* grandpa: fix indentation

* grandpa: fix off by one

* grandpa: use binary search to find start idx when generating warp sync proof

* grandpa: add method to verify warp sync proofs

* grandpa: remove unnecessary code to skip authority set changes

* grandpa: add test for warp sync proof generation and verification

* grandpa: add missing docs

* grandpa: remove trailing comma
This commit is contained in:
André Silva
2021-02-25 08:44:51 +00:00
committed by GitHub
parent 8a0e8ea9a6
commit 94c29ff666
10 changed files with 463 additions and 538 deletions
@@ -12,16 +12,25 @@ repository = "https://github.com/paritytech/substrate/"
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
sc-network = { version = "0.9.0", path = "../network" }
sc-finality-grandpa = { version = "0.9.0", path = "../finality-grandpa" }
sp-runtime = { version = "3.0.0", path = "../../primitives/runtime" }
sp-blockchain = { version = "3.0.0", path = "../../primitives/blockchain" }
sc-client-api = { version = "3.0.0", path = "../api" }
sc-service = { version = "0.9.0", path = "../service" }
codec = { package = "parity-scale-codec", version = "2.0.0" }
derive_more = "0.99.11"
futures = "0.3.8"
log = "0.4.11"
derive_more = "0.99.11"
codec = { package = "parity-scale-codec", version = "2.0.0" }
prost = "0.7"
num-traits = "0.2.14"
parking_lot = "0.11.1"
prost = "0.7"
sc-client-api = { version = "3.0.0", path = "../api" }
sc-finality-grandpa = { version = "0.9.0", path = "../finality-grandpa" }
sc-network = { version = "0.9.0", path = "../network" }
sc-service = { version = "0.9.0", path = "../service" }
sp-blockchain = { version = "3.0.0", path = "../../primitives/blockchain" }
sp-finality-grandpa = { version = "3.0.0", path = "../../primitives/finality-grandpa" }
sp-runtime = { version = "3.0.0", path = "../../primitives/runtime" }
[dev-dependencies]
finality-grandpa = { version = "0.14.0" }
rand = "0.8"
sc-block-builder = { version = "0.9.0", path = "../block-builder" }
sp-consensus = { version = "0.9.0", path = "../../primitives/consensus/common" }
sp-keyring = { version = "3.0.0", path = "../../primitives/keyring" }
substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" }