No sistema do Bitcoin, todas as transações são gravadas permanentemente na blockchain. É este atributo que permite o Bitcoin ser completamente descentralizado.
No entanto, essas transações são compostas de dados que ocupam espaço nos blocos da blockchain. Estes blocos têm atualmente um limite de 1MB o que faz com que as transações estejam limitadas a 3-7 transações por segundo (TPS) sabendo-se que os blocos são emitidos de 10 em 10 minutos. Este limite de 1MB foi imposto de modo a evitar certos vetores de ataque que podiam ser explorados. No entanto, devido à crescente popularidade do Bitcoin, este limite está a ser testado.
De modo que este limite possa ser aumentado existem várias propostas tais como: o Bitcoin Unlimited e SegWit. Hoje, vamos tentar explicar o que é a SegWit, a solução proposta pela equipe de desenvolvimento, Bitcoin Core.
SegWit é a abreviação de Segregated Witnesses e é uma proposta apresentada pela equipe Bitcoin Core. Vem na forma de um soft fork, um upgrade que pode funcionar mesmo se alguns utilizadores não fizerem update no seu software (Sem resultar numa divisão da blockchain). Foi lançada na versão 0.13.1 do Bitcoin Core.
Nas transações do Bitcoin existem três elementos chave. Quem envia, recebe, e as assinaturas (chamadas de testemunhas) e estas ocupam uma grande parte do tamanho da transação. Ao contrário da crença popular, a segwit não separa as assinaturas das transações.
Em vez disso, a SegWit passa a utilizar outra forma de contabilizar o tamanho dos blocos. Em vez de usar um limite de 1MB para os blocos, usa um valor maior. Este limite passa a ser de 4 Milhões de unidades. Neste sistema, cada byte de assinaturas (testemunhas) é contabilizado como uma unidade e cada byte informação restante é contabilizada com quatro unidades. Essencialmente, a SegWit introduz um novo formato de transações.
Isto significa que o tamanho dos blocos é aumentado sem ser necessário um hard-fork. Isto porque depois da SegWit, cada byte de assinaturas é contado como 0.25 bytes, ou seja se as transações tivessem apenas dados de assinaturas, o tamanho máximo seriam aproximadamente 4MB. Isto não significa que a informação fica menor, apenas que é contabilizada de modo a que o limite de 1MB seja aumentado. Esta mudança, só afeta as assinaturas e como tal, cada byte fora das assinaturas ainda é contado como 1 byte (ou 4 unidades). Como tal, os blocos passam a ter uma capacidade de cerca de 2MB.
A vantagem mais evidente da SegWit, é o aumento de capacidade que é introduzido como um formato de transação diferente. No entanto, existem mais vantagens que podem ser vistas aqui.
No entanto, consertar os problemas de maleabilidade de transação é a mais importante. Maleabilidade de transação existe porque as assinaturas que protegem as transações de serem modificadas, não podem proteger a si mesmas. Isto significa que a forma como o id da transação (txid) é calculado permite a qualquer um fazer alterações.
SegWit arranja isto ao remover as assinaturas do id da transação, o que torna impossivel alguem modar os dados da assinatura. Com a SegWit, a txid é depois calculada apartir de dados que não podem ser mudados.
O acerto da Maleabilidade de transação abre o caminho para canais de pagamento como a Lightning Network (LN). Esta é uma das razões pela qual os mineradores e pools não gostam da SegWit. Transações que ocorrem nestes canais de pagamento não fazem parte da network do Bitcoin, o que significa que as taxas não vão para eles.
Para que o SegWit possa ser ativado, é necessário uma taxa de aprovação de 95%. Os mineradores, votam quando incluem a informação nos blocos que estão minando desta forma sinalizam a sua decisão com relação à proposta. O mínimo de 95% é baseado no método de ativação soft-fork da BIP 24 (supermajority), que estipula que é necessário este mínimo de 95%.
Fonte: cryptoportugal.com Adaptação/Tradução: Guia do Bitcoin