No Substrate, qual é a diferença entre `spec_version` e` authoring_version`?
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_versioneauthoring_versionmudariam spec_versionmudaria, masauthoring_versionnãoauthoring_versionmudaria, masspec_versionnão
Respostas
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_versionSe 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_versionComo 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