No Substrate, qual é a diferença entre `spec_version` e` authoring_version`?

Nov 12 2020

Cada tempo de execução do Substrate tem uma RuntimeVersion . Os campos nesta estrutura RuntimeVersion indicam quando vários aspectos do tempo de execução mudam e cada campo tem sua própria semântica descrita nesses documentos.

Não tenho certeza do que authoring_versionsignifica e quando exatamente deve mudar. A descrição nos documentos não é totalmente clara para mim

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 possível, forneça exemplos de atualizações onde:

  • ambos spec_versione authoring_versionmudariam
  • spec_versionmudaria, mas authoring_versionnão
  • authoring_versionmudaria, mas spec_versionnão

Respostas

3 DanForbes Nov 17 2020 at 00:12

Vou compartilhar uma resposta que me foi fornecida pelo desenvolvedor do núcleo do Substrate, Bastian Köcher :

Não há muitas mudanças que resultem em um aumento do authoring_version

Se você, por exemplo, alterar a BlockBuilderAPI de tempo de execução de uma forma não compatível com versões anteriores, você precisará alterar oauthoring_version

Como os validadores não serão capazes de construir novos blocos, sem atualizar a implementação do nó

E se você apenas alterar a API de tempo de execução de uma forma que a torne incompatível com a anterior, sem alterar nenhum componente interno no tempo de execução que leve a uma raiz de armazenamento diferente, você apenas colidirá com authoring_version. No entanto, espero que isso provavelmente nunca aconteça na realidade