Bitcoin

¿Qué es SegWit en Bitcoin? [Testigo Segregado]

Que es Testigo Segregado

Testigo segregado o Segregated Witness, abreviado usualmente como SegWit, es una actualización implementada por Bitcoin Core en 2017 para mejorar varios aspectos de Bitcoin y hacer posible nuevas implementaciones.

Una de esas implementaciones de Taproot, que obtuvo mucha popularidad por los beneficios que trae para Bitcoin.

SegWit también corrige un problema llamado maleabilidad de la transacción. Del cual hablaremos más adelante en detalle.

También ayudo a incrementar el límite en el tamaño de bloque de Bitcoin. Lo que permite que más transacciones quepan dentro de él y así mejorar las comisiones de esta red.

Por último, SegWit introdujo dos nuevos tipos de scripts, que sirven para enviar y recibir BTC, y también un nuevo tipo de esquema de codificación llamado Bech32.

Sin embargo, a pesar de todas estas mejoras, la activación de esta actualización creo una gran división en la comunidad de Bitcoin. Por suerte, pudo alzarse y Bitcoin emergió más fuerte y con una mayor capacidad para escalar.

La conclusión de todo esto es que la descentralización peso más que lo que creía un grupo de mineros y líderes dentro de la comunidad.

Se trata de un soft fork, una actualización compatible con versiones posteriores, que no necesita de todos los usuarios para actualizar la red.

Esta actualización que formo parte del BIP 141 fue lanzado en agosto de 2017. Y mientras una parte de la comunidad la adopto rápidamente, otra creo su propio hard fork llamado Bitcoin Cash con base en la misma blockchain

¿Cómo funciona el Testigo Segregado?

Para entender como funciona esta tecnología llamada Testigo Segregado, hay que analizar que sucede cuando una persona quiere enviar BTC a otra. En particular, sabemos que se necesita de una dirección pública y una clave privada.

Una dirección pública es un identificador que es necesario para poder identificar a las partes que intervienen en la transacción. Cada usuario tiene su propia dirección de Bitcoin para poder recibir y enviar BTC, y son públicas porque cualquiera puede verlas.

Por su parte, las claves privadas no son conocidas por todo el mundo, solo el usuario dueños de los BTC la conoce y la utiliza para verificar que esa dirección pública le pertenece y puede enviar los fondos.

Para poder enviar los bitcoins, el usuario que origina la transacción la debe transmitir a toda la red. Transacción que incluye la dirección pública, la cantidad de BTC a enviar, la firma con la clave privada y las comisiones para el minero.

Luego, los mineros de Bitcoin procesan la transacción, añadiéndola al bloque que es creado junto con transacciones de otros usuarios.

Este bloque también es transmitido al resto de los nodos de Bitcoin, que validan el bloque para determinar que toda la información y correcta y lo agregan a la blockchain que ellos poseen.

En este punto se puede decir que una transacción entre dos usuarios ha sido realizada de forma satisfactoria.

El único problema de todo esto es que la red tiene un límite a la cantidad de transacciones que puede procesar en un momento determinado, que hace que cuanto más popular sea Bitcoin, más difícil y caro sea enviar tu transacción. Cosa que tiene que ver con el tamaño del bloque de Bitcoin y el tamaño de las transacciones.

Ya que las transacciones tienen un cierto tamaño y el boque una capacidad, por lo que a menos que se incremente el tamaño del bloque o las transacciones se hagan menos pesadas, entonces no van a caber más.

Para solucionar esto, el desarrollador Dr. Peter Wuille sugirió que la firma de la transacción sea segregada de la información de la transacción. Con esto consiguiendo que se necesite menos espacio para poder almacenar la transacción.

Ahora con SegWit, el límite del tamaño del bloque de Bitcoin se incrementó a 4 millones de unidades de peso (WU, por sus siglas en inglés). Mientras que antes solo podían caber 1 millón de WU.

Esto genera confusión porque se cree que ahora el tamaño del bloque de Bitcoin es de 4 MB en lugar de 1 MB. Pero lo cierto es que el tamaño es el mismo, solo que ahora pueden caber más transacciones. Que equivalen a que el tamaño del bloque sea de 4 MB si todas las transacciones son de tipo SegWit, pero el cambio está en el peso de las transacciones realmente.

Gracias a que ahora hay más espacio para información, esto incrementa la cantidad de transacciones a procesar, aumenta la velocidad con que se procesan y baja las comisiones que se pagan.

Además, también permite que una mejora como Taproot pueda ser implementada en la cadena de bloques de Bitcoin.

¿Qué es la maleabilidad de transacción?

La maleabilidad de transacción es la posibilidad de que una transacción tenga múltiples IDs de transacción válidos.

La maleabilidad ocurre cuando una parte de la transacción es modificada luego de que esta haya sido firmada, lo cual no invalida la firma.

Debido a que el ID de la transacción es un hash de la misma, cualquier cambio en la transacción resultara en un cambio del ID. Sin embargo, aquí no nos preocupan los cambios que alteren el ID e invaliden la firma, sino los cambios que alteren el ID que no hacen que la firma sea inválida.

