Dans Substrate, quelle est la différence entre `spec_version` et` authoring_version`?
Chaque runtime Substrate a une RuntimeVersion . Les champs de cette structure RuntimeVersion indiquent quand divers aspects de l'exécution changent et chaque champ a sa propre sémantique décrite dans ces documents.
Je ne suis pas sûr de ce que cela authoring_versionsignifie et quand exactement cela devrait changer. La description dans la documentation n'est pas totalement claire pour moi
authoring_version: u32
authoring_version is the version of the authorship interface.
An authoring node will not attempt to author blocks unless this
is equal to its native runtime.
Si possible, veuillez fournir des exemples de mises à niveau où:
- les deux
spec_versionetauthoring_versionchangerait spec_versionchangerait, maisauthoring_versionne changerait pasauthoring_versionchangerait, maisspec_versionne changerait pas
Réponses
Je vais partager une réponse qui m'a été fournie par Bastian Köcher, développeur principal de Substrate :
Il n'y a pas beaucoup de changements qui entraînent une bosse du
authoring_versionSi, par exemple, vous modifiez l'
BlockBuilderAPI d'exécution d'une manière non rétrocompatible, vous devrez modifier leauthoring_versionComme les validateurs ne pourront pas créer de nouveaux blocs, sans mettre à jour l'implémentation du nœud
Et si vous changez simplement l'API d'exécution de manière à la rendre incompatible avec la précédente tout en ne changeant aucun élément interne de l'exécution qui conduirait à une racine de stockage différente, vous ne feriez que bosse le fichier
authoring_version. Cependant, je m'attends à ce que cela n'arrive probablement jamais en réalité