Fix gtest GRANDPA state and sync: configure GRANDPA hard forks and patch polkadot-sdk warp sync
Goal of the changes
Fix gtest node sync after the network's forced GRANDPA finality recovery by:
- pinning Duniter's Polkadot SDK dependencies to a revision that supports GRANDPA authority-set hard forks
- configuring the
gtest-specific GRANDPA hard fork in the node service - updating the embedded
gtestcheckpoint to a post-recovery header - documenting how to derive and validate this kind of hard-fork configuration for future releases
What reviewers need to know
-
node/src/service.rsnow usessc_consensus_grandpa::block_import_with_authority_set_hard_forksand passes the same hard-fork config into the warp sync provider. - The hard fork is gated strictly to
config.chain_spec.id() == "gtest"and models a single forced authority-set jump:set_id = 115- anchor block
#2188261 - hash
0x275b7296dab9ab0d925b4a835f919f0272cb68dc5ee44a658cceb1f84bc4d02f last_finalized = Some(2_119_795)
- The
gtestcheckpoint was updated so fresh sync/warp sync uses a header aligned with the recovered chain state. -
Cargo.lockonly reflects the Polkadot SDK pin bump required for the hard-fork API/support. -
docs/dev/release.mddocuments the recovery procedure and, importantly, why the hard fork must be derived from theConsensusLog::ForcedChangedigest block rather than the laterGrandpa.NewAuthoritiesapplication block. Anchoring it to the later block causes sync failures with:Multiple pending forced authority set changes are not allowed.
Closes #466 (closed)
Edited by Éloïs