Se trata de un problema para los desarrolladores y usuarios que quieren hacer referencia a una transacción anterior a la hora de gastar la salida de esta, la UTXO, antes de que haya sido confirmada por la cadena de bloques.

El problema surge cuando se modifica este ID de transacción, entonces no podemos referenciar a la transacción anterior, lo que hace que el gasto de la misma sea visto por la red como inválido.

Este problema ha tenido su protagonismo en eventos como el de Mt. Gox, ya que su CEO justifico la perdida de fondos debido a este bug. Sin embargo, también cobro importancia a la hora de adoptar la red Lightning, que requiere el intercambio de transacciones sin confirmar de Bitcoin.

Una transacción puede ser afectada con este problema de dos formas:

  1. Luego de que la transacción es firmada, más información se puede agregar al ScriptSig, la parte de la transacción donde se encuentran las firmas y otra información necesaria para desbloquear los bitcoins.
  2. La firma en sí, que se encuentra dentro del ScriptSig, puede ser modificada.

Estas dos circunstancias pueden suceder, ya que la firma no pueden firmarse a sí misma, lo que ocasiona que no pueda volverse auto inmutable.

Debido a que el ScriptSig y la firma que contiene son parte de la pre imagen del ID, si se cambian, también se modifica el ID de transacción.

SegWit elimina esta posibilidad al eliminar toda la información del ScriptSig. Esto se consigue al mover la información del ScriptSig, usualmente la firma y la clave pública, al testigo (Witness). Esto último es una nueva parte de las transacciones SegWit que no son utilizadas para el hash del cálculo del ID.

Así, el ScriptSig de la entrada de SegWit es construido de manera inmutable luego de la firma, y la información para desbloquear los bitcoins, que no es inmutable, son almacenadas en el testigo.

Esto permite que el ScriptSig no pueda ser modificado, y, por tanto, el ID de transacción no pueda ser cambiado sin hacer inválida a toda la transacción.

SegWit permite la red Lightning

La activación de SegWit es muy importante para Lightning Network, una tecnología de segunda capa que funciona por encima de la red de Bitcoin.

Antes de que se activara esta mejora, Lightning Network no funciona correctamente debido a que confiaba profundamente en las transacciones sin confirmar de Bitcoin. Por eso, la maleabilidad de las transacciones era un riesgo muy grande, y una fuente de ataque para esta solución.

¿Cuáles son los nuevos tipos de scripts de SegWit?

SegWit introdujo dos nuevos tipos de scripts de Bitcoin.

Pay to Witness PubKey Hash (P2WPKH)

Antes de SegWit, una gran mayoría de usuarios utilizaban Pay to Pubkey Hash (P2PKH), que bloqueaba los BTC con el hash de la clave pública.

El script de SegWit, Pay to Witness Pubkey Hash (P2WPKH), funciona similar a este anterior, con una importante diferencia. Cuando el usuario envía una salida P2WPKH, la firma y clave pública, las dos piezas de información para desbloquear las salidas en P2PKH y P2WPKH, son almacenadas en el testigo, mientras que el ScriptSig se encuentra en blanco.

Esto se hace para prevenir la maleabilidad del ID de la transacción.

Pay to Witness Script Hash (P2WSH)

Otro script muy popular, pero que ahora ha quedado antiguo, es Pay to Script Hash (P2SH), que permite enviar bitcoins al hash de un script, llamado redeemScript.

Estos BTC pueden ser reclamados por cualquier que pueda proveer el redeemScript y así completar el requerimiento específico.

Antes de SegWit, P2SH era la forma más común de utilizar multi firma, además de ahorrar espacio y obtener mayor privacidad en comparación a las alternativas.

SegWit implemento Pay to Witness Script Hash (P2WSH), que funciona de manera similar a P2SH (ambos scripts pueden ser vistos como evoluciones).

Las salidas de P2WSH pueden ser gastadas al proveer el script testigo, el equivalente en SegWit al redeemScript, y la firma y clave pública requerida por el script testigo.

¿Qué es Wrapped SegWit?

La introducción de estos dos nuevos tipos de scripts fueron cambios muy grandes para el protocolo de Bitcoin, ya que permitieron crear nuevos tipos de monederos, aplicaciones y servicios que antes no eran posibles.

En función de poder hacer que la adopción de SegWit sea más fácil e incremental, se construyo un puente entre los scripts antiguos y las opciones de SegWit.

Este puente es llamado Wrappet SegWit, y es un script P2SH. Este puente toma un script nativo de SegWit, P2WPKH o P2WSH, y lo utiliza como un redeemScript de un script P2SH. Los dos scripts de Wrapped SegWit usan P2SH-P2WPKH y P2SH-P2WSH.

Esto permite que los monederos y otros software antiguos puedan enviar bitcoins a direcciones SegWit, aun cuando no birnden soporte a esta nueva tecnología. Así, los destinatarios de las transacciones Wrapped SegWit pueden gastar sus BTC y conseguir los beneficios de SegWit, como el ahorro en comisiones.

