O que é Segregated Witness (SegWit)?

Por Kraken Learn team
11 mín.
26 de novembro de 2024

O guia para principiantes do Bitcoin SegWit 💭

Segregated Witness (SegWit) foi uma atualização feita ao código-fonte do Bitcoin a 1 de agosto de 2017.

Apesar de trazer o que muitos consideraram melhorias para a blockchain do Bitcoin, o SegWit foi recebido com forte oposição que dividiu a comunidade. 

No cerne da questão estava um interesse concorrente entre a rentabilidade dos mineradores e os programadores da rede que procuravam tornar o Bitcoin mais barato e rápido de usar.

A tensão causou uma rutura na comunidade, culminando no primeiro soft fork ativado pelo utilizador da rede e numa divisão hostil. A divisão deu origem a uma série de novos projetos bifurcados do Bitcoin, incluindo o Bitcoin Cash.

Até à data, o SegWit continua a ser um dos eventos mais controversos na história do Bitcoin. Mas também provou ser uma das suas atualizações mais importantes para a viabilidade a longo prazo do protocolo. 

Todos os anos, muitos na comunidade Bitcoin celebram o dia 1 de agosto como o “dia da independência do Bitcoin”. Este evento marca a ocasião em que a vontade do povo triunfou contra os interesses centralizados das empresas de mineração de bitcoin estabelecidas.

Vamos explorar cada um destes eventos à medida que aconteceram e desvendar a história por trás do SegWit.

BTC icon
68 139.00
-1,60%
24H
btc

Bitcoin antes do SegWit ⏮️

Antes da ativação do SegWit, a capacidade de bloco do Bitcoin permaneceu inalterada por muitos anos. A capacidade de bloco refere-se ao número máximo de transações que podem ser registadas num determinado bloco.

Quando o Bitcoin foi lançado em 2009, o(s) seu(s) criador(es) Satoshi Nakamoto não definiu quaisquer parâmetros para o tamanho dos blocos de bitcoin.

No entanto, em 2010, Nakamoto adicionou secretamente um limite de tamanho de bloco de 1 megabyte (MB) sem a aprovação de outros contribuidores do Bitcoin.

Muitos acreditavam que Nakamoto incluiu o limite para evitar futuros ataques de negação de serviço distribuída (DDoS) que poderiam afetar a rede.

Este limite fixo na capacidade de bloco teve o efeito indesejado de restringir o potencial do Bitcoin para escalar de várias formas.

Baixo débito e tempos de transação lentos

Apenas um número limitado de transações pode caber no bloco de 1 MB comparativamente pequeno que o Bitcoin agora adotou. Esta pequena capacidade significava que a rede Bitcoin só conseguia processar cerca de 2 a 3 transações de bitcoin (BTC) por segundo — muito longe das redes de pagamento digitais tradicionais que podem processar dezenas de milhares de transações por segundo.

Além disso, para que um bloco de transações seja considerado válido como parte do processo de mineração de bitcoin, deve receber seis confirmações. Por outras palavras, seis novos blocos devem ser adicionados à blockchain após o bloco em questão antes de ser finalizado. Com um tempo médio de bloco de dez minutos, isto significa que as confirmações de bloco de bitcoin demoram cerca de uma hora.

Na altura, quando apenas um punhado de criptógrafos “Cypherpunk” tinha conhecimento do bitcoin, não era necessariamente um grande problema. Mas, se a rede Bitcoin se tornasse um “sistema de dinheiro eletrónico peer-to-peer” global, como Satoshi previu no white paper do Bitcoin, as coisas precisavam de mudar.

Taxas elevadas

O baixo débito do Bitcoin, limitado pela sua pequena capacidade de bloco, significava que as taxas também eram comparativamente muito mais altas do que são hoje.

