¿Qué es SegWit?

SegWit es una solución concebida con el objetivo de solucionar el inconveniente de la maleabilidad de transacciones de Bitcoin y progresar la escalabilidad del mismo.

De entre las grandes mejoras que ha sufrido Bitcoin desde sus comienzos, SegWit ha sido una de las más esenciales y transformadoras de esta blockchain. SegWit es la contracción de Segregated Witness o bien Testigo Segregado, nombre usado para un cambio en el formato de transacciones del Bitcoin. Esta es una propuesta de la compañía Blockstream y el equipo de desarrollo del cliente del servicio Bitcoin Core.

Este soft fork, fue propuesto en uno de los BIP, específicamente bajo el BIP-141, con el nombre de “Segregated Witness (Capa de Acuerdo)”. Con esta mejora al Bitcoin, se procuraba solucionar 2 problemas:

  1. Resolver el inconveniente de maleabilidad de las transacciones.
  2. Mejorar la escalabilidad de la red Bitcoin.

Pero su empleo de extendió alén del Bitcoin, llegando a otras blockchain como Litecoin, DigiByte, VertCoin e inclusive EOS. Todas y cada una con exactamente la misma problemática a solucionar, y que veían en SegWit una solución ideal a exactamente los mismos.

El nacimiento de SegWit

Durante el bum de las criptomonedas Bitcoin encaró ciertos inconvenientes debido a la manera en como funcionaba su estructura de transacciones. Estas restricciones, se hicieron más evidentes cuando Bitcoin se encaró a altos niveles de transacciones. El resultado fue, que el Bitcoin fue inútil de manejar la ingente cantidad de transacciones de la red de forma óptima. Su capacidad de manejar de siete a ocho transacciones por segundo, se mostró deficiente para las necesidades de la red y de su creciente número de usuarios.

Adicional a esto, los desarrolladores consideraron el grave peligro de que las transacciones Bitcoin fuesen maleables. Lo que podría llevar a manipulaciones que podrían llevar a la pérdida de cientos o bien miles y miles de bitcoins en internet. Otra situación inadmisible. Para solucionar esto, los desarrolladores de Bitcoin Core y Blockstream pusieron manos a la obra. Después de un duro trabajo, brotó SegWit una propuesta presentada el 21 de diciembre de 2015, por los desarrolladores Eric Lombrozo, Johnson Lau y Pieter Wuille.

SegWit planteaba solucionar el inconveniente de maleabilidad de las transacciones y la escalabilidad del Bitcoin. Para conseguirlo, SegWit aparta los Bitcoin Scripts y las firmas criptográficas a una nueva estructura de bloques. Al paso que los bloques con las transacciones estaban en otra estructura. Todo ello, sin romper la capacidad de contrastar las firmas y transacciones en todos y cada estructura en cualquier instante merced al árbol Merkle.

segwit-diagrama

Los inconvenientes resueltos por SegWit

Los inconvenientes que solventaba SegWit en Bitcoin son dos: la maleabilidad y la capacidad de progresar su escalabilidad. Para comprender de forma más completa los dos puntos, lo mejor es explicarlos más detenidamente:

La maleabilidad

La maleabilidad, es la posibilidad de que un tercero pueda alterar un código o bien serial a su antojo. Originalmente en Bitcoin, esta propiedad es considerada un género de ataque de denegación de servicio (DoS). Esto es de esta forma por el hecho de que, la maleabilidad da pie a que el identificador de transacciones (TXID), pueda ser perturbado en las transacciones no confirmadas.

Este inconveniente está relacionado con que los hash de firma del Bitcoin no resguardan el script de la firma (scriptSig). Este script incluye un género de firma (secp256k1) que no se puede “firmar” además. Además de esto, la manera en de qué forma se calcula el TXID deja que, exista la posibilidad de que un tercero con malas pretensiones modifique el identificador de una determinada transacción no confirmada. Estos 2 inconvenientes, crean una debilidad que deja a un atacante alterar el TXID a su antojo mientras que la transacción está en estado de no confirmada.

Como resultado de esta modificación, si se quiere rastrear un determinado TXID en internet, este no se podría encontrar a causa de ser cambiado. Esto haría que el receptor desconfiase del transmisor, e inclusive rompería la confianza en internet por lo general.