Diferencia entre dirección Legacy y SegWit

La diferencia entre una dirección Legacy y una de SegWit la encontramos en el formato. Ya que mientras la dirección Legacy comienza con un 1, la de SegWit lo hace con un 3.

También vamos a encontrar diferencias en el tamaño de las transacciones. Porque las direcciones Legacy son más grandes y ocupan más espacio que las de SegWit.

En cuanto a las comisiones, al ser más pesadas, las direcciones Legacy van a pagar más a los mineros que si enviamos con SegWit.

Pero las direcciones Legacy son más compatibles con los monederos de Bitcoin por estar en este ecosistema desde hace más tiempo que las direcciones SegWit.

Ejemplo de dirección de SegWit

Un ejemplo de dirección SegWit es el siguiente:

3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy

Mientras que una dirección Legacy es así:

1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Ventas y Desventajas de SegWit

Debido a que las cosas buenas de SegWit son más grandes que las cosas malas, se ha visto una enorme adopción de este tipo de transacciones. Como se ve en el gráfico de aquí debajo:

Gráfico de tipo de transacciones de Bitcoin por tipo

Pero igual es necesario ver cuáles son las ventajas y desventajas de esta mejora de Bitcoin.

Pros de SegWit

Algunas ventajas ya las hemos visto, pero también otras que valen la pena analizar:

  • Transacciones más rápidas: permite confirmaciones más rápidas al establecer datos más pequeños.
  • Transacciones más baratas: las comisiones por las transacciones se reducen con SegWit porque la tecnología permite una mayor capacidad de procesar transacciones.
  • Transacciones más seguras: SegWit hace más difícil hackear la red debido a que tercerizar el trabajo.
  • Más transacciones: cuando se implementó SegWit rápidamente se vio una disminución en la mempool que contiene todas las transacciones sin confirmar.
  • Lightning Network: Lightning Network es una tecnología de capa 2 que permite mejorar aun más todas las ventajas de SegWit.

Contras de SegWit

Aunque también hay aspectos negativos, aunque no tan importantes como los vistos anteriormente:

  • Menos comisiones para los mineros: mucha controversia alrededor de esta implementación provino de los mineros, ya que esto afecto, al menos de forma temporal, las comisiones obtenidas.
  • Es una solución a corto plazo: si bien hay mejoras, estas solucionan todos los problemas de escalabilidad de Bitcoin a largo plazo.
  • División en la comunidad: no todo el mundo estaba de acuerdo en su implementación, lo que dio lugar a Bitcoin Cash.

¿Qué es Native SegWit?

Native SegWit, Testigo Segregado Nativo o Bech32, son un tipo de dirección que se crearon como una mejora de SegWit. Que a diferencia de las direcciones de Bitcoin, estas tienen un formato completamente diferente, donde comienzan con bc1.

En cuanto a la compatibilidad, Native SegWit es totalmente compatible con todas las direcciones de SegWit. Aunque no todas las billeteras brindan soporte para este tipo nuevo de direcciones.

SegWit vs. Native SegWit

Native SegWit es el último formato que existe para las direcciones de SegWit. El beneficio de estas nuevas direcciones es que son más eficiente con su peso, que se traduce en transacciones más rápidas, mejor escalabilidad y comisiones más bajas para todas las transacciones de Bitcoin.

Bech32 hace también que las direcciones nativas de SegWit sean fácilmente reconocibles, ya que solo usa letras en minúscula y comienzan con bc1.

Además, Bech32 fue construido con una detección de errores que ayuda al usuario y a los monederos a detectar y hasta corregir errores de tipeo o cambios en las direcciones.

Taproot vs. Native SegWit

Las transacciones de Taproot son ligeramente más grandes que las de Native SegWit, pero menores que las direcciones legacy. Esto es porque están atadas a la clave pública en lugar de al hash de la clave pública.

Sin embargo, las direcciones de Taproot son útiles cuando se necesita utilizar scripts de multifirma, ya que en ese caso Taproot ahorra mucho espacio y las hace más baratas.

¿Qué billeteras soportan SegWit?

Por suerte existen muchas billeteras que brindan soporte para direcciones de SegWit, así que no te será muy difícil encontrar una.

Entre las mejores podemos destacar Ledger Nano S y Trezor como opciones de monederos hardware. Pero si quieres algo gratuito y que funcione en tu móvil u ordenador, Electrum y GreenAddress son tus opciones.

Resumen

  • Segregated Witness o SegWit es una mejora de Bitcoin que fue activad en 2017 y arregla el problema de la maleabilidad de las transacciones. Todo mientras ayuda a escalar a esta criptomoneda.
  • SegWit hace posible que funciona la Lightning Network, una solución que funciona en una segunda capa.
  • La activación de SegWit también demostró la antifragilidad de Bitcoin, al ser un sistema controlado por los nodos y no por los mineros o negocios.

Acerca del autor

Nicolas Mandarieta

Desarrollador de software, gamer, geek y amante de la pizza.

Agrega un Comentario

Haz clic aquí para añadir un comentario