Aqui está uma forma fácil de entender este problema. Imagine que está na rua no meio de uma multidão de pessoas depois de assistir a um espetáculo de teatro. Todos do teatro querem ir para casa de táxi ao mesmo tempo. Se houver muitos táxis disponíveis, deve ser fácil para todos chegarem a casa. Mas, se houver apenas um punhado de táxis, as pessoas podem tentar pagar um preço mais alto aos taxistas para os incentivar a levá-los para casa primeiro. Dependendo da procura, os preços dos táxis podem subir significativamente acima da tarifa normal.

As taxas do Bitcoin funcionam com base nestes mesmos princípios de oferta e procura. Se muitas pessoas quiserem que as suas transações sejam processadas ao mesmo tempo, algumas podem optar por pagar mais em taxas para que a sua transação seja processada mais cedo pelos mineradores. Durante períodos de alta utilização na rede Bitcoin, o congestionamento pode resultar em concorrência entre os utilizadores, o que pode fazer com que as taxas de transação aumentem drasticamente.

Maleabilidade de transação

Outra nuance inerente à forma como os blocos de Bitcoin funcionavam era conhecida como maleabilidade de transação. Antes do SegWit, as pessoas podiam alterar o ID de uma transação antes de esta receber confirmações suficientes na blockchain.

Pegar nas informações relacionadas com uma transação específica e executá-las através de uma função hash cria um ID de transação. Pode saber mais sobre funções hash no nosso artigo Como as criptomoedas usam a criptografia?

Mas, para simplificar, pode pensar nestes IDs de transação como impressões digitais que são usadas para identificar e referenciar transações na blockchain.

Alterar o ID da transação cria um hash inteiramente novo que, por vezes, podia confundir o software cliente da blockchain. Todos os nós executam software cliente para interagir com a blockchain e desempenhar funções importantes, como a verificação de dados.

Este erro de maleabilidade no código do Bitcoin abriu a porta a ataques maliciosos. Um dos exemplos mais infames de um ataque de maleabilidade de transação foi o hack da exchange Mt. Gox em 2014 — conhecido por ser o maior hack de bitcoin da história.

Especialistas relataram que um hacker, ou grupo de hackers, esvaziou a carteira de bitcoin da exchange Mt. Gox. Fizeram-no, em parte, alterando o ID da transação dos seus levantamentos. 

O ataque de maleabilidade de transação fez parecer que os levantamentos não estavam a ser confirmados na blockchain, quando na verdade estavam.

Esta vulnerabilidade, juntamente com outros vetores de ataque, permitiu que o(s) hacker(s) desviasse(m) mais de 840.000 BTC da exchange.

Que melhorias o SegWit trouxe? ⚙️

O contribuinte do Bitcoin, Pieter Wuille, apresentou pela primeira vez a atualização SegWit num evento Bitcoin Hong Kong em 2015.

A sua solução foi inovadora em três frentes. O SegWit melhorou a escalabilidade do Bitcoin, removeu a maleabilidade e permitiu que os nós adotassem a nova estrutura de transação. O melhor de tudo é que isto poderia ser implementado sem um hard fork da rede.

Informações separadas de assinatura digital e transação

A proposta de Wuille aumentou a capacidade de bloco do Bitcoin ao “segregar” os dados de “testemunha” de um bloco e movê-los para a transação coinbase. As transações coinbase são as primeiras transações dentro de cada novo bloco de Bitcoin. A transação coinbase é responsável por emitir criptomoedas recém-cunhadas em circulação como recompensa pelo processo de mineração de bitcoin.

Os mineradores que conseguem vencer a competição de prova de trabalho baseada em criptografia do Bitcoin ganham estes tokens recém-cunhados como “recompensas de bloco”.

Os dados de testemunha, também conhecidos como ScriptSig ou Script de Desbloqueio, incluem a assinatura digital e informações da chave pública necessárias para desbloquear o bitcoin transferido. A atualização SegWit introduziu um “campo de testemunha” separado para a parte ScriptSig de uma transação.

