grandpa: Use storage proofs for Grandpa authorities (#3734)

* grandpa: Write Grandpa authorities to well known key.

Instead of requiring execution proofs for Grandpa authorities, this
enables much simpler storage proofs.

* grandpa: Introduce named AuthorityList type.

* grandpa: Storage migration for srml-grandpa module.

* Remove no-longer-used GrandpaApi runtime API.

* grandpa: Write AuthorityList to storage with encoding version.

We expect the AuthorityList type may change (eg. key changes). To make
upgrades smoother, include a version in the stored value.

* Bump node runtime spec version.

* Update srml/grandpa/src/lib.rs

Co-Authored-By: André Silva <andre.beat@gmail.com>
This commit is contained in:
Jim Posen
2019-10-31 14:33:34 +01:00
committed by GitHub
parent 3cbc28ab59
commit c0a1926704
18 changed files with 263 additions and 195 deletions
+1 -8
View File
@@ -23,8 +23,7 @@ use client::{
runtime_api as client_api, impl_runtime_apis
};
use aura_primitives::sr25519::AuthorityId as AuraId;
use grandpa::{AuthorityId as GrandpaId, AuthorityWeight as GrandpaWeight};
use grandpa::fg_primitives;
use grandpa::AuthorityId as GrandpaId;
use version::RuntimeVersion;
#[cfg(feature = "std")]
use version::NativeVersion;
@@ -353,10 +352,4 @@ impl_runtime_apis! {
opaque::SessionKeys::generate(seed)
}
}
impl fg_primitives::GrandpaApi<Block> for Runtime {
fn grandpa_authorities() -> Vec<(GrandpaId, GrandpaWeight)> {
Grandpa::grandpa_authorities()
}
}
}