In Substrate, qual è la differenza tra `spec_version` e` authoring_version`?

Nov 12 2020

Ogni runtime di Substrate ha una RuntimeVersion . I campi in questa struttura RuntimeVersion indicano quando vari aspetti del runtime cambiano e ogni campo ha la propria semantica descritta in quei documenti.

Non sono sicuro di cosa authoring_versionsignifichi e quando esattamente dovrebbe cambiare. La descrizione nei documenti non mi è del tutto chiara

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.

Se possibile, fornire esempi di aggiornamenti in cui:

  • entrambi spec_versione authoring_versioncambierebbero
  • spec_versioncambierebbe, ma authoring_versionnon lo farebbe
  • authoring_versioncambierebbe, ma spec_versionnon lo farebbe

Risposte

3 DanForbes Nov 17 2020 at 00:12

Condividerò una risposta fornitami dallo sviluppatore principale di Substrate Bastian Köcher :

Non ci sono molti cambiamenti che si traducono in un urto del authoring_version

Se ad esempio modifichi l' BlockBuilderAPI di runtime in un modo non compatibile con le versioni precedenti, dovrai eseguire il bump del fileauthoring_version

Poiché i validatori non saranno in grado di costruire nuovi blocchi, senza aggiornare l'implementazione del nodo

E se modifichi semplicemente l'API di runtime in modo tale da renderlo incompatibile con il precedente senza modificare alcun interno nel runtime che porterebbe a una radice di archiviazione diversa, sbatteresti solo il file authoring_version. Tuttavia, mi aspetto che questo probabilmente non accada mai nella realtà