Os Compact Blocks ou Compact Blocks nada mais são do que uma pequena adaptação à forma como o protocolo pode transmitir as informações dos blocos entre os nós que compõem a rede.
UUma das principais tarefas dos desenvolvedores de Bitcoin é tornar a rede mais eficiente e escalável, para que investiguem e desenvolvam diferentes técnicas para tornar isso possível sem quebrar a base do protocolo Bitcoin, que os levou a diferentes ideias e entre elas temos os Compact Blocks.
Os Compact Blocks ou Compact Blocks nada mais são do que uma pequena adaptação à forma como o protocolo pode transmitir as informações dos blocos entre os nós que compõem a rede. O objetivo dessa modificação é tornar a transmissão de dados mais eficiente, reduzindo a largura de banda necessária para essa tarefa. Uma situação que leva à redução da latência e dos requisitos de rede necessários para chegar a um consenso rápido na rede global. Graças a essas vantagens, os blocos compactos estão conosco desde o lançamento da versão 0.13.0 do Bitcoin Core, permitindo-nos desfrutar de suas vantagens.
Mas como essa tecnologia funciona? O que exatamente isso nos oferece? Vamos aprender mais sobre essa proposta e tudo o que ela significa para o Bitcoin.
Blocos compactos, tornando a transmissão de dados em Bitcoin mais eficiente
Antes de entrar em blocos compactos, primeiro é importante entender por que é necessário ser eficiente na transmissão de dados em uma rede como o Bitcoin. Como sabemos, o Bitcoin é uma rede distribuída de milhares de nós espalhados por todo o mundo. Na verdade, cerca de 10900 nós de Bitcoin são conhecidos publicamente, um dado que podemos revisar na web Bitnodes.
Agora vamos imaginar por um momento Quanta informação é tratada nesta enorme rede? Se levarmos em conta o número de nós, além do fato de que a cada segundo a rede recebe centenas de transações e que a cada 10 minutos é gerado um bloco que contém em média 1 MB de informação, podemos deduzir que a rede possui alto tráfego de informações globalmente. Mas quanto exatamente?
Se fizermos os cálculos usando esses dados, a rede Bitcoin lida com uma média de 1,58 TB de dados globalmente diariamente. A obtenção desses dados é simples:
Em primeiro lugar, devemos ter em mente que em média são produzidos cerca de 144 blocos por dia, com 1 MB por bloco. Ou seja, uma média de 144 MB de dados por dia. No entanto, eles devem ser replicados nos 11 mil nós que compõem a rede. Em outras palavras, todos os blocos e seus dados trafegam pela rede para que cada nó possa ter uma cópia exata dela, então temos:
11000 (nós) * 144 (MB) = 1584000 MB (dados replicados em todos os nós)
Se levarmos esses dados para TB, obtemos:
1584000 / 1000000 = 1,58 TB
Assim, podemos saber os dados aproximados mobilizados em toda a rede Bitcoin. É uma grande quantidade de informações que consomem largura de banda. Mas não só isso, além disso, isso gera dois problemas: retarda a rede em termos de desempenho da rede e dificulta a criação de um consenso em toda a rede e nos nós que a compõem.
Se acrescentarmos que os problemas só podem aumentar em escala com um maior número de nós e pessoas usando a rede, então entendemos porque é urgente resolver este problema. Na verdade, os desenvolvedores gostam Greg Maxwell têm sido muito enfáticos a esse respeito, dizendo:
O blockchain descentralizado de Bitcoin é um meio de transmissão globalmente compartilhado, que é provavelmente o modo de comunicação mais incrivelmente ineficiente já criado pelo homem.
Muitos podem acreditar que as palavras de Maxwell atacam a descentralização da rede. Mas na realidade eles atacam um problema conhecido de todos, as redes P2P são um meio bastante ineficiente de enviar informações em redes que devem estar sempre sincronizadas. Diante desta situação, o melhor é tornar o meio de transmissão mais eficiente e para isso existem várias propostas como Relay Network, Erlay e claro Compact Blocks.
As três vantagens que os blocos compactos nos oferecem são:
- Não modifica o protocolo Bitcoin.
- Não quebra o esquema P2P da rede atual, protegendo sua descentralização.
- Ele reduz consideravelmente as necessidades de largura de banda e a quantidade de dados transmitidos na rede.
- Sem dúvida, não são argumentos de pouco peso e que mantêm o Bitcoin em linha com sua linha filosófica: dinheiro descentralizado disponível para todos.
Como funcionam os blocos compactos?
O que os Compact Blocks buscam é dividir as informações dos blocos minerados na rede em dois processos, que explicamos a seguir:
Gerando um bloco válido na rede
O primeiro processo é a geração do bloco, onde os mineiros irão criar um bloco válido dentro das regras de consenso da rede. Nesse ponto, os mineiros incluem todas as informações que esse bloco normalmente teria. Ou seja, o seu hash de bloco ou ID de bloco, De Raiz Merkle, as informações completas do cabeçalho do bloco e, claro, todo o conjunto de transações que foram validadas por ele. Neste ponto não há modificação de qualquer tipo no processo, ele permanece o mesmo processo de geração de bloco sem nenhuma alteração.
Isso significa que os mineiros fazem o seu trabalho, geram o bloco e enviam para a rede. Nesse ponto, o primeiro nó a receber o referido bloco verifica-o e começa a enviar os blocos compactos seguindo a solução a seguir descrita.
Enviando as informações para o resto da rede
Aí começa o segundo processo, que é a transmissão dessa informação, e cuidado porque é aí que reside a inovação dos blocos compactos. Como bem sabemos, cada nó na blockchain tem um espaço chamado mempool, onde as transações que estão esperando para serem processadas são armazenadas. Este mempool está presente em todos os nós, sem exceção. Esta situação nos permite deduzir o seguinte: muitas das transações do bloco gerado recentemente estão no mempool de cada um dos nós da rede.
Essa dedução é muito importante porque o processo atual de transmissão dos blocos o que ela faz é; envie o referido bloco com todo esse conjunto de transações em duplicata. É justamente essa duplicação que torna o processo de transmissão de dados na rede menos eficiente. Diante disso, a seguinte pergunta é válida: Não podemos aproveitar o fato de os nós já possuírem muitas dessas transações em seu mempool e, assim, reduzir a quantidade de dados enviados aos nós e consolidar o novo bloco por si próprios? A resposta é sim, isso pode ser feito. E, de fato, é exatamente isso o que acontece no segundo processo de bloco compacto.
Os nós que fazem uso de blocos compactos propagam o bloco por meio de um "bloco mínimo" do bloco minerado. Este "bloco mínimo" na verdade contém informações vitais, entre as quais podemos encontrar as seguintes:
- O cabeçalho de 80 bytes do novo bloco. Aqui estão as informações do ID do bloco ou hash do bloco, a raiz Merkel, o nonce e o número de transações. E também a data e a hora em que foi extraído.
- Identificadores de transação ou TXID (sem dados dos scripts dessas transações).
- Algumas transações completas (com todas as informações dos scripts dessas transações) que o nó de envio prevê que o nó de recebimento ainda não possui em seu mempool.
No total, esses blocos mínimos ocupam no máximo 20 KB de dados. O que é uma redução drástica de informações em relação a 1 MB de dados que em média ocupa um bloco.
Reconstruindo o bloco
Como podemos ver, a quantidade de informação neste “bloco mínimo” é muito menor do que normalmente possui um bloco completo. No entanto, essa informação permitiria perfeitamente que o restante dos nós reconstruísse com precisão o bloco minado. E para isso, deve utilizar apenas as informações recebidas naquele bloco mínimo e seu mempool. Dessa forma, o nodo usa esses dados para recriar completamente o bloco final, que pode ser verificado sem problemas.
Mesmo que não seja possível reconstruir o bloco localmente, o nó fará solicitações de informações para isso. Para fazer isso, o nó exigirá a referida transação (ou transações) para outro nó completo para reconstruir o índice e formar o bloco de forma inequívoca. Isso evita, por exemplo, que os nós construam blocos díspares e, assim, quebrem o consenso da rede.
Esse processo de envio de informações aos poucos e de uso de dados locais para preencher as informações nos blocos validados permite reduzir drasticamente o tamanho das mensagens da rede. Você pode vê-lo como um envio de pequenos sinais que você pode reconstruir completamente. Algo que é possível graças ao fato de você possuir em seu poder os elementos com que constrói esses sinais. Além disso, graças ao uso de criptografia, você pode ter certeza de que sua mensagem reconstruída será idêntica à original.
Quanto você sabe, cryptonuta?
Os Compact Blocks realmente ajudam a otimizar o uso de dados da rede Bitcoin?VERDADEIRO!
Como os blocos compactos são projetados para usar de forma mais inteligente os dados armazenados no mempool do nó, eles podem ajudar a otimizar significativamente o uso de dados da rede, reduzindo muito a necessidade de largura de banda para sua rede. operação eficaz.
Impacto de blocos compactos no Bitcoin
Entre os prós dos blocos compactos podemos citar:
- Isso reduz muito a necessidade de largura de banda da rede para transmitir informações a todos os nós. Na verdade, em média agora o consumo de dados da rede chega a 1,4 TB de dados por dia. É uma redução de mais de 90% no consumo de dados de toda a rede.
- Ele permite que a propagação de dados pela rede seja mais rápida. Na verdade, leva cerca de 15 segundos para que todos os nós da rede recebam as informações do novo bloco.
- Outro ponto a favor dos blocos compactos é que eles reduzem o consumo de dados para quem tem uma conexão limitada. Desta forma, eles podem participar da rede sem maiores problemas ou custos excessivos.
- Além disso, melhora a segurança da rede, uma vez que a rápida transmissão de informações impede que invasores enviem informações falsas.