Bitcoin Guides

Advanced

Tecnologia Bitcoin: Testemunha Segregada (SegWit)

Tecnologia Bitcoin: Testemunha Segregada (SegWit). Segregated Witness (SegWit) é uma atualização de protocolo implementada destinada a fornecer proteção contra maleabilidade de transações e aumentar a capacidade do bloco.
SegWit separa a testemunha da lista de entradas. A testemunha contém dados necessários para verificar a validade da transação, mas não é necessária para determinar os efeitos da transação.
Para realmente entender como o SegWit funciona, vamos nos concentrar em dois conceitos distintos: peso de bloco e garfos macios.
Tamanho do bloco Bitcoin e garfos
Para falar com precisão sobre tamanhos de blocos, é importante entender como o tamanho do bloco é medido. O tamanho do bloco é simplesmente o tamanho em bytes do bloco serializado (o cabeçalho do bloco, o número de transações e as próprias transações).
Como parte das regras de consenso, cada nó na rede Bitcoin atualmente verifica se um bloco é inferior a 1.000.000 bytes. Um bloco com mais de 1.000.000 bytes será rejeitado por esses nós como uma regra de consenso.
Como nós herdados (nós que não atualizam) rejeitarão um bloco com mais de 1.000.000 bytes, qualquer fork flexível deve manter essa regra. Mas como você pode aumentar o tamanho do bloco e ainda manter essa regra? Os blocos maiores através de um garfo macio são ainda possíveis?
A principal visão é que uma grande parte da transação, a ScriptSIG (chave pública), não pode essencialmente ser enviada para nós legados para que uma transação seja contada como válida. O fato de que isso pode ser feito como um fork macio e permitir mais transações é um avanço de engenharia.
As transações não-segwit colocam o ScriptSIG no meio da transação. As transações SegWit colocam o ScriptSIG no final. A parte ScriptSIG das transações SegWit é chamada de “dados testemunha”. Quando transações SegWit são enviadas para nós herdados, os dados testemunha são removidos. A chave é que essas transações “removidas” ainda são transações válidas em nós herdados, o que nos dá uma economia de espaço em relação a transações não-segwit. Portanto, mais transações podem caber no bloco enviado para nós herdados sem ultrapassar o limite de 1.000.000 bytes.
Os nós SegWit recebem transações SegWit e blocos que incluem os dados testemunha usando mensagens de rede alternativas. Os blocos SegWit que incluem os dados testemunha podem ter mais de 1.000.000 bytes. Os nós herdados, como mencionado, recebem os mesmos blocos e transações, mas com os dados da testemunha removidos. Esta é uma maneira de tornar o SegWit um soft fork, o que significa que não é obrigatório atualizar seu software para participar de consenso.
SegWit e peso do bloco
Um problema óbvio para um crítico SegWit seria o fato de que precisa haver um limite superior, caso contrário o tamanho do bloco poderia potencialmente escalar indefinidamente - o que é um grande problema para a tolerância a falhas dos nós.
Para restringir blocos SegWit, os criadores de SegWit em vez disso veio com uma restrição diferente de tamanho. Os blocos SegWit são restritos por algo chamado peso do bloco. O peso do bloco é um novo conceito introduzido no SegWit, e é calculado em uma base por transação. Em essência, cada transação tem um “peso”.
As transações que têm zero dados de testemunha são mais leves do que aquelas com dados de testemunha. Observe que as transações SegWit são transmitidas para nós herdados sem dados testemunha, portanto isso sempre resultará em blocos comunicados aos nós herdados que são menores ou iguais a 1.000.000 bytes.
Um conceito-chave a entender é que as transações SegWit podem ter muitos pesos diferentes dependendo de quanto da transação é tomada por dados testemunha, o que dá aos criadores de transações muito mais espaço para brincar com maleabilidade de transação.

Disclaimer: The views and opinions expressed by the author should not be considered as financial advice. We do not give advice on financial products.