SegWit (abreviatura de Segregated Witness, «testemuña segregada») é unha actualización do protocolo Bitcoin activada o 24 de agosto de 2017. Separa determinados datos que autorizan o gasto das moedas da parte da transacción utilizada para calcular o seu identificador. Isto corrixe formas de maleabilidade e permite aproveitar de maneira distinta a capacidade dos bloques. Proposta asignada o 21 de decembro de 2015; versión do repositorio fixada na ligazón.

A actualización introduciu o peso dos bloques, cun límite de 4 000 000 de unidades. Os bytes da parte base e os datos adicionais teñen pesos diferentes, polo que ese límite non equivale a un tamaño único de bloque expresado en megabytes.

Historia Límite de tamaño dos bloques Bitcoin é unha criptomoeda, unha forma de moeda que emprega a criptografía para manter a seguridade das transaccións. Un conxunto de transaccións de bitcoin precedido por unha cabeceira de bloque, protexido mediante unha proba de traballo e rexistrado nunha rede de computadores denomínase «bloque». Cada bloque posterior ao inicial almacena na súa cabeceira o hash criptográfico da cabeceira do bloque anterior. Isto forma unha cadea de bloques.

As transaccións rexistran entradas que gastan saídas anteriores e novas saídas coas súas condicións de gasto; os seus datos de autorización poden incluír sinaturas. Estes campos non identifican necesariamente persoas. O código inicial non incluía o parámetro explícito de tamaño máximo de bloque de 1 MB. A constante MAX_BLOCK_SIZE = 1000000 incorporouse ao código o 15 de xullo de 2010. Antes de SegWit, o límite de consenso era de 1 000 000 bytes por bloque.

Escalabilidade e maleabilidade A escalabilidade e a maleabilidade das transaccións figuraban entre os problemas que motivaron a proposta SegWit.

Escalabilidade

Engádese un novo bloque á cadea a intervalos aleatorios cunha media obxectivo de dez minutos, regulada mediante o axuste da dificultade da proba de traballo. Xunto co límite de capacidade dos bloques, isto limita o número de transaccións que se poden procesar nun tempo determinado. Unha alternativa son os «pagamentos fóra da cadea»: nunha canle de micropagamento intercámbianse actualizacións sen publicalas individualmente, aínda que o financiamento e a liquidación si empregan transaccións na cadea. Os requisitos de confianza e os riscos dependen do deseño da canle.

Maleabilidade

Unha transacción utiliza saídas sen usar dunha ou varias transaccións anteriores, coñecidas como saídas de transacción non gastadas (UTXO). Isto dá lugar a unha cadea de transaccións relacionadas, enlazadas polo seu identificador de transacción. Nos formatos afectados pola maleabilidade, é posible modificar unha transacción sen confirmar sen invalidala e cambiar así o seu identificador. Se se confirma a versión modificada, as transaccións fillas que referencian o identificador orixinal non poden confirmarse tal como foron construídas.

Funcionamento A parte base da transacción conserva as entradas e saídas. Na serialización ampliada, os datos da testemuña sitúanse despois das saídas e antes de nLockTime. Estes datos non forman parte do identificador tradicional, txid, pero si dun segundo identificador, wtxid. A transacción coinbase incorpora un compromiso criptográfico coa raíz da árbore de Merkle dos identificadores que inclúen as testemuñas.

O peso calcúlase como tres veces o tamaño base máis o tamaño total. Equivale a catro unidades por byte base e unha por byte adicional; o límite por bloque é de 4 000 000 unidades. A separación evita determinadas modificacións do txid por cambios nos datos de sinatura, baixo as condicións especificadas para as entradas SegWit. Os nós actualizados seguen a verificar as sinaturas e as demais regras de validez.

Activación A xanela de activación programouse desde as 00:00 UTC do 15 de novembro de 2016, cunha data límite ás 00:00 UTC do 15 de novembro de 2017.

O mecanismo de activación requiría que polo menos 1916 dos 2016 bloques dun período de axuste da dificultade sinalasen apoio, un limiar do 95 %. Despois debía transcorrer un período completo no estado LOCKED_IN antes da activación. Proposta asignada o 4 de outubro de 2015.

Os 2016 bloques do período comprendido entre as alturas 477 792 e 479 807 sinalaron apoio a SegWit. O 9 de agosto de 2017, no bloque 479 808, a actualización quedou «asegurada» (locked in) e pasou ao período de espera previo á activación. Actualizado o 26 de agosto de 2026.

SegWit activouse o 24 de agosto de 2017 á altura de bloque 481 824.

SegWit contribúe á escalabilidade de dous xeitos: A ponderación dos datos da testemuña permite incluír máis datos de transacción nun bloque, segundo a súa composición, dentro do límite de 4 000 000 unidades de peso. A corrección da maleabilidade facilita canles de pagamento como as da Rede Lightning, que permiten realizar pagamentos fóra da cadea sen rexistrar cada un individualmente nun bloque. Isto non supón unha capacidade ilimitada nin a eliminación de todas as restricións de escalabilidade.

Antes da activación de SegWit, o 1 de agosto de 2017, produciuse a división que creou Bitcoin Cash. Impulsouna un pequeno grupo de mineiros de bitcoin, na súa maioría establecidos na China, que defendían plans alternativos de ampliación. Despacho de Reuters.

A finais de febreiro de 2018, as transaccións que empregaban SegWit alcanzaron arredor do 30 % do total.

SegWit2x A testemuña segregada (BIP 141) non se debe confundir con SegWit2x (SegWit2Mb). En maio de 2017, Digital Currency Group anunciou unha proposta, denominada SegWit2x («Acordo de Nova York»), que activaría a testemuña segregada cun limiar do 80 % da taxa de hash, sinalizando no bit 4, e introduciría mediante unha bifurcación dura un límite de tamaño base de bloque de 2 MB nun prazo de seis meses. O apoio declarado daquela superaba o 80 % da taxa de hash total de bitcoin. A implementación BTC1 desa segunda fase prevía 2 000 000 bytes de tamaño base e 8 000 000 unidades de peso, fronte ás 4 000 000 de SegWit.

En xuño de 2017, CoinDesk informaba de que a proposta contaba co apoio de case o 90 % da taxa de hash. Parte da controversia referíase á coordinación en canles ás que se accedía por invitación, aínda que o código era público. En xullo, os promotores buscaban coordinar o apoio á activación de SegWit antes da bifurcación branda activada polos usuarios (UASF) prevista para o 1 de agosto, para reducir o risco de división da rede. A prensa tamén recollía o desacordo xeral sobre a ampliación e o temor a unha división.

O 8 de novembro de 2017, os promotores de SegWit2x anunciaron a suspensión da bifurcación dura prevista para arredor do 16 de novembro de 2017 por non teren acadado consenso suficiente. Comunicado asinado por seis promotores.

Notas

Categoría:Cadea de bloques