SegWit mudou as regras do Bitcoin ao separar dados que comprovam o direito de gastar, como assinaturas, da parte usada para calcular o identificador básico da transação. Também mudou a medição da capacidade dos blocos. Para o usuário, isso pode significar pagamentos mais econômicos em espaço; para desenvolvedores, uma forma mais confiável de encadear transações.
Ao enviar, a carteira informa quais fundos recebidos antes serão gastos e quais novos valores irão ao destinatário e, se necessário, voltarão a você como troco. Ela também deve comprovar o direito de gastar os fundos. Assinaturas e outros dados de verificação cumprem esse papel. SegWit os colocou em uma parte chamada witness. Aqui, o nome significa uma prova de que as condições de gasto foram atendidas, não uma pessoa presenciando o pagamento. Os dados não foram descartados nem levados para fora do Bitcoin: nós que aplicam as regras SegWit continuam verificando-os. [1]
A carteira acompanha o pagamento pelo txid. Uma transação posterior também usa esse identificador para apontar os fundos que quer gastar. Antes, alterar certos dados de assinatura podia mudar o txid sem mudar destinatários ou valores. Isso dificultava encadear pagamentos ainda não confirmados. SegWit calcula txid sem o witness; alterar apenas o witness não o modifica. Para proteger toda a transação desse problema, todas as entradas precisam usar SegWit. Alterar destinatários ou entradas ainda pode mudar o txid. Referências mais estáveis também facilitaram Lightning Network, uma rede de pagamentos por canais. Um segundo identificador, wtxid, inclui o witness. [1] [4]
SegWit introduziu o peso em vez de contar todos os bytes da mesma forma. Um byte de dados básicos custa 4 unidades de peso; um byte adicional de witness custa 1. O bloco inteiro tem limite de 4.000.000 de unidades. Por exemplo, uma transação com 100 bytes básicos e outros 100 de witness pesa 500 unidades e tem tamanho virtual de 125 vB. Esse tamanho serve para calcular a taxa no valor escolhido em sat/vB. A economia depende, portanto, da estrutura; a demanda por espaço continua influenciando a taxa por tamanho. O limite de peso não significa que todos os blocos tenham os mesmos megabytes nem que todo pagamento SegWit seja mais barato. [1]
Na rede principal do Bitcoin, endereços SegWit nativos de versão 0 começam com bc1q. P2WPKH e P2WSH distinguem duas condições de gasto: um pagamento comum controlado por chave e outro com um script, um conjunto de regras. SegWit também pode ser encapsulado no formato anterior P2SH, com endereço começando por 3; o 3 sozinho não prova o uso de SegWit. Taproot usa witness de versão 1 e endereços bc1p. Logo, bc1 não identifica um único tipo de pagamento. No uso cotidiano, confira a compatibilidade da carteira remetente e o endereço completo do destinatário; nenhum desses prefixos, sozinho, promete anonimato. [1] [2] [3]
A mudança foi projetada como um Soft Fork: regras mais estritas compatíveis com as antigas. Um nó antigo, porém, não verifica sozinho todas as novas condições SegWit. O witness é vinculado criptograficamente ao bloco por um witness commitment na coinbase, a primeira transação do bloco. Assinaturas não são, portanto, anexos opcionais que uma validação completa possa ignorar. BIP 141 também expressa o peso como três vezes o tamanho básico mais o tamanho total; o tamanho virtual é o peso dividido por quatro, arredondado para cima. São descrições da mesma contabilização, não dois limites diferentes. [1]
Para ter uma visão mais completa, leia este verbete junto com Transação, Transaction Fees, Lightning Network, Taproot. Também há referências a este verbete em Transação, Transaction Fees, Taproot, Lightning Network.