Ao processar as informações da assinatura digital separadamente do campo de entrada da transação, havia mais espaço para as transações caberem em cada bloco.

Mais transações por bloco equivalem a maiores capacidades de débito de transações. Assim, em vez de 2-3 transações por segundo, o Bitcoin pode processar entre 7-10 transações SegWit por segundo. O aumento da capacidade também significa taxas mais baixas, uma vez que a blockchain do Bitcoin pode lidar com um volume maior de transações.

Apesar da separação, é importante notar que os nós ainda processam tanto os dados da transação quanto os dados da testemunha on-chain. Nenhum sidechain ou protocolo de Camada 2 é usado.

Peso do bloco

Antes do SegWit, os mineradores mediam os blocos de bitcoin por tamanho (em bytes). Este sistema funcionava bem quando os blocos continham dados de testemunha e de transação, mas encontrava problemas quando eram separados.

Para superar isso, a atualização introduziu uma métrica chamada peso do bloco para gerir o tamanho dos blocos.

Com este conceito, cada bloco de 1 megabyte consiste em 4.000.000 unidades de peso (WU). Cada transação recebe um peso com base na seguinte fórmula:

Tamanho base da transação em bytes (sem dados de testemunha) * 3 + Tamanho total da transação em bytes.

Ao remover os dados do campo de testemunha do cálculo, as transações SegWit têm um peso muito menor. Por outro lado, uma transação não-SegWit ainda contém dados de testemunha. Isso significa que as transações não-SegWit pesam sempre 4 vezes mais do que as transações SegWit.

Este conceito aumenta teoricamente o tamanho de um bloco de bitcoin de 1MB para 4MB, se um bloco consistir quase inteiramente em dados de testemunha. No entanto, isso não é possível na prática.

O principal benefício do sistema ponderado é que ele incentiva os mineradores a processar blocos contendo principalmente transações SegWit. Assumindo que as transações SegWit têm as mesmas taxas que os blocos legados, um minerador pode processar muito mais transações SegWit por bloco. Quanto mais transações processarem por bloco, mais taxas ganham.

Um ganho para ambas as partes. Ou assim se pensaria.

Fim dos problemas de maleabilidade de transação

Sob a estrutura SegWit, o ID de transação com hash contém apenas as informações da transação, não as informações do campo de testemunha.

Esta alteração remove o componente modificável de uma transação de bitcoin que anteriormente permitia ataques de maleabilidade.

Como resultado, soluções de escalabilidade secundárias, como a Rede Lightning do Bitcoin, tornaram-se possíveis.

 

Por que o SegWit foi controverso? 🤔

Muitos na comunidade de desenvolvimento sentiram que o SegWit não foi longe o suficiente para resolver os problemas de escalabilidade do Bitcoin.

Os principais argumentos contra a ativação do SegWit incluem:

  • O débito aumentado do Bitcoin de 7-10 transações por segundo ainda não é suficientemente alto para um sistema de pagamento global descentralizado.
  • As taxas permaneceriam relativamente altas, tornando coisas como microtransações financeiramente inviáveis.
  • Os mineradores ainda podem processar blocos de transações legados, o que significa que a maleabilidade ainda é uma ameaça.
  • Mais tarde, descobriu-se que o SegWit anularia o mecanismo ASICBOOST da Bitmain; um exploit usado para aumentar significativamente a eficiência das plataformas de mineração.

Cerca de um ano após a proposta de Wuille, ele e outros programadores do Bitcoin Core, incluindo Eric Lombrozo, tinham preparado o código para ser lançado na próxima atualização do Bitcoin Core 0.13.1. O único passo restante para ativar o SegWit era que os mineradores começassem a processar novos blocos SegWit. 

Para cimentar a sua implementação, mais de 95% de todos os mineradores de bitcoin precisariam de mostrar apoio ao SegWit nas primeiras duas semanas da sua iniciação — um grande obstáculo, considerando as circunstâncias da época.

