El protocolo de Bitcoin está sujeto a actualizaciones regulares destinadas a mejorar el protocolo, abordar fallos y resolver problemas de seguridad. Desde su creación en 2009, ya se han implementado con éxito muchas actualizaciones. Una de las actualizaciones más notables trató la llamada maleabilidad de las transacciones, que permitía a los atacantes modificar indirectamente los ID de las transacciones.
El protocolo de Bitcoin está sujeto a actualizaciones regulares destinadas a mejorar el protocolo, abordar fallos y resolver problemas de seguridad. Desde su creación en 2009, ya se han implementado con éxito muchas actualizaciones. Una de las actualizaciones más notables trató la llamada maleabilidad de las transacciones, que permitía a los atacantes modificar indirectamente los ID de las transacciones.
La solución implementada para solucionar la maleabilidad de las transacciones se conoce como Testigo Segregado, o SegWit. Este artículo explica cómo SegWit detuvo la maleabilidad de las transacciones y describe la funcionalidad extendida de SegWit, que hizo posible introducir muchos tipos diferentes de opciones de escalabilidad (lee este artículo para aprender sobre la escalabilidad de la blockchain).
Aspectos esenciales de SegWit
- El Testigo Segregado, o SegWit, es un protocolo implementado para solucionar la maleabilidad de las transacciones que permitía modificar los ID y hashes de las transacciones.
- SegWit aumenta virtualmente el tamaño del bloque cuatro veces con el concepto de peso del bloque.
- SegWit reduce las tarifas de transacción.
- Su diseño fue propuesto en las Propuestas de Mejora de Bitcoin (BIPs) 141, 148 y 91.
- SegWit hace posible configurar las firmas de Schnorr y facilita la implementación de la Red Lightning.
Diseño y desarrollo
SegWit fue conceptualizado y presentado por el desarrollador Pieter Wiulle en la conferencia Scaling Bitcoin en diciembre de 2015, donde el tema principal era hacer que Bitcoin creciera más y más rápido. Con la promesa de abrir la puerta al escalado de Bitcoin, SegWit ganó inmediatamente un apoyo sustancial de la comunidad.
El diseño de SegWit se describió por primera vez en las Propuestas de Mejora de Bitcoin (BIPs) 141 y 148. Su propósito inicial era abordar la capacidad de cambiar las firmas y, en consecuencia, los ID de las transacciones, lo que comúnmente se conoce como maleabilidad de las transacciones. Este era un código defectuoso que permitía a cualquiera alterar pequeños detalles de la transacción para modificar el hash de la transacción, lo que también cambiaba el ID de la transacción.
Y aunque la maleabilidad de las transacciones permitía modificar el ID de la transacción, no permitía cambiar el contenido de las transacciones de BTC. Como solo permitía que se alterara el ID y el hash de la transacción, la maleabilidad de las transacciones nunca representó realmente un riesgo importante para el protocolo Bitcoin. Sin embargo, inhibió el desarrollo de características más complejas, por ejemplo, varias soluciones de escalabilidad y funcionalidad de contratos inteligentes.
Además de solucionar la maleabilidad de las transacciones, SegWit también reinventa el concepto de tamaño de bloque. Mientras que el tamaño de los bloques en la blockchain de Bitcoin tradicionalmente se limitaba a 1 MB de datos, SegWit se basa en esto con un nuevo concepto denominado peso del bloque. Con el peso del bloque, cada bloque tiene un límite de 4 M unidades de peso, o 1 M vbytes, lo que significa que 1 vbyte equivale a 4 unidades de peso. Como resultado, los nodos con software actualizado con el protocolo SegWit pueden potencialmente enviar y recibir cuatro veces la cantidad de datos que podían antes del soft fork de SegWit. Sin embargo, debido a varias limitaciones, los bloques nunca son tan grandes: el tamaño promedio de bloque gira alrededor de 1.3 MB.
Este rediseño del tamaño del bloque también resulta en tarifas de transacción más bajas. Antes de SegWit, las tarifas de transacción se determinaban como tarifa por tamaño de transacción. Con la introducción del concepto de peso del bloque, esto cambió a tarifa por unidad de peso. Como SegWit reduce la carga en la blockchain, las tarifas requeridas para la validación y adición de transacciones a la blockchain se reducen en consecuencia.
Para probar su funcionalidad, SegWit se activó primero en Litecoin el 10 de mayo de 2017. Una vez que demostró ser operativo, también se implementó en Bitcoin el 23 de agosto de 2017. Como se implementó mediante un soft fork, la blockchain es compatible con los nodos que no admiten SegWit. Esto significa que los nodos completos en la red Bitcoin tendrán la misma copia del libro mayor, independientemente de cuán grandes sean sus bloques.
Una base para el escalado
Una vez que se implementó SegWit, permitió nuevos métodos de escalado en términos de soluciones de escalado tanto en cadena como fuera de cadena.
SegWit hace posible implementar firmas de Schnorr. Una firma de Schnorr es una firma digital creada por el algoritmo de firma de Schnorr. Su seguridad se basa en la intratabilidad de los problemas de logaritmo discreto. Como es corta, ocupa menos espacio en la blockchain que una firma tradicional. Esto reduce la carga en la blockchain y aumenta el rendimiento de la red mediante el escalado de primera capa.
Pero quizás una característica más interesante desbloqueada por SegWit es el escalado de capa 2. La solución de maleabilidad ha abierto la puerta a la implementación segura de la Red Lightning. Lightning es una red separada que combina canales entre diferentes usuarios de la red y el principio de seis grados de separación para conectar usuarios que aún no han realizado transacciones antes. La tecnología requiere que solo el saldo inicial y final del canal se escriba en la blockchain, pero ninguna de las transacciones intermedias. Esto descarga la blockchain, reduce las tarifas de transacción y aumenta la velocidad de la red.
La implementación de SegWit fue un paso clave para mejorar la escalabilidad de Bitcoin. Ha superado con creces su diseño inicial (eliminar la maleabilidad de las transacciones) y ha demostrado ser esencial para respaldar las masas en constante crecimiento que utilizan la criptomoneda más grande. Al momento de escribir este artículo, más de la mitad de las transacciones de bitcoin han adoptado SegWit, y se proyecta que el número crezca en el futuro.