Estamos muito entusiasmados em anunciar o lançamento oficial do Bitcoin Core v0.12.0. Muito trabalho duro foi dedicado a esta versão e ela pode ser a maior até agora, com melhorias mais significativas do que qualquer outra antes.
Aqui estão as principais melhorias das quais você se beneficiará se atualizar seus nós para a versão 0.12:
- Validação de assinatura 7x mais rápida
- Capacidade de limitar o tráfego de upload
- Prevenção de falhas por meio de limites de pool de memória
- Opção para enviar transações que podem ser aumentadas em taxas
- Uso automático do Tor quando está em execução
- Capacidade dos aplicativos assinarem notificações com ZeroMQ
- Uso de disco enormemente reduzido para carteiras
- Montagem de blocos muito mais rápida para mineradores
Além dessas, há outras 13 melhorias que não entraram na lista principal, mas que ainda assim são bastante valiosas. Você pode encontrar uma lista completa deles no final deste post.
Agora, vamos nos aprofundar em cada uma dessas melhorias.
Validação de assinatura 7x mais rápida
No Bitcoin Core, o OpenSSL era tradicionalmente usado para validar assinaturas ECDSA em transações Bitcoin. O OpenSSL é muito abrangente em seus recursos (fazendo muito mais do que simplesmente validar assinaturas ECDSA), mas esse enorme conjunto de recursos significa que sua superfície de ataque é bastante grande como resultado. Devido à ameaça que isso representa para a segurança do Bitcoin, tornou-se uma prioridade desacoplar o OpenSSL do Bitcoin Core e substituí-lo por uma alternativa mais simples e focada.
Para resolver esse problema, uma nova biblioteca de validação de assinatura ECDSA chamada libsecp256k1 foi desenvolvida por membros da equipe Bitcoin Core e conectada como um substituto para OpenSSL. É o resultado de quase 3 anos de engenharia complexa e, com esta integração, a superfície de ataque para código de validação de assinatura foi bastante reduzida.
Além disso, a validação da assinatura do libsecp256k1 é muito mais rápida do que a realizada pelo OpenSSL. É até 7x mais rápido na arquitetura de 64 bits, e a reindexação bruta e a validação de blocos agora levam menos da metade do tempo que levavam antes – um grande avanço na validação de transações Bitcoin.
Créditos: Pieter Wuille, Greg Maxwell e Cory Fields
Capacidade de limitar o tráfego de upload
O tráfego de upload de nós pode ser oneroso para alguns usuários, portanto, a capacidade de impor limitações a esse tráfego é uma melhoria muito necessária. Os usuários do Node agora têm a capacidade de definir limites flexíveis para a quantidade de dados que carregam e fornecem aos seus pares. Os usuários podem definir um parâmetro que especifica quantos dados o nó deve direcionar para serem servidos diariamente. Ele tentará ficar abaixo do limite, em vez de atingi-lo, e se atingir o limite, servirá apenas os blocos solicitados na última semana.
Créditos: Jonas Schnelli
Prevenção de falhas por meio de limites de pool de memória
Versões mais antigas do Bitcoin Software não tinham limite no número de transações que permitiriam em seu pool de memória. Mesmo que os nós aceitem apenas transações que tenham uma determinada taxa de retransmissão mínima especificada, às vezes o número de transações que atendem a esses requisitos ficará arbitrariamente grande e fará com que nós com RAM relativamente baixa travem. Particularmente preocupante é que os atacantes podem tirar vantagem deste sistema inundando a rede com transações, a fim de derrubar um subconjunto de nós.
Com esta atualização, os nós agora têm limitações padrão no tamanho de seus pools de memória e o operador pode configurar isso para a quantidade de memória que deseja dedicar ao mempool. Quando o limite de memória for atingido, novas transações ainda poderão ser aceitas, enquanto as transações com taxas mais baixas serão retiradas do mempool. Essa nova limitação de memória garante que travamentos inesperados não ocorrerão devido ao número de transações em cache ficarem fora de controle.
Créditos: Matt Corallo e Suhas Daftuar
Opção para enviar transações que podem ser aumentadas em taxas
As transações geralmente ficam travadas se tiverem taxas muito baixas. Isto pode causar problemas porque os resultados de transações não gastas (UTXOs) que foram usados nessas transações podem ser difíceis de gastar, potencialmente congelando fundos. As taxas de transação apropriadas são difíceis de calcular porque são altamente dependentes do volume de transações e das suas taxas em um determinado momento. Assim, normalmente subestima-se, resultando em muitas transações travadas, ou superestima-se, resultando em um pagamento excessivo maciço e em uma perda constante de fundos.
Um novo recurso chamado Opt-in Replace-by-Fee oferece aos remetentes de transações a opção de configurar suas transações para que possam ser substituídas posteriormente por outras transações que especifiquem taxas maiores. Os remetentes podem começar com uma taxa baixa e ver se sua transação é aceita; caso contrário, podem aumentar a taxa até que ela seja aceita. Isso permite que os remetentes minimizem as taxas que pagam e maximizem a chance de suas transações serem incluídas em um bloco.
Créditos: Peter Todd e Suhas Daftuar
Uso automático do Tor quando está em execução
Os nós agora detectarão se o Tor está em execução e, se estiver, criarão automaticamente serviços ocultos do Tor e se conectarão a outros nós por meio da rede Tor. Nenhuma configuração manual é necessária.
Créditos: Wladimir van der Laan
Capacidade dos aplicativos assinarem notificações com ZeroMQ
Até agora, havia suporte limitado para serviços externos assinarem notificações sobre a chegada de novos blocos e transações recebidas. Os serviços agora têm essa capacidade graças à integração com ZeroMQ.
Créditos: Johnathan Corgan
Uso de disco enormemente reduzido para carteiras
Os usuários da carteira Bitcoin Core muitas vezes sentem o peso dos altos requisitos de armazenamento de dados que acompanham a execução de um nó completo (que agora chega a 60 GB e continua aumentando). Para usuários que têm limitações de capacidade de armazenamento e ainda desejam usar uma carteira com nó completo, agora eles podem executar sua carteira no modo podado. Isso significa que o nó se concentrará apenas em monitorar as saídas não gastas e esquecerá os blocos processados anteriormente, bem como as saídas que foram gastas. Isso, por sua vez, significa que os usuários poderão executar um nó completo enquanto armazenam apenas cerca de 2 GB de dados, uma redução enorme em relação aos 60 GB anteriormente exigidos.
Créditos: Jonas Schnelli, Greg Maxwell e Adam Weiss
Montagem de blocos muito mais rápida para mineradores
Tradicionalmente, a criação de modelos de bloco tem sido bastante cara para os mineradores, exigindo altos tempos de computação e bastante memória. O alto tempo de computação é consequência do fato de que, historicamente, os mineradores tiveram que realizar cálculos críticos de consenso para validação de bloco simultaneamente enquanto montavam um bloco. Os altos requisitos de memória devem-se ao fato de que, historicamente, durante a montagem do bloco, cada transação no pool de memória de alguém precisaria ter suas entradas puxadas para um cache na memória para vários cálculos.
Com a versão 0.12, os cálculos críticos de consenso relativos a transações individuais não são mais realizados de uma só vez durante a montagem do bloco, mas são pré-calculados em todas as transações assim que atingem o conjunto de memória e depois são armazenadas em cache. Isso significa que durante a montagem do bloco, a maioria dos cálculos já foi realizada e o modelo do bloco pode ser criado com extrema rapidez. Especificamente, isto representa uma redução de tempo de um intervalo medido em segundos para um intervalo medido em dezenas de milissegundos.
Os pré-cálculos realizados também significam que as entradas de todas as transações no pool de memória não precisam mais ser colocadas no cache de uma só vez, levando a uma redução considerável nos requisitos de memória.
Créditos: Alex Morcos
Palavra de encerramento
O lançamento da versão 0.12 será um grande avanço para o cliente Bitcoin Core. Porém, ainda há muito mais a fazer e estamos sempre em busca de mais colaboradores. Para mais detalhes, consulte nossa página de contribuição e especificamente CONTRIBUTING.md. Existem muitas outras maneiras de contribuir também – basta perguntar aos outros como você pode ajudar (veja os recursos da comunidade abaixo).
Baixar de https://bitcoin.org/bin/bitcoin-core-0.12.0/.
A equipe de desenvolvimento central do Bitcoin
v0.12 Recursos
Resumos de reuniões semanais
Comunidade IRC: Junte-se à #bitcoin-dev
e #bitcoin-core-dev
canais ativados irc.freenode.net
.
Twitter: Siga as atualizações do Bitcoin Core em @bitcoincoreorg
Esta postagem do blog foi escrita por Ryan Shea com base no oficial notas de lançamento.