Un ejemplo más fácil del inconveniente de maleabilidad

Para explicar de forma más fácil la situación precedente, tenga presente este ejemplo:

María ha efectuado una transacción a Daniel. Los fondos de esa transacción los utilizará Daniel para pagarle a Sofía en una segunda transacción. Mas ocurre que un minero por fallo o bien un tercero malicioso altera el TXID de la transacción de María a Daniel y lo confirma con ese TXID diferente. Eso quiere decir que el pago de Daniel a Sofía va a ser invalidado. En este escenario la sinceridad de las partes pasa a jugar un papel trascendental. Esto es por el hecho de que si Daniel es franco, le mandará nuevamente los fondos a María. Mas si es indecente, se va a poder quedar con las criptomonedas.

Con este caso de ejemplo podemos ver de manera sencilla que, cuando los fondos lleguen a su destino lo van a hacer con la TXID diferente a la de su autor (María). De forma que este último (Daniel) va a percibir que su transacción ha desaparecido de la red. Al alterar el identificador sin inutilizar la transacción en cuestión, se inutilizan las transacciones secundarias. Esto es debido a que las nuevas transacciones se vinculan a las precedentes.

La escalabilidad

El peor inconveniente que encararon los desarrolladores y partidarios del Bitcoin fue, la escalabilidad. El alto tráfico en internet Bitcoin, puso lejísimos de las promesas de transacciones veloces y de bajo costo. Esto por el hecho de que, el apogeo del Bitcoin llevó a su límite a la red hasta el punto en que una transacción tardaba horas en confirmarse. Además de esto el costo por comisión quitaba la posibilidad de utilizar 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, veloz y segura.

Para hacer en frente de esto, los desarrolladores de SegWit procuraron atenuar esta situación y sentar las bases para nuevas formas de escalabilidad. Para conseguirlo, SegWit segrega o bien aparta los scripts y firmas de las transacciones a una nueva estructura. Al tiempo, se conseguía acrecentar el tamaño de bloque hasta los uno con ocho MB, 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 en Bitcoin.

Gracias a esto, era posible poner más transacciones en un bloque y acrecentar el número de transacciones procesadas cada segundo. Una situación que impacta de forma positiva en la minoración de costos por comisiones y en la velocidad de confirmación de transacciones. No obstante, SegWit asimismo dejaba comenzar la construcción de nuevos sistemas de escalabilidad al superar el inconveniente de la maleabilidad y las firmas en los bloques.

En este caso de manera especial, nos referimos a Lightning Network. Esta solución de escalabilidad desarrollada por Blockstream utiliza exactamente el mismo formato de SegWit para efectuar transacciones en sus canales. Una situación que es clarificada de manera directa en la documentación RFC de Lightning Network.

El impacto de SegWit en Bitcoin

SegWit ha sido un cambio bastante esencial en el manejo de transacciones del Bitcoin. Por una parte, ha llevado a la red Bitcoin un soft fork que deja que nodos legacy (sin SegWit) y nodos SegWit funcionen al 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 cuatro MB. De esta manera SegWit garantiza actualizaciones esenciales en el tamaño de los bloques de Bitcoin sin aplicar un hard fork y las consecuencias del mismo. Otro cambio esencial de SegWit, es que ha generado un nuevo género de direcciones Bitcoin, llamadas direcciones SegWit que comienzan por “bc1” o bien “3”.

Adicional a esto, SegWit ha habilitado que un usuario con un monedero con soporte SegWit pueda mandar criptomonedas a un usuario con monedero (y dirección) legacy. De este modo, el usuario con SegWit se favorece de un menor costo por transacción y una confirmación más veloz. Lo mismo puede suceder de manera contraria, un usuario legacy puede mandar criptomonedas a un usuario con SegWit, utilizando una dirección legacy mas sin gozar de las ventajas de SegWit.

A su vez, la propuesta de SegWit habilitó las bases para la creación de Lightning Network. Esto merced a que SegWit, es preciso en esta nueva estructura para asegurar que las transacciones off-chain no sean frágiles a un ataque de maleabilidad. Una situación que se explica detalladamente en el whitepaper de Lightning Network.

