mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-20 03:25:41 +00:00
Support more than u8::max_value GRANDPA validators (#896)
* Support moar validators. * Update weights script. * Use correct type for benchmarking accounts * Use package name instead of manifest path Co-authored-by: Hernando Castano <hernando@hcastano.com>
This commit is contained in:
committed by
Bastian Köcher
parent
f92449a461
commit
aa17c272f1
@@ -64,9 +64,7 @@ const MAX_VOTE_ANCESTRIES: u32 = 1000;
|
|||||||
|
|
||||||
// The maximum number of pre-commits to include in a justification. In practice this scales with the
|
// The maximum number of pre-commits to include in a justification. In practice this scales with the
|
||||||
// number of validators.
|
// number of validators.
|
||||||
//
|
const MAX_VALIDATOR_SET_SIZE: u32 = 1024;
|
||||||
// TODO [#846]: Right now this will break benchmarking if it is greater than `u8::MAX`
|
|
||||||
const MAX_VALIDATOR_SET_SIZE: u32 = 255;
|
|
||||||
|
|
||||||
benchmarks_instance_pallet! {
|
benchmarks_instance_pallet! {
|
||||||
// This is the "gold standard" benchmark for this extrinsic, and it's what should be used to
|
// This is the "gold standard" benchmark for this extrinsic, and it's what should be used to
|
||||||
@@ -80,7 +78,7 @@ benchmarks_instance_pallet! {
|
|||||||
|
|
||||||
let caller: T::AccountId = whitelisted_caller();
|
let caller: T::AccountId = whitelisted_caller();
|
||||||
|
|
||||||
let authority_list = accounts(p as u8)
|
let authority_list = accounts(p as u16)
|
||||||
.iter()
|
.iter()
|
||||||
.map(|id| (AuthorityId::from(*id), 1))
|
.map(|id| (AuthorityId::from(*id), 1))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
@@ -99,7 +97,7 @@ benchmarks_instance_pallet! {
|
|||||||
header: header.clone(),
|
header: header.clone(),
|
||||||
round: TEST_GRANDPA_ROUND,
|
round: TEST_GRANDPA_ROUND,
|
||||||
set_id: TEST_GRANDPA_SET_ID,
|
set_id: TEST_GRANDPA_SET_ID,
|
||||||
authorities: accounts(p as u8).iter().map(|k| (*k, 1)).collect::<Vec<_>>(),
|
authorities: accounts(p as u16).iter().map(|k| (*k, 1)).collect::<Vec<_>>(),
|
||||||
votes: v,
|
votes: v,
|
||||||
forks: 1,
|
forks: 1,
|
||||||
};
|
};
|
||||||
@@ -160,7 +158,7 @@ benchmarks_instance_pallet! {
|
|||||||
|
|
||||||
let caller: T::AccountId = whitelisted_caller();
|
let caller: T::AccountId = whitelisted_caller();
|
||||||
|
|
||||||
let authority_list = accounts(p as u8)
|
let authority_list = accounts(p as u16)
|
||||||
.iter()
|
.iter()
|
||||||
.map(|id| (AuthorityId::from(*id), 1))
|
.map(|id| (AuthorityId::from(*id), 1))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
@@ -179,7 +177,7 @@ benchmarks_instance_pallet! {
|
|||||||
header: header.clone(),
|
header: header.clone(),
|
||||||
round: TEST_GRANDPA_ROUND,
|
round: TEST_GRANDPA_ROUND,
|
||||||
set_id: TEST_GRANDPA_SET_ID,
|
set_id: TEST_GRANDPA_SET_ID,
|
||||||
authorities: accounts(p as u8).iter().map(|k| (*k, 1)).collect::<Vec<_>>(),
|
authorities: accounts(p as u16).iter().map(|k| (*k, 1)).collect::<Vec<_>>(),
|
||||||
votes: p,
|
votes: p,
|
||||||
forks: p,
|
forks: p,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,10 +9,11 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
|
|||||||
bp-header-chain = { path = "../header-chain", default-features = false }
|
bp-header-chain = { path = "../header-chain", default-features = false }
|
||||||
ed25519-dalek = { version = "1.0", default-features = false, features = ["u64_backend"] }
|
ed25519-dalek = { version = "1.0", default-features = false, features = ["u64_backend"] }
|
||||||
finality-grandpa = { version = "0.14.0", default-features = false }
|
finality-grandpa = { version = "0.14.0", default-features = false }
|
||||||
|
parity-scale-codec = { version = "2.0.0", default-features = false }
|
||||||
|
sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
||||||
sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["std"]
|
default = ["std"]
|
||||||
@@ -20,8 +21,9 @@ std = [
|
|||||||
"bp-header-chain/std",
|
"bp-header-chain/std",
|
||||||
"ed25519-dalek/std",
|
"ed25519-dalek/std",
|
||||||
"finality-grandpa/std",
|
"finality-grandpa/std",
|
||||||
|
"parity-scale-codec/std",
|
||||||
|
"sp-application-crypto/std",
|
||||||
"sp-finality-grandpa/std",
|
"sp-finality-grandpa/std",
|
||||||
"sp-runtime/std",
|
"sp-runtime/std",
|
||||||
"sp-std/std",
|
"sp-std/std",
|
||||||
"sp-application-crypto/std",
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
use ed25519_dalek::{Keypair, PublicKey, SecretKey, Signature};
|
use ed25519_dalek::{Keypair, PublicKey, SecretKey, Signature};
|
||||||
use finality_grandpa::voter_set::VoterSet;
|
use finality_grandpa::voter_set::VoterSet;
|
||||||
|
use parity_scale_codec::Encode;
|
||||||
use sp_application_crypto::Public;
|
use sp_application_crypto::Public;
|
||||||
use sp_finality_grandpa::{AuthorityId, AuthorityList, AuthorityWeight};
|
use sp_finality_grandpa::{AuthorityId, AuthorityList, AuthorityWeight};
|
||||||
use sp_runtime::RuntimeDebug;
|
use sp_runtime::RuntimeDebug;
|
||||||
@@ -33,7 +34,7 @@ pub const FERDIE: Account = Account(5);
|
|||||||
|
|
||||||
/// A test account which can be used to sign messages.
|
/// A test account which can be used to sign messages.
|
||||||
#[derive(RuntimeDebug, Clone, Copy)]
|
#[derive(RuntimeDebug, Clone, Copy)]
|
||||||
pub struct Account(pub u8);
|
pub struct Account(pub u16);
|
||||||
|
|
||||||
impl Account {
|
impl Account {
|
||||||
pub fn public(&self) -> PublicKey {
|
pub fn public(&self) -> PublicKey {
|
||||||
@@ -41,7 +42,10 @@ impl Account {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn secret(&self) -> SecretKey {
|
pub fn secret(&self) -> SecretKey {
|
||||||
SecretKey::from_bytes(&[self.0; 32]).expect("A static array of the correct length is a known good.")
|
let data = self.0.encode();
|
||||||
|
let mut bytes = [0_u8; 32];
|
||||||
|
bytes[0..data.len()].copy_from_slice(&*data);
|
||||||
|
SecretKey::from_bytes(&bytes).expect("A static array of the correct length is a known good.")
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn pair(&self) -> Keypair {
|
pub fn pair(&self) -> Keypair {
|
||||||
@@ -87,6 +91,6 @@ pub fn test_keyring() -> Vec<(Account, AuthorityWeight)> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Get a list of "unique" accounts.
|
/// Get a list of "unique" accounts.
|
||||||
pub fn accounts(len: u8) -> Vec<Account> {
|
pub fn accounts(len: u16) -> Vec<Account> {
|
||||||
(0..len).into_iter().map(Account).collect()
|
(0..len).into_iter().map(Account).collect()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user