QUANDO OS NODES RUNNERS DO BITCOIN ATUALIZAM?
Uma análise das versões históricas dos nós do Bitcoin Core.
Por Jameson Lopp.
Texto traduzido e adaptado, por Jeff.
Stackfy: Compre Bitcoin de forma fácil e rápida sem KYC.
Nesse artigo vamos examinar o comportamento de atualização dos operadores de nós ao longo dos anos.
Recentemente, ao compilar as métricas para meu Relatório Anual do Bitcoin, me deparei com este gráfico de 8 anos de contagens de agentes de usuário históricos para nós visíveis. É interessante ver os padrões de como os operadores de nós (node runners) atualizam seus nós, pois isso é uma medida aproximada de quão responsivos esses operadores são e quanto estão atentos aos novos lançamentos de nós.
No entanto, como você pode ver, o gráfico não é particularmente granular para lançamentos de mais de 2 anos atrás. Então entrei em contato com Addy, da Bitnodes, para ver se ele poderia me fornecer os dados brutos para uma análise mais aprofundada. Felizmente, ele forneceu!
Por Que Devemos Nos Importar?
Embora frequentemente falemos sobre como o Bitcoin é um protocolo muito estável e você pode executar versões muito antigas dos clientes do Bitcoin e ainda alcançar consenso com o restante da rede, o outro lado disso é o fato de que o software não é perfeito e os desenvolvedores estão constantemente melhorando-o. Se você ler a documentação do Bitcoin Core sobre o ciclo de vida do software, funciona assim:
2 lançamentos principais por ano.
Lançamentos menores que incluem correções importantes de bugs dos lançamentos principais recentes.
Correções de bugs serão aplicadas apenas aos lançamentos dos últimos 18 meses.
Portanto, não é considerado seguro executar lançamentos do Bitcoin Core com mais de 18 meses, pois podem ter vulnerabilidades não corrigidas. Se um número significativo de nós estiver executando software muito antigo e não corrigido, isso pode representar um risco sistêmico para a rede. Por que não corrigir lançamentos com mais de 18 meses? Porque isso requer mais recursos de manutenção e os mantenedores do projeto já estão bastante ocupados. Se alguém quiser se voluntariar para aplicar patches e manter lançamentos mais antigos, sinta-se à vontade para se candidatar!
No entanto, é um aspecto fundamental do modelo de segurança do Bitcoin que o software do nó NÃO atualize automaticamente. Atualizações automáticas criariam um ponto único de falha que poderia causar a rápida disseminação de uma atualização maliciosa para uma supermaioria de nós na rede. Como tal, é necessário que os operadores de nós tomem medidas manuais para manter seu software de nó atualizado. Isso cria um ponto de fricção e significa que os operadores de nós devem manter alguma consciência sobre o desenvolvimento do projeto.
Metodologia
Eu escrevi este script para filtrar uma década de dados de instantâneos semanais.
Há muito ruído nos dados brutos. Um motivo para isso é que qualquer pessoa que saiba o que está fazendo pode definir sua própria string de Agente de Usuário. Por exemplo, meus nós Statoshi apresentam seu agente de usuário como "Statoshi" em vez de "Satoshi", como faz o projeto Bitcoin Core. Havia quase 200 agentes de usuário únicos no conjunto de dados.
bcoin
Bitclassic
Bitcoin
Bitcoin ABC
bitcoin-php
bitcoin-ruby
bitprim
Blockcore
blockd
BTC-2MB
BTCC
btcd
btcwire
BTCXChange.ro
Classic
Cornell-Falcon-Network
Gocoin
JavaBitcoin
libbitcoin
Multicoin
PseudoNode
Satoshi
Satoshi-UASF-Segwit
Statoshi
TestClient.0.0.1
thebitcoin.foundationÉ claro que existem muitas implementações diferentes de nós - embora muitos deles nem sejam nós totalmente validados, mas sim clientes leves mínimos. Após alguma consideração, decidi focar apenas nos nós do Bitcoin Core. Por quê?
Mais de 90% dos nós do Bitcoin executam Core.
Nenhuma das outras implementações de nós tem cronogramas de lançamento consistentes.
Houve uma variedade de clientes "fork" durante 2015 - 2018 que bagunçaram ainda mais o ritmo regular dos ciclos de vida dos nós.
Resultados
Após revisar os dados visualizados, escolhi dividi-los em 3 gráficos distintos.
Lançamentos de versões principais, anos 2015 - 2020.
Lançamentos de versões menores, anos 2015 - 2020.
Lançamentos de versões principais, 2020 - presente.
Por que não há gráficos para lançamentos mais antigos? O histórico de dados da Bitnodes começa em 7 de junho de 2014; o Bitcoin Core 0.9 foi lançado em março de 2014 e o 0.10 foi lançado em fevereiro de 2015. Portanto, não podemos ver todo o ciclo de vida de implantação dos nós de lançamentos anteriores ao Bitcoin Core 0.10.
Vamos começar com o comportamento exibido pelos operadores de nós que executam lançamentos principais de 2015 a 2020.
O que me impressiona neste gráfico é que parece que:
Em 2015, 2016 e 2017, a maioria desses operadores de nós está atualizando seu software duas vezes por ano, com cada novo lançamento principal.
Em 2018, mais operadores de nós estão desacelerando e atualizando seu nó apenas anualmente.
E se olharmos para os nós que executam versões menores?
Ao observar o ciclo de vida dos nós que são atualizados para versões menores, não surpreendentemente, parece que seus operadores de nós estão atualizando ainda mais frequentemente; muitas vezes mais de uma vez a cada 6 meses. Isso faz sentido, pois os lançamentos menores tendem a ser publicados entre os lançamentos principais.
O que acontece quando olhamos para os lançamentos de 2021 até o presente? A frequência de atualização dos nós parece estar desacelerando. Isso é fácil de perceber se você se concentrar nas contagens máximas de nós de cada versão. Note que as contagens máximas nos dois gráficos anteriores eram sempre menos de 6 meses após a data de lançamento real, mas agora os picos estão mais na faixa de 6 a 9 meses.
Além disso, observe que as contagens máximas de nós são 150% - 200% dos picos nos gráficos anteriores. Esses fenômenos podem ser explicados?
Suspeito que o aumento no tempo de atraso para os operadores de nós atualizarem seja o mesmo motivo pelo qual vemos contagens de nós mais altas nos últimos anos: o aumento no hardware e software de nós "plug and play" amigáveis ao usuário. E pelo menos parte dessa adoção é resultado de pessoas executando nós da Lightning Network, que geralmente requerem também a execução de um nó Bitcoin. Ou seja, há um número maior de operadores de nós menos técnicos agora e eles não são tão entusiastas em atualizar o software em suas máquinas de nó.
Em quanto tempo os lançamentos do Bitcoin Core ganhão uso generalizado?
Como mencionado anteriormente, o ciclo de vida do lançamento do Bitcoin Core é de aproximadamente 18 meses antes de ser considerado fora de uso. Mas não é possível forçar ninguém a atualizar seu software de nó - há uma longa cauda de software cliente desatualizado ainda em operação. Quanto tempo está levando para 95% dos nós executando uma versão de lançamento específica atualizarem para uma versão diferente? Eu executei os números:
Observe que este gráfico termina com o lançamento 0.20 de 2020 porque nenhum dos lançamentos após isso viu 95% dos seus nós (contagem máxima) atualizados. Podemos ver que antes de julho de 2018 geralmente levava 1 ano para 95% dos operadores de nós atualizarem seu software. Mas depois de 2018, esse tempo dobrou para 2 anos. E é totalmente possível que agora estejamos em uma era em que leva 3 anos para 95% dos operadores de nós atualizarem!
Recomendações
Embora não devamos mudar os nós para atualizar automaticamente seu software, isso enfraqueceria muito o modelo de segurança do Bitcoin, suspeito que podemos melhorar a conscientização dos operadores de nós.
Seria ótimo se o Bitcoin Core e os projetos de pilha completa que facilitam a execução de nós do Bitcoin Core solicitassem ao usuário que se inscrevesse na Lista de Anúncios do Bitcoin Core ao instalar o software.
O software de nó "plug and play" deve explorar métodos alternativos de notificação para alertar os usuários de que seu software está desatualizado. Suspeito que poucos operadores de nós hobbystas estejam fazendo login em seus painéis de nós e, portanto, poderiam facilmente perder notificações na interface do usuário. Por exemplo, seria interessante se você pudesse definir um nostr npub como "contato de administrador" do nó na configuração e o nó pudesse efetivamente enviar notificações de atualização de software que seriam enviadas ao seu telefone.
Gostaria de ver mais avisos/documentação de configuração inicial do software de nós que informem os usuários sobre as melhores práticas e responsabilidades de manutenção contínua.
O Bitcoin é um ambiente adversarial em constante evolução: os operadores de nós devem estar cientes de que não devem apenas "configurar e esquecer" se quiserem manter uma postura de segurança forte. Executar um nó para validar seus fundos contra as regras da rede é o caminho para a soberania financeira, mas também significa que você está assumindo as mesmas responsabilidades que um administrador de servidor!
Sinta-se à vontade para entrar em contato se tiver outras sugestões!











