Le runtime-200 est publié, consultez les release notes:
Pourquoi un nouveau runtime
Il faut éviter d’avoir trop de changements dans un runtime, sinon c’est difficile à vérifier et le risque que l’upgrade se passe mal est plus élevé.
La ĞDev étant la monnaie destinée à recevoir en premier les nouveaux développements, les runtime upgrade y seront toujours fréquents. Ils seront beaucoup moins fréquents sur la ĞTest, et encore moins sur la Ğ1.
Les développements avancent, et il y a déjà suffisamment de changements pour faire un runtime upgrade.
Les changements
Les 4 principaux changements sont les suivants:
- feat(identity): stricter idty name validation (!55) @tuxmain
- feat(wot): remove received certs on unvalidated idty removal (!74) @tuxmain
- feat(identity): remove useless error
OwnerAccountNotExist
(!78) @elois - fix(smith-wot): smith certs expiration should revoke smith membership (!79) @elois
Pour une liste exhaustive, merci de consulter les release notes: runtime-200 · nodes / rust / Duniter v2S · GitLab
Le proposal
Hashs du proposal: 0xa325a37c0e343405e94d69ab8925872c7aec089887dae795f81b91e40178f9ff
Maintenant que nous avons la pallet preimage, nous pouvons enfin créer un proposal qui ne contient pas tout le bytecode wasm, mais à la place une proposition de schedule un call en fournissant uniquement son hash, voyez plutot le détail du proposal:
{
args: {
call: {
args: {
id: runtime-200
after: 100
maybe_periodic: null
priority: 0
call: {
Hash: 0x5ff7ccaeb332525d207d67df62ca9c725c0ffb5ad855373c1f7e2ebec1a92ca6
}
}
method: scheduleNamedAfter
section: scheduler
}
weight: 1,000,000,000
}
method: dispatchAsRoot
section: upgradeOrigin
}
On voit que le call proposé est: upgradeOrigin.dispatchAsRoot(scheduler.scheduleNamedAfter("runtime-200", 100, null, 0, Hash(0x5ff7ccaeb332525d207d67df62ca9c725c0ffb5ad855373c1f7e2ebec1a92ca6)), 1,000000000)
Dis plus simplement, on propose de planifier l’exécution d’un call dans 100 blocs, se call devant avoir pour hash 0x5ff7ccaeb332525d207d67df62ca9c725c0ffb5ad855373c1f7e2ebec1a92ca6
. Ça correspond au hash de system.setCode(bytecode)
.
Les 100 blocs, c’est le temps dont on dispose après l’acceptation de la proposition pour publier le bytecode wasm du nouveau runtime. S’il n’est pas publié à temps, il faut revoter
Et voici la screen de la création de la proposition:
Comment vérifier le runtime
- Checkout le tag git
runtime-200
. - Build le runtime avec srtool:
docker run \
-i \
--rm \
-e PACKAGE=gdev-runtime \
-e RUNTIME_DIR=runtime/gdev \
-v $PWD:/build \
paritytech/srtool:1.66.1 build --app --json -cM
- Vérifier le champ
proposal_hash
dans le json fourni par srtool. Srtool utilise subwasm pour calculer le proposal hash, le calcul est fait par ici : subwasm/libs/substrate-runtime-proposal-hash/src/lib.rs at master · chevdor/subwasm · GitHub
Il s’agit en réalité du hashblake2_256(0x00 ++ 0x03 ++ runtime_bytecode)
.
Voter
Pour voter il suffit d’exécuter le call smithCollective.vote
avec votre compte membre forgeron.
Sont appelés à voter: @cgeek @1000i100 @poka @HugoTrentesaux @vit @kapis @tuxmain