O que é Segregated Witness (SegWit)?

O guia para principiantes de Bitcoin SegWit 💭
O Segregated Witness (SegWit) foi uma atualização feita no código-fonte do Bitcoin a 1 de agosto de 2017.
Apesar de introduzir o que muitos consideraram melhorias na 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 mais rápido de usar.
A tensão causou uma cisão dentro da comunidade, culminando no primeiro soft fork ativado por utilizadores 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é hoje, 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 “Bitcoin independence day”. 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 como aconteceram e desvendar a história por detrás do SegWit.
Bitcoin antes de 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 dentro de um determinado bloco.
Quando o Bitcoin foi lançado em 2009, o(s) seu(s) criador(es) Satoshi Nakamoto não definiram 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 distribuídos de negação de serviço (DDoS) que poderiam afetar a rede.
Esta capacidade fixa nos blocos teve o efeito indesejado de restringir o potencial de dimensionamento do Bitcoin de várias formas.
Baixa taxa de processamento e tempos de transação lentos
Apenas um número limitado de transações pode caber no bloco comparativamente pequeno de 1 MB 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 — um contraste acentuado com as 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” estava ciente do bitcoin, não era necessariamente um grande problema. Mas, se a rede Bitcoin se quisesse tornar um “sistema de caixa eletrónico ponto a ponto” global, como Satoshi imaginou no white paper do Bitcoin, as coisas precisavam de mudar.
Taxas elevadas
A baixa capacidade de processamento da Bitcoin, limitada pela sua pequena capacidade de bloco, significava que as taxas também eram comparativamente muito mais altas do que são hoje.
Eis uma forma fácil de compreender esta questão. Imagine que você está de pé no exterior, no meio de uma multidão de pessoas, depois de assistir a um espetáculo de teatro. Toda a gente do teatro quer apanhar um táxi para casa ao mesmo tempo. Se houver muitos táxis disponíveis, deverá ser fácil para todos chegarem a casa. Mas, se houver apenas alguns táxis, as pessoas podem tentar pagar um preço mais alto aos taxistas para os incentivar a levá-las para casa primeiro. Dependendo da procura, os preços dos táxis podem subir significativamente acima da tarifa normal.
As taxas da Bitcoin funcionam com base nos 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 competição entre os utilizadores, o que pode fazer com que as taxas de transação subam acentuadamente.
Maleabilidade de transação
Outra nuance inerente à forma como os blocos da Bitcoin funcionavam era conhecida como maleabilidade de transação. Antes da 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. Você pode aprender mais sobre funções hash no nosso artigo Como é que as criptomoedas usam a criptografia?
Mas, para simplificar, você 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 novo hash inteiramente, o que poderia por vezes confundir o software cliente da blockchain. Todos os nós executam software cliente para interagir com a blockchain e desempenhar papéis importantes, como a verificação de dados.
Este erro de maleabilidade no código da 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 Mt. Gox exchange. Eles fizeram isto, em parte, ao alterar o ID de 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 ao(s) hacker(s) desviar mais de 840.000 BTC da exchange.
Que melhorias fez a SegWit? ⚙️
O contribuinte da 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. A SegWit melhorou a escalabilidade da 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 na rede.
Separar a assinatura digital e as informações da transação
A proposta de Wuille aumentou a capacidade do bloco Bitcoin ao "segregar" os dados "witness" 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 Bitcoin. A transação coinbase é responsável pela emissão de criptomoeda recém-cunhada em circulação como recompensa pelo processo de mineração de bitcoin.
Os mineiros que conseguem vencer a competição de proof-of-work baseada em criptografia da Bitcoin ganham estes tokens recém-cunhados como "recompensas de bloco".
Os dados witness, também conhecidos como ScriptSig ou Unlocking Script, incluem a assinatura digital e informações de chave pública necessárias para desbloquear o bitcoin transferido. A atualização SegWit introduziu um "campo witness" separado para a parte ScriptSig de uma transação.
Ao processar as informações de 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, a Bitcoin pode processar entre 7-10 transações SegWit por segundo. O aumento da capacidade também significa taxas mais baixas, pois a blockchain da Bitcoin pode lidar com um volume maior de transações.
Apesar da separação, é importante notar que os nós ainda processam os dados da transação e os dados witness on-chain. Não são utilizados sidechain ou protocolos Layer 2.
Peso do bloco
Antes da SegWit, os mineiros mediam os blocos de bitcoin por tamanho (em bytes). Este sistema funcionava bem quando os blocos continham dados witness e de transação, mas encontrava problemas quando estes eram separados.
Para superar isto, 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 witness) * 3 + Tamanho total da transação em bytes.
Ao remover os dados do campo witness 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 witness. Isto 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 witness. No entanto, isto não é possível na prática.
O principal benefício do sistema ponderado é que incentiva os mineiros a processar blocos que contêm principalmente transações SegWit. Assumindo que as transações SegWit têm as mesmas taxas que os blocos legados, um mineiro pode processar muito mais transações SegWit por bloco. Quanto mais transações processam por bloco, mais taxas ganham.
Uma situação vantajosa para ambas as partes. Ou assim se pensaria.
Sem mais problemas de maleabilidade de transações
Na estrutura SegWit, o ID da transação com hash contém apenas as informações da transação, não as informações do campo witness.
Esta alteração remove o componente modificável de uma transação de bitcoin que anteriormente permitia ataques de maleabilidade.
Como resultado, soluções secundárias de escalabilidade, como a Bitcoin Lightning Network, tornaram-se possíveis.
Porque é que o SegWit foi controverso? 🤔
Muitos na comunidade de desenvolvimento sentiram que o SegWit não foi suficientemente longe para resolver os problemas de escalabilidade do Bitcoin.
Os principais argumentos contra a ativação do SegWit incluem:
- A taxa de transferência aumentada do Bitcoin de 7 a 10 transações por segundo ainda está longe de ser suficiente 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 negaria o mecanismo ASICBOOST da Bitmain; um exploit usado para aumentar significativamente a eficiência dos equipamentos de mineração.
Cerca de um ano após a proposta de Wuille, ele e outros programadores da Bitcoin Core, incluindo Eric Lombrozo, prepararam 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 consolidar a sua implementação, mais de 95% de todos os mineradores de bitcoin precisariam de demonstrar apoio ao SegWit nas primeiras duas semanas da sua introduçã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, ainda estavam 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 da Bitcoin imporem um soft fork numa publicação online na 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 conseguisse obter apoio suficiente dos mineradores, o resultado levaria invariavelmente a uma divisão da cadeia.
Aqueles 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 2 MB.
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 New York agreement 🗽
As principais empresas do setor reuniram-se na Consensus 2017 e assinaram coletivamente um memorando apelidado de "New York Agreement". Este documento estabelecia planos para que o SegWit fosse lançado no verão e para que o tamanho do bloco do Bitcoin aumentasse para 2 MB até novembro.
Antes de novembro, Shaolinfry elaborou duas Bitcoin Improvement Proposals (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 última forneceu 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 uma nova BIP; BIP91. A sua solução procurava tornar o SegWit 2X e o BIP148 compatíveis entre si. Porque arriscar uma divisão da cadeia por duas atualizações SegWit concorrentes quando as pode tornar ambas compatíveis?
A 1 de agosto, apoio suficiente da mineração consolidou a ativação do SegWit. A segunda fase do New York Agreement, no entanto, não conseguiu receber o mesmo apoio.
A falha em aumentar o tamanho do bloco do Bitcoin para 2 MB resultou na formação do Bitcoin Cash (BCH) — um novo projeto bifurcado da blockchain do Bitcoin.
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 mais ampla.
O SegWit demonstrou a importância do consenso quando se tratava de alterações à 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 consenso como um grupo coletivo — não sob a direção de um único indivíduo.
Comece a comprar Bitcoin
Agora que aprendeu tudo sobre SegWit, está pronto para continuar a sua jornada crypto e comprar bitcoin?
Consulte o nosso guia Kraken Learn Center para mais informações sobre Como comprar Bitcoin (BTC) e registe-se para abrir uma conta na Kraken hoje.
