SegWit es una solución ideada con el fin de resolver el problema de la maleabilidad de transacciones de Bitcoin y mejorar la escalabilidad del mismo.
De entre las grandes mejoras que ha sufrido Bitcoin desde sus inicios, SegWit ha sido una de las más importantes y transformadoras de esta blockchain. SegWit es la contracción de Segregated Witness o Testigo Segregado, nombre utilizado para un cambio en el formato de transacciones del Bitcoin. Esta es una propuesta de la empresa Blockstream y el equipo de desarrollo del cliente Bitcoin Core.
Este soft fork, fue propuesto en uno de los BIP, concretamente bajo el BIP-141, con el nombre de «Segregated Witness (Capa de Consenso)». Con esta mejora al Bitcoin, se buscaba resolver dos problemas:
- Resolver el problema de maleabilidad de las transacciones.
- Mejorar la escalabilidad de la red Bitcoin.
Pero su uso de extendió más allá del Bitcoin, llegando a otras blockchain como Litecoin, DigiByte, VertCoin e incluso EOS. Todas ellas con la misma problemática a resolver, y que veían en SegWit una solución ideal a los mismos.
Curso de iniciación a DeFi
Nivel medioEs hora de actualizarse. Las finanzas tradicionales han cambiado, descubre el revolucionario ecosistema de las finanzas descentralizadas (DeFi).
El nacimiento de SegWit
Durante el boom de las criptomonedas Bitcoin enfrentó algunos problemas debido a la forma en como funcionaba su estructura de transacciones. Estas limitaciones, se hicieron más evidentes cuando Bitcoin se enfrentó a altos niveles de transacciones. El resultado fue, que el Bitcoin fue incapaz de manejar la ingente cantidad de transacciones de la red de forma óptima. Su capacidad de manejar de 7 a 8 transacciones por segundo, se mostró insuficiente para las necesidades de la red y de su creciente número de usuarios.
Adicional a esto, los desarrolladores consideraron el grave riesgo de que las transacciones Bitcoin fueran maleables. Lo que podría llevar a manipulaciones que podrían llevar a la pérdida de cientos o miles de bitcoins en la red. Otra situación inaceptable. Para solventar esto, los desarrolladores de Bitcoin Core y Blockstream pusieron manos a la obra. Luego de un arduo trabajo, surgió SegWit una propuesta presentada el 21 de diciembre de 2015, por los desarrolladores Eric Lombrozo, Johnson Lau y Pieter Wuille.
SegWit proponía resolver el problema de maleabilidad de las transacciones y la escalabilidad del Bitcoin. Para lograrlo, SegWit separa los Bitcoin Scripts y las firmas criptográficas a una nueva estructura de bloques. Mientras que los bloques con las transacciones estaban en otra estructura. Todo ello, sin romper la capacidad de verificar las firmas y transacciones en cada estructura en cualquier momento gracias al árbol Merkle.
Los problemas resueltos por SegWit
Los problemas que solucionaba SegWit en Bitcoin son dos: la maleabilidad y la capacidad de mejorar su escalabilidad. Para entender de forma más completa ambos puntos, lo mejor es explicarlos más detenidamente:
La maleabilidad
La maleabilidad, es la posibilidad de que un tercero pueda modificar un código o serial a su antojo. Originalmente en Bitcoin, esta propiedad es considerada un tipo de ataque de denegación de servicio (DoS). Esto es así porque, la maleabilidad da pie a que el identificador de transacciones (TXID), pueda ser alterado en las transacciones no confirmadas.
Este problema está relacionado con que los hash de firma del Bitcoin no protegen el script de la firma (scriptSig). Este script incluye un tipo de firma (secp256k1) que no se puede “firmar” asimismo. Además, la forma en cómo se calcula el TXID permite que, exista la posibilidad de que un tercero con malas intenciones modifique el identificador de una determinada transacción no confirmada. Estos dos problemas, crean una debilidad que permite a un atacante modificar el TXID a su antojo mientras la transacción está en estado de no confirmada.
Como resultado de esta modificación, si se desea rastrear un determinado TXID en la red, este no se podría hallar a causa de haber sido modificado. Esto haría que el receptor desconfiara del emisor, e incluso rompería la confianza en la red en general.
Un ejemplo más sencillo del problema de maleabilidad
Para explicar de forma más sencilla la situación anterior, tenga en cuenta este ejemplo:
María ha realizado una transacción a Daniel. Los fondos de esa transacción los usará Daniel para pagarle a Sofía en una segunda transacción. Pero ocurre que un minero por error o un tercero malicioso modifica el TXID de la transacción de María a Daniel y lo confirma con ese TXID diferente. Eso significa que el pago de Daniel a Sofía será invalidado. En este escenario la honestidad de las partes pasa a jugar un papel trascendental. Esto es porque si Daniel es honesto, le enviará de nuevo los fondos a María. Pero si es deshonesto, se podrá quedar con las criptomonedas.
Con este ejemplo podemos ver de forma sencilla que, cuando los fondos lleguen a su destino lo harán con la TXID distinta a la de su creador (María). De modo que este último (Daniel) percibirá que su transacción ha desaparecido de la red. Al modificar el identificador sin invalidar la transacción en cuestión, se invalidan las transacciones secundarias. Esto se debe a que las nuevas transacciones se vinculan a las anteriores.
La escalabilidad
El peor problema que enfrentaron los desarrolladores y partidarios del Bitcoin fue, la escalabilidad. El alto tráfico en la red Bitcoin, colocó muy lejos de las promesas de transacciones rápidas y de bajo costo. Esto porque, el auge del Bitcoin llevó a su límite a la red hasta el punto en que una transacción tardaba horas en confirmarse. Además el costo por comisión quitaba la posibilidad de usar bitcoins para hacer micropagos. Era un pequeño desastre que costaba mucho a la comunidad que apoyaba al Bitcoin como una tecnología de pagos global, rápida y segura.
Para hacer frente a esto, los desarrolladores de SegWit buscaron mitigar esta situación y sentar las bases para nuevas formas de escalabilidad. Para lograrlo, SegWit segrega o separa los scripts y firmas de las transacciones a una nueva estructura. Al mismo tiempo, se lograba aumentar el tamaño de bloque hasta los 1,8 MB, con respecto al tamaño original de los bloques de 1 MB. Esto tiene un fuerte impacto en la escalabilidad y el número de transacciones por bloque dentro de Bitcoin.
Gracias a esto, era posible poner más transacciones dentro de un bloque y aumentar el número de transacciones procesadas cada segundo. Una situación que impacta positivamente en la disminución de costes por comisiones y en la velocidad de confirmación de transacciones. Sin embargo, SegWit también permitía iniciar la construcción de nuevos sistemas de escalabilidad al superar el problema de la maleabilidad y las firmas dentro de los bloques.
En este caso en especial, nos referimos a Lightning Network. Esta solución de escalabilidad diseñada por Blockstream usa el mismo formato de SegWit para realizar transacciones dentro de sus canales. Una situación que es clarificada directamente en la documentación RFC de Lightning Network.
El impacto de SegWit en Bitcoin
SegWit ha sido un cambio bastante importante en el manejo de transacciones del Bitcoin. Por un lado, ha llevado a la red Bitcoin un soft fork que permite que nodos legacy (sin SegWit) y nodos SegWit funcionen al mismo tiempo. Todo ello sin interrumpir el trabajo de la red, ni comprometer su seguridad.
Por otro lado, SegWit abre la puerta a tamaños de bloque más grandes para el Bitcoin. Uno de los cambios estructurales más grandes de SegWit, es llevar el tamaño máximo del bloque Bitcoin, desde 1 MB a los 4 MB. De esta forma SegWit garantiza actualizaciones importantes en el tamaño de los bloques de Bitcoin sin tener que aplicar un hard fork y las consecuencias del mismo. Otro cambio importante de SegWit, es que ha generado un nuevo tipo de direcciones Bitcoin, llamadas direcciones SegWit que empiezan por «bc1» o «3».
Adicional a esto, SegWit ha habilitado que un usuario con un monedero con soporte SegWit pueda enviar criptomonedas a un usuario con monedero (y dirección) legacy. De esta forma, el usuario con SegWit se beneficia de un menor costo por transacción y una confirmación más rápida. Lo mismo puede ocurrir de forma contraria, un usuario legacy puede enviar criptomonedas a un usuario con SegWit, usando una dirección legacy pero sin disfrutar de los beneficios de SegWit.
A su vez, la propuesta de SegWit habilitó las bases para la creación de Lightning Network. Esto gracias a que SegWit, es necesario en esta nueva estructura para asegurar que las transacciones off-chain no sean vulnerables a un ataque de maleabilidad. Una situación que se explica detalladamente en el whitepaper de Lightning Network.
Ventajas de SegWit
- Imposibilita los ataques de maleabilidad de las transacciones. Esto al separar los datos de las firmas del resto de los datos de una transacción.
- Aumenta el tamaño de bloques hasta un máximo de 4 MB.
- La presencia de datos de testigos se vuelve opcional, y solo se necesitarán cuando los nodos requieran validar una transacción, más no para verificarla.
- Los SPV (Simplified Payment Verification, o Verificación de Pago Simplificado) mejorarán su funcionamiento. Esto gracias a la reducción en el tamaño de las pruebas de verificación y el uso de ancho de banda.
- Escribe las bases para protocolos de escalabilidad como el de Lightning Network al solucionar el problema de la maleabilidad.
- Disminuye la competencia por tarifas de prioridad entre usuarios. Esto consecuentemente, disminuye las comisiones de la red.
Activación de SegWit en la red Bitcoin
El 21 de julio de 2017, los mineros Bitcoin realizaron una nueva actualización de software. Para este momento, los mineros siguieron el protocolo descrito en la Propuesta de Mejora de Bitcoin BIP-91. De esa manera se allanó el camino para llevar a cabo esta actualización y la activación final de SegWit. En dicha propuesta el trabajo de Luke Dashjr fue determinante para el éxito de esta operación.
El 8 de agosto de 2017 se alcanzó el otro gran hito. En ese momento se indicó que el 100 % de los grupos mineros de Bitcoin indicaban compatibilidad con SegWit. Sin embargo, SegWit no se activaría completamente hasta el 21 de agosto como mínimo. Después de este punto, los mineros podrían rechazar bloques que no incluyesen transacciones SegWit.
Finalmente, el 23 de agosto de 2017, es activado oficialmente SegWit durante el minado del bloque 481.822 , con un 99,95% de apoyo en la red.
Monederos con soporte para SegWit
Para que los usuarios de Bitcoin puedan hacer uso de las transacciones SegWit, deben usar un monedero que soporte esta característica. Estos monederos pueden brindarle a los usuarios direcciones legacy o direcciones SegWit para enviar y recibir transacciones. Entre los monederos Bitcoin que ofrecen dicho soporte se pueden mencionar los siguientes:
- Ledger. Este es un fabricante de monederos hardwares que soportan una gran diversidad de monedas. Todos incluyen soporte para la implementación de SegWit para Bitcoin, sin comprometer las características de seguridad en el producto.
- Trezor. Es otro fabricante de monederos hardware que ofrece soporte para SegWit en sus dispositivos.
- Bitcoin Core. Este es el monedero de referencia del equipo de desarrollo de Bitcoin. Incluye soporte para SegWit desde la versión 0.13.1.
- Bitcoin Armory. Esta billetera está escrita en el lenguaje de programación de Python y de igual forma tiene soporte para SegWit. Está disponible para los sistemas operativos de escritorio Windows, Linux y Mac OS X.
- Electrum. Esta es una billetera disponible para el sistema operativo Android en móviles y para Windows, Linux y Mac OS X. Activa desde el 2011 es una de las billeteras con una base fiel de usuarios en la comunidad bitcoin. Es de código abierto y da soporte a SegWit, permitiendo también a los usuarios configurar las tarifas de las transacciones.
- GreenBits. Esta es otro monedero con soporte para SegWit. Está disponible para Android e iOS. También permite a los usuarios su uso a través de una extensión de Google Chrome o vía web.
- Samourai. Este un proyecto en desarrollo, pero soporta también la mejora de SegWit. Samourai es un proyecto enfocado en la privacidad y el anonimato.
- Coinomi. Este monedero es multi-criptomonedas y ofrece soporte para SegWit para Bitcoin y Litecoin