mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 02:17:58 +00:00
BEEFY: Support compatibility with Warp Sync - Allow Warp Sync for Validators (#2689)
Resolves https://github.com/paritytech/polkadot-sdk/issues/2627 Initializes voter _after_ headers sync finishes in the background. This enables the BEEFY gadget to work with `--sync warp` (GRANDPA warp sync). Co-authored-by: Adrian Catangiu <adrian@parity.io>
This commit is contained in:
@@ -378,7 +378,7 @@ async fn voter_init_setup(
|
||||
);
|
||||
let (beefy_genesis, best_grandpa) =
|
||||
wait_for_runtime_pallet(api, &mut gossip_engine, finality).await.unwrap();
|
||||
load_or_init_voter_state(&*backend, api, beefy_genesis, best_grandpa, 1)
|
||||
load_or_init_voter_state(&*backend, api, beefy_genesis, best_grandpa, 1).await
|
||||
}
|
||||
|
||||
// Spawns beefy voters. Returns a future to spawn on the runtime.
|
||||
@@ -1026,7 +1026,7 @@ async fn should_initialize_voter_at_genesis() {
|
||||
assert_eq!(rounds.validator_set_id(), validator_set.id());
|
||||
|
||||
// verify next vote target is mandatory block 1
|
||||
assert_eq!(persisted_state.best_beefy_block(), 0);
|
||||
assert_eq!(persisted_state.best_beefy(), 0);
|
||||
assert_eq!(persisted_state.best_grandpa_number(), 13);
|
||||
assert_eq!(persisted_state.voting_oracle().voting_target(), Some(1));
|
||||
|
||||
@@ -1072,8 +1072,9 @@ async fn should_initialize_voter_at_custom_genesis() {
|
||||
);
|
||||
let (beefy_genesis, best_grandpa) =
|
||||
wait_for_runtime_pallet(&api, &mut gossip_engine, &mut finality).await.unwrap();
|
||||
let persisted_state =
|
||||
load_or_init_voter_state(&*backend, &api, beefy_genesis, best_grandpa, 1).unwrap();
|
||||
let persisted_state = load_or_init_voter_state(&*backend, &api, beefy_genesis, best_grandpa, 1)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
// Test initialization at session boundary.
|
||||
// verify voter initialized with single session starting at block `custom_pallet_genesis` (7)
|
||||
@@ -1085,7 +1086,7 @@ async fn should_initialize_voter_at_custom_genesis() {
|
||||
assert_eq!(rounds.validator_set_id(), validator_set.id());
|
||||
|
||||
// verify next vote target is mandatory block 7
|
||||
assert_eq!(persisted_state.best_beefy_block(), 0);
|
||||
assert_eq!(persisted_state.best_beefy(), 0);
|
||||
assert_eq!(persisted_state.best_grandpa_number(), 8);
|
||||
assert_eq!(persisted_state.voting_oracle().voting_target(), Some(custom_pallet_genesis));
|
||||
|
||||
@@ -1107,7 +1108,9 @@ async fn should_initialize_voter_at_custom_genesis() {
|
||||
let (beefy_genesis, best_grandpa) =
|
||||
wait_for_runtime_pallet(&api, &mut gossip_engine, &mut finality).await.unwrap();
|
||||
let new_persisted_state =
|
||||
load_or_init_voter_state(&*backend, &api, beefy_genesis, best_grandpa, 1).unwrap();
|
||||
load_or_init_voter_state(&*backend, &api, beefy_genesis, best_grandpa, 1)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
// verify voter initialized with single session starting at block `new_pallet_genesis` (10)
|
||||
let sessions = new_persisted_state.voting_oracle().sessions();
|
||||
@@ -1118,7 +1121,7 @@ async fn should_initialize_voter_at_custom_genesis() {
|
||||
assert_eq!(rounds.validator_set_id(), new_validator_set.id());
|
||||
|
||||
// verify next vote target is mandatory block 10
|
||||
assert_eq!(new_persisted_state.best_beefy_block(), 0);
|
||||
assert_eq!(new_persisted_state.best_beefy(), 0);
|
||||
assert_eq!(new_persisted_state.best_grandpa_number(), 10);
|
||||
assert_eq!(new_persisted_state.voting_oracle().voting_target(), Some(new_pallet_genesis));
|
||||
|
||||
@@ -1171,7 +1174,7 @@ async fn should_initialize_voter_when_last_final_is_session_boundary() {
|
||||
assert_eq!(rounds.validator_set_id(), validator_set.id());
|
||||
|
||||
// verify block 10 is correctly marked as finalized
|
||||
assert_eq!(persisted_state.best_beefy_block(), 10);
|
||||
assert_eq!(persisted_state.best_beefy(), 10);
|
||||
assert_eq!(persisted_state.best_grandpa_number(), 13);
|
||||
// verify next vote target is diff-power-of-two block 12
|
||||
assert_eq!(persisted_state.voting_oracle().voting_target(), Some(12));
|
||||
@@ -1224,7 +1227,7 @@ async fn should_initialize_voter_at_latest_finalized() {
|
||||
assert_eq!(rounds.validator_set_id(), validator_set.id());
|
||||
|
||||
// verify next vote target is 13
|
||||
assert_eq!(persisted_state.best_beefy_block(), 12);
|
||||
assert_eq!(persisted_state.best_beefy(), 12);
|
||||
assert_eq!(persisted_state.best_grandpa_number(), 13);
|
||||
assert_eq!(persisted_state.voting_oracle().voting_target(), Some(13));
|
||||
|
||||
@@ -1272,7 +1275,7 @@ async fn should_initialize_voter_at_custom_genesis_when_state_unavailable() {
|
||||
assert_eq!(rounds.validator_set_id(), validator_set.id());
|
||||
|
||||
// verify next vote target is mandatory block 7 (genesis)
|
||||
assert_eq!(persisted_state.best_beefy_block(), 0);
|
||||
assert_eq!(persisted_state.best_beefy(), 0);
|
||||
assert_eq!(persisted_state.best_grandpa_number(), 30);
|
||||
assert_eq!(persisted_state.voting_oracle().voting_target(), Some(custom_pallet_genesis));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user