Dans Substrate, quelle est la différence entre `spec_version` et` authoring_version`?

Nov 12 2020

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_versionet authoring_versionchangerait
  • spec_versionchangerait, mais authoring_versionne changerait pas
  • authoring_versionchangerait, mais spec_versionne changerait pas

Réponses

3 DanForbes Nov 17 2020 at 00:12

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_version

Si, par exemple, vous modifiez l' BlockBuilderAPI d'exécution d'une manière non rétrocompatible, vous devrez modifier leauthoring_version

Comme 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é