Implementação Bitcoin SegWit: lições importantes para desenvolvedores de blockchain
Você é um desenvolvedor Bitcoin ou blockchain? Você provavelmente está olhando para escalabilidade, latência de rede, taxas de transação e problemas semelhantes, tentando melhorar blockchains públicos. A implementação do Bitcoin SegWit contém lições importantes e explicarei este projeto neste artigo. No entanto, primeiro explicarei o que é Testemunha Segregada (SegWit).
Adoção do Bitcoin e desafios que os usuários enfrentam
O Bitcoin colocou o poder nas mãos das pessoas com sua rede desintermediada e segura e goza de alta popularidade. No entanto, você ainda não está comprando seu chá da manhã com ele, está?
Apesar da popularidade, as transações do dia-a-dia ainda não são em Bitcoin, devido aos seguintes desafios:
- Cada nó na rede Bitcoin deve armazenar todos os blocos e transações e participar da validação da transação. Uma rede Bitcoin pode ser tão rápida quanto o nó mais lento. Bitcoin usa o algoritmo de consenso “Prova de Trabalho” (POW) que exige a participação de cada nó. Leia mais sobre o algoritmo POW em “PoW vs. PoS: uma comparação entre dois algoritmos de consenso de blockchain “.
- O algoritmo POW exige que os mineradores de Bitcoins resolvam um quebra-cabeça criptográfico cada vez mais complexo, portanto, eles usam grande poder de computação. Isso aumenta a carga da rede, além de consumir muita energia. O efeito é a latência da rede.
- Os usuários de Bitcoin desejam que suas transações ocorram rapidamente. No entanto, a latência da rede e a falta de escalabilidade os tornam mais lentos. Os blocos de Bitcoin podem lidar apenas com um número limitado de transações e, para priorizar suas transações, os usuários pagam altas taxas de mineração. Essas taxas continuaram aumentando.
Bitcoin SegWit resolveu o problema das taxas de transação de forma significativa, mas se originou devido a outro problema, que explicarei agora.
Origem do Bitcoin SegWit: Maleabilidade do Bitcoin
Bitcoin também tinha outro problema potencialmente sério. Bitcoin usa criptografia de dados, que primeiro converte um texto simples em um “texto cifrado” embaralhado. Somente a pessoa com a chave privada pode descriptografar o texto cifrado de volta ao texto simples original usando a chave privada.
Maleabilidade é um bug em uma tecnologia de criptografia que permite que os ciberataques convertam o texto cifrado em outro texto cifrado. Os hackers podem então descriptografar o texto cifrado modificado em um texto simples completamente diferente, mas relacionado. Por exemplo, eles podem alterar o endereço do destinatário e o valor do pagamento em uma transação de pagamento! A criptografia Bitcoin tinha esse bug de maleabilidade.
“Testemunha Segregada (Camada de Consenso)”, ou seja, SegWit ‘Bitcoin Improvement Proposta’ (BIP) 141 tratava de resolver esse bug de maleabilidade.
Como a implementação do Bitcoin SegWit resolveu o problema de maleabilidade
O desenvolvedor de Bitcoin Peter Wiulle apresentou a proposta do SegWit em dezembro de 2015. A solução funcionou da seguinte maneira:
- Ele criou uma estrutura diferente chamada de “Testemunha”. Possui dados para autenticar uma transação, mas não possui os detalhes da transação.
- A nova estrutura de Testemunha está comprometida com o bloco Bitcoin separadamente do resto dos dados da transação, daí o nome “Testemunha Segregada”.
- Suponha que os hackers obtenham os dados da transação e tentem explorar o bug da maleabilidade. Eles não podem mais acessar a assinatura digital com o SegWit.
- Portanto, mesmo que eles consigam alterar o texto cifrado para algo diferente, seu esforço não é útil sem a assinatura digital.
É assim que a proposta Bitcoin SegWit planejava resolver o bug de maleabilidade. No entanto, a proposta incluiu mais mudanças, e estas contribuíram para um aumento efetivo do tamanho do bloco do Bitcoin. Leia mais para descobrir como.
Bitcoin SegWit aumenta efetivamente o tamanho do bloco de Bitcoin
O tamanho do bloco de Bitcoin é 1 Megabyte (MB). Além disso, as informações de assinatura constituíam uma boa parte dos dados de uma transação, portanto, um bloco poderia incluir apenas algumas transações.
A proposta do SegWit criou um parâmetro diferente denominado “Unidade de Peso” (WU). Cada byte da parte dos dados de transação do bloco corresponde a 4 WUs. No entanto, cada byte da estrutura “Testemunha” é igual a 1 WU.
A proposta também definiu o peso máximo de um bloco Bitcoin em 4 milhões de WUs. Faça uma matemática simples e você verá como os novos blocos com SegWit têm mais de 1 MB de tamanho efetivamente! Isso permitiu que os mineiros incluíssem mais transações em um bloco.
Como cada bloco agora tem um espaço mais efetivo, a competição acirrada para incluir uma transação em um bloco se reduz. Isso, por sua vez, reduz as taxas de transação!
Se a comunidade Bitcoin tivesse decidido ignorar o limite de tamanho de bloco de 1 MB explicitamente, eles precisariam implementar um hard fork. No entanto, as comunidades criptográficas muitas vezes não preferem bifurcações rígidas devido à instabilidade que trazem para a rede geral e o ecossistema.
No caso da implementação do Bitcoin SegWit, a regra de limite de tamanho de bloco de 1 MB permaneceu em vigor, no entanto, o novo parâmetro WU a contornou. Portanto, não havia nenhuma bifurcação difícil para implementar o SegWit.
Prós e contras do Bitcoin SegWit e adoção
Você acabou de ver como a SegWit resolveu o bug da maleabilidade e reduziu as taxas de transação do Bitcoin. No entanto, existem benefícios adicionais. Considere o exemplo da “Rede Relâmpago”.
A Lightning Network é uma solução fora da cadeia que permite transações de pagamento pequenas e frequentes. Ele é executado em cima do blockchain Bitcoin e não registra todas as transações lá. Esta solução registra apenas um resumo periódico das transações no blockchain Bitcoin.
Uma vez que o sistema não confirma todas as transações intermediárias no blockchain Bitcoin, os usuários precisavam ter certeza de que suas transações intermediárias estavam seguras. O bug da maleabilidade não permitiria essa confiança. A implementação do Bitcoin SegWit também ajudou no desenvolvimento da Lightning Network.
Apesar dos muitos benefícios do SegWit, você não deve considerá-lo como uma solução de escalonamento de Bitcoin avançada. Esta não é uma medida de escalabilidade automatizada, foi um desvio único do limite de tamanho do bloco Bitcoin. Além disso, um aumento efetivo no tamanho do bloco pode fazer com que os nós mais lentos demorem mais para carregar blocos de Bitcoin no futuro.
Bitcoin SegWit foi implementado em agosto de 2017, após muitos debates na comunidade Bitcoin sobre seus prós e contras. No entanto, a adoção está longe de ser concluída e você pode ver as estatísticas aqui.
Como desenvolvedor de Bitcoin ou blockchain, você pode encontrar lições importantes da implementação do Bitcoin SegWit. Considere os aspectos de escalabilidade, segurança e descentralização de longo prazo ao desenvolver suas propostas de melhoria.