Skip to main content

SegWit | Bitcoin Glossary | Mapping Bitcoin

SegWit

Protocolo

Also known as: Segregated Witness, BIP141

Segregated Witness: actualización de 2017 que separó datos de firma de la transacción, corrigiendo maleabilidad y aumentando la capacidad efectiva de red.

Descripción general

Segregated Witness (SegWit), activado el 24 de agosto de 2017, es una de las actualizaciones más significativas al protocolo Bitcoin. Reestructura cómo se organizan los datos de las transacciones moviendo los datos de firma (testigo) a una estructura separada. Este cambio aparentemente simple resolvió varios problemas de larga data: corrigió la maleabilidad de transacciones, habilitó la Lightning Network, aumentó la capacidad efectiva de los bloques e introdujo un descuento de comisiones para los datos de testigo.

Cómo SegWit reestructura las transacciones

Transacción pre-SegWit:           Transacción SegWit:
┌─────────────────────────┐       ┌─────────────────────────┐
│ Versión                 │       │ Versión                 │
├─────────────────────────┤       ├─────────────────────────┤
│ Entradas:               │       │ Marcador + Bandera      │
│  ┌────────────────────┐ │       │ (0x0001)                │
│  │ TXID anterior      │ │       ├─────────────────────────┤
│  │ ScriptSig          │ │       │ Entradas:               │
│  │  (firmas AQUÍ)     │ │       │  ┌────────────────────┐ │
│  └────────────────────┘ │       │  │ TXID anterior      │ │
├─────────────────────────┤       │  │ ScriptSig (vacío)  │ │
│ Salidas                 │       │  └────────────────────┘ │
├─────────────────────────┤       ├─────────────────────────┤
│ Tiempo de bloqueo       │       │ Salidas                 │
└─────────────────────────┘       ├─────────────────────────┤
                                  │ Testigo:                │
 TXID cubre toda la               │  (firmas AQUÍ)          │
 transacción incluyendo           ├─────────────────────────┤
 las firmas                       │ Tiempo de bloqueo       │
                                  └─────────────────────────┘

                                   TXID cubre todo
                                   EXCEPTO los datos de testigo

Problemas resueltos por SegWit

Corrección de la maleabilidad de transacciones

Antes de SegWit, el ID de transacción (TXID) se calculaba sobre toda la transacción, incluyendo las firmas. Dado que las firmas podían modificarse ligeramente sin invalidarlas (maleadas), el TXID podía cambiar después de la difusión. SegWit excluye los datos de testigo del cálculo del TXID, haciendo los TXIDs inmutables. Esto fue un prerrequisito para la Lightning Network, que se basa en cadenas de transacciones pre-firmadas que hacen referencia a TXIDs estables.

Mayor capacidad de bloques

SegWit introdujo el "peso del bloque" (máximo 4 millones de unidades de peso) para reemplazar el límite antiguo de tamaño de bloque de 1 MB. Los datos no-testigo cuentan 4 unidades de peso por byte, mientras que los datos de testigo cuentan 1 unidad de peso por byte. En la práctica, esto permite que los bloques contengan aproximadamente 1,7-2,1 MB de datos totales, dependiendo de la mezcla de transacciones.

Descuento de testigo

El descuento de testigo incentiva la adopción de SegWit al contar los bytes de testigo a una cuarta parte del peso. Esto resulta en menores comisiones para las transacciones P2WPKH y P2TR en comparación con las transacciones P2PKH heredadas, beneficiando a los usuarios que actualizan.

Versiones de SegWit

SegWit introdujo un sistema de versiones para futuras actualizaciones:

  • Testigo v0 — Salidas P2WPKH y P2WSH usando direcciones Bech32 (bc1q...)
  • Testigo v1 — Salidas P2TR (Taproot) usando direcciones Bech32m (bc1p...)
  • Testigo v2-16 — Reservado para futuras actualizaciones, desplegables mediante soft fork

Compatibilidad retroactiva

SegWit se implementó como un soft fork, lo que significa que los nodos no actualizados todavía aceptan los bloques SegWit como válidos (ven las salidas de testigo como "cualquiera puede gastar" pero nunca intentan gastarlas). Esta compatibilidad retroactiva evitó una división de cadena controvertida y permitió una adopción gradual.

Concepto erróneo común

SegWit a veces se describe simplemente como un "aumento del tamaño de bloque," pero esto subestima su importancia. La corrección de maleabilidad fue posiblemente más importante, ya que habilitó todo un ecosistema de protocolos de capa 2. El aumento de capacidad fue un efecto secundario bienvenido del nuevo sistema de contabilidad basado en peso.