Actualización BIP 118 (ANYPREVOUT)

Tiempo de lectura: 4 minutos

Bitcoin es un mundo fascinante rodeado de personas que constantemente buscan formas de mejorarlo. Las mejoras pueden ser en el ámbito de la divulgación (como hago yo mismo) o en el ámbito tecnológico.

Los cambios en el protocolo son un tema muy complicado y pueden dar lugar a discusiones acaloradas. Ejemplo de ello fue la que tuvo lugar entre 2016 y 2017 con la propuesta de SegWit2x (de esto hablaremos otro día). Si de algo podemos estar seguros es de que Bitcoin es muy difícil de cambiar, y esta posiblemente sea su mayor fortaleza.

Por eso los cambios en Bitcoin se revisan a fondo y se someten a discusión durante meses. Un importante paso para una propuesta es el registro como BIP (Bitcoin Improvement Proposal). Hoy vamos a hablar de una de estas propuestas, precisamente sobre qué es BIP 118.

Pero antes entendamos lo que es un «sighash flag» y cómo funciona básicamente una transacción.

Sighash y transacciones

Las transacciones en Bitcoin consisten en desbloquear bitcoins de una dirección (demostrando que eres el dueño con una firma digital) y bloquearlos en otra dirección.

Por ejemplo puedes tener dos direcciones con bitcoin (pertenecientes de dos transacciones previas en las que te los enviaron). Para gastar esos bitcoins puedes hacer una transacción con dos firmas digitales para cada dirección y enviarlos a donde quieras.

El «sighash flag» consiste en un identificador que nos indica qué datos hay que firmar para desbloquear los bitcoins (siendo el SigHash la información a firmar).

Actualización-BIP-118-(ANYPREVOUT)

Qué es BIP 118 (ANYPREVOUT)

El BIP 118 fue escrito en 2017 y por entonces era conocido como SIGHASH_NOINPUT. Esta propuesta la hicieron inicialmente los escritores del paper de Lightning Network (Joseph Poon y Thaddeus Dryja) para solventar un problema conocido como «maleabilidad de las transacciones» más tarde solventado por SegWit.

Lightning Network es un protocolo que permite transferir bitcoin de forma casi instantánea y sin apenas comisión. No en vano es la mayor promesa para escalar Bitcoin a miles de transacciones por segundo. Y pese a su lento crecimiento, ha avanzado mucho desde su inicio teórico en 2015.

No obstante, con su avance, los desarrolladores se dieron cuenta de que aún iba a ser muy positivo SIGHASH_NOINPUT. Recientemente, tras el desarrollo de la nueva actualización de BitcoinTaproot, se ha decidido cambiar el nombre a SIGHASH_ANYPREVOUT y adecuarlo para su integración con las direcciones de Taproot.

Lo que, en resumidas cuentas, permite ANYPREVOUT es no firmar la parte de información que se refiere a la anterior transacción. Una transacción con este tipo de sighash flag no está ligada a transacciones pasadas y puede gastar cualquier bitcoin de direcciones con la misma clave pública (o condiciones para gastar).

Vale, seguramente os hayáis quedado igual, pero vamos a explicar las implicaciones de esto.

Actualización-BIP-118-(ANYPREVOUT)

Eltoo y Lightning Network

La mayor implicación, y el motivo por el que esta propuesta es muy importante, es porque permite un protocolo llamado Eltoo (como si leyéramos «L2» en inglés). Eltoo simplifica y mejora enormemente Lightning Network.

En Lightning se usa una construcción llamada canales de pago donde dos usuarios pueden transferir bitcoin off-chain, es decir, sin que sea una transacción en la blockchain y por lo tanto de forma privada, instantánea y sin comisión.

En un canal de pago los balances de dos usuarios se actualizan con cada transacción off-chain. Por ejemplo Alicia tiene 1 BTC y Bob tiene 0. Alicia puede hacer una transacción a Bob actualizando el balance para que ella se quede con 0,5 y Bob con 0,5 (por ejemplo, esto es una transacción de 0,5).

La blockchain de Bitcoin actúa como juez en caso de disputa en este protocolo. Si Alicia pone en la blockchain su balance de 1 BTC (que es incorrecto porque en realidad tiene 0,5 después de la transacción), Bob podrá demostrar que Alicia ha hecho trampa y se quedará con todo su dinero como penalización. Pero esto hace que los usuarios de Lightning tengan que acumular más y más información para poder solventar estas disputas, además de ser complejo.

Con Eltoo toda esta complejidad desaparece porque lo único que hay que mantener es el último balance. No hay que mantener información para cada caso como ocurre ahora mismo. Sólo basta mantener las últimas 2 transacciones (una de ellas con ANYPREVOUT). Si alguien hace trampa puedes usar la transacción ANYPREVOUT para demostrar que lo hizo y gastar esos bitcoins de la forma correcta.

De esta forma la información que hay que almacenar en copias de seguridad es mínima, el protocolo es más sencillo, se puede innovar en Lightning más fácilmente y se reduce el riesgo de perder todo tu dinero accidentalmente por culpa de la penalización que existe ahora.

Otros usos

Otros usos que puede tener este tipo de sighash flag son los «covenants» que permiten contratos inteligentes más complejos (estableciendo formas concretas en las que los bitcoins deben gastarse) y statechains ciegas usando Eltoo (una solución de escalabilidad como Lightning pero no totalmente sin confianza en terceros).

En caso de implementarse, ANYPREVOUT sólo será usado por este tipo de protocolos por lo que el resto de usuarios no se verían afectados. Sin embargo, aunque su efecto en la propia blockchain sea pequeño, sería un cambio que permitiría mucha innovación en capas superiores (soluciones de escalabilidad como Lightning).


Leave a comment
Your email address will not be published. Required fields are marked *