In Substrate, qual è la differenza tra `spec_version` e` authoring_version`?
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_versioneauthoring_versioncambierebbero spec_versioncambierebbe, maauthoring_versionnon lo farebbeauthoring_versioncambierebbe, maspec_versionnon lo farebbe
Risposte
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_versionSe ad esempio modifichi l'
BlockBuilderAPI di runtime in un modo non compatibile con le versioni precedenti, dovrai eseguire il bump del fileauthoring_versionPoiché 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à