Soft fork ativado pelo utilizador

Escusado será dizer que grandes empresas de mineração, como a Bitmain, continuavam insatisfeitas com as alterações propostas e recusaram-se a apoiar a ativação do SegWit.

No início de 2017, um programador pseudónimo chamado “Shaolinfry” levantou a possibilidade de os nós Bitcoin imporem um soft fork numa publicação online de bitcoin-dev

Um soft fork ativado pelo utilizador nunca tinha sido tentado na rede Bitcoin antes, mas permitiria aos programadores implementar o SegWit com cerca de 51% de apoio dos mineradores. Aqueles que se recusassem a apoiar novos blocos corriam o risco de ter os seus blocos rejeitados pelos nós. A solução não estava isenta de riscos. Se o SegWit não recebesse apoio suficiente dos mineradores, o resultado levaria invariavelmente a uma divisão da cadeia.

Aqueles que eram contra o SegWit propuseram uma atualização de hard fork SegWit 2X diferente. Uma que implementaria o SegWit e aumentaria o tamanho do bloco do Bitcoin para 2MB.

Ao contrário da atualização anterior, o SegWit 2X não seria retrocompatível com as versões anteriores do cliente Bitcoin. Estas alterações significavam que os nós teriam de atualizar o seu software para continuar a operar na rede.

SegWit e o Acordo de Nova Iorque 🗽

As principais empresas do setor reuniram-se na Consensus 2017 e assinaram coletivamente um memorando apelidado de "Acordo de Nova Iorque". Este documento estabelecia planos para o SegWit entrar em funcionamento no verão e para o tamanho do bloco do Bitcoin aumentar para 2MB até novembro.

Antes de novembro, Shaolinfry elaborou duas Propostas de Melhoria do Bitcoin (BIPs); BIP148 e BIP149. A primeira representava uma solução rápida e eficaz; sinalizar apoio para blocos SegWit ou os nós rejeitarão os seus blocos. A segunda fornecia um horizonte de tempo mais longo para os mineradores aderirem, estabelecendo um prazo de ativação para julho do ano seguinte.

À medida que a data se aproximava, o engenheiro de garantia da Bitmain, James Hillard, propôs um novo BIP; BIP91. A sua solução procurava tornar o SegWit 2X e o BIP148 compatíveis entre si. Por que arriscar uma divisão da cadeia devido a duas atualizações SegWit concorrentes quando se pode torná-las ambas compatíveis?

A 1 de agosto, o apoio de mineração suficiente consolidou a ativação do SegWit. A segunda fase do Acordo de Nova Iorque, no entanto, não conseguiu obter o mesmo apoio.

A falha em aumentar o tamanho do bloco do Bitcoin para 2MB resultou na formação do Bitcoin Cash (BCH) — um novo projeto bifurcado da blockchain do Bitcoin.

366.19
-1,65%
24H
bch

A importância do dia da independência do Bitcoin

A introdução do SegWit e a decisão da comunidade de rejeitar o aumento do tamanho do bloco representaram um momento marcante para a comunidade Bitcoin em geral.

O SegWit demonstrou a importância do consenso no que diz respeito às alterações na blockchain do Bitcoin, bem como a extensão da descentralização do poder que o Bitcoin oferecia.

Nenhum indivíduo conseguiu assumir o controlo da rede e levar a sua proposta avante.

Em vez disso, a comunidade debateu, iterou e continuou o longo processo de alcançar o consenso como um grupo coletivo — e não sob a direção de um único indivíduo.

Comece a comprar Bitcoin

Agora que aprendeu tudo sobre o SegWit, está pronto para continuar a sua jornada cripto e comprar bitcoin?

Consulte o nosso guia do Kraken Learn Center para obter mais informações sobre Como comprar Bitcoin (BTC) e crie uma conta na Kraken hoje mesmo.