Ventajas de SegWit

  1. 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.
  2. Aumenta el tamaño de bloques hasta un máximo de cuatro MB.
  3. La presencia de datos de testigos se vuelve opcional, y solo se precisarán cuando los nodos requieran validar una transacción, más no para contrastarla.
  4. Los SPV (Simplified Payment Verification, o bien Verificación de Pago Simplificado) van a mejorar su funcionamiento. Esto merced a la reducción en el tamaño de las pruebas de verificación y el empleo de ancho de banda.
  5. Escribe las bases para protocolos de escalabilidad como el de Lightning Network al solventar el inconveniente de la maleabilidad.
  6. Disminuye la competencia por tarifas de prioridad entre usuarios. Esto consecuentemente, reduce las comisiones de la red.

Activación de SegWit en internet Bitcoin

El 21 de julio de 2017, los mineros Bitcoin efectuaron una nueva actualización de software. Para este instante, los mineros prosiguieron el protocolo descrito en la Propuesta de Mejora de Bitcoin BIP-91. De esa forma se allanó el camino para realizar esta actualización y la activación final de SegWit. En tal propuesta el trabajo de Luke Dashjr resultaron determinante para el éxito de esta operación.

El 8 de agosto de 2017 se alcanzó el otro gran jalón. En ese instante se señaló que el cien por ciento de los conjuntos mineros de Bitcoin señalaban compatibilidad con SegWit. No obstante, SegWit no se activaría absolutamente hasta el veintiuno de agosto por lo menos. Tras este punto, los mineros podrían rehusar bloques que no incluyeran transacciones SegWit.

Finalmente, el 23 de agosto de 2017, es activado oficialmente SegWit a lo largo del minado del bloque 481.822 , con un 99,95 por ciento de apoyo en la red. ​

¿Cuánto sabes, criptonauta?

¿SegWites una de las bases para el buen funcionamiento de Lightning Network?

Monederos con soporte para SegWit

Para que los usuarios de Bitcoin puedan hacer empleo de las transacciones SegWit, deben utilizar un monedero que soporte esta característica. Estos monederos pueden brindarle a los usuarios direcciones legacy o bien direcciones SegWit para mandar y percibir transacciones. Entre los monederos Bitcoin que ofrecen dicho soporte se pueden mentar los siguientes:

  1. Ledger. Este es un fabricante de monederos hardwares que aguantan una enorme diversidad de monedas. Todos incluyen soporte para la implementación de SegWit para Bitcoin, sin comprometer las peculiaridades de seguridad en el producto.
  2. Trezor. Es otro fabricante de monederos hardware que ofrece soporte para SegWit en sus dispositivos.
  3. 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.
  4. Bitcoin Armory. Esta cartera está escrita en el lenguaje de programación de Python y de igual forma tiene soporte para SegWit. Está libre para los sistemas operativos de escritorio Windows, Linux y Mac OS X.
  5. Electrum. Esta es una cartera libre para el sistema operativo Android en móviles y para Windows, Linux y Mac OS X. Activa desde el dos mil once es una de las carteras con una base leal de usuarios en la comunidad bitcoin. Es de código abierto y da soporte a SegWit, dejando asimismo a los usuarios configurar las tarifas de las transacciones.
  6. GreenBits. Esta es otro monedero con soporte para SegWit. Está libre para Android y también iOS. Asimismo deja a los usuarios su empleo por medio de una extensión de Chrome o bien vía web.
  7. Samourai. Este un proyecto en desarrollo, mas aguanta asimismo la mejora de SegWit. Samourai es un proyecto enfocado en la privacidad y el anonimato.
  8. Coinomi. Este monedero es multi-criptomonedas y ofrece soporte para SegWit para Bitcoin y Litecoin

bitcoin
Bitcoin (BTC) $ 62,640.00
ethereum
Ethereum (ETH) $ 3,801.98
binance-coin
Binance Coin (BNB) $ 486.71
tether
Tether (USDT) $ 1.00
cardano
Cardano (ADA) $ 2.12
xrp
XRP (XRP) $ 1.08
solana
Solana (SOL) $ 155.83
polkadot
Polkadot (DOT) $ 40.51
usd-coin
USD Coin (USDC) $ 1.00
dogecoin
Dogecoin (DOGE) $ 0.244090