Saltar al contenido
buybitcoinsmart

Glosario / Protocolo y actualizaciones

Covenant

¿Qué es un covenant?
Un covenant es una regla de gasto que limita adónde puede ir después el bitcoin, no solo quién puede moverlo, y hoy ningún opcode (código de operación) del Script de Bitcoin puede hacer cumplir uno.

Todo script de la cadena responde a una pregunta: ¿está autorizado este gasto? Un covenant dejaría que el script hiciera una segunda pregunta sobre la transacción que lo gasta, y todas las propuestas para permitirlo (BIP-119, BIP-118, BIP-345, BIP-347) llevan años sin activarse. Nada de lo que usted conserva hoy se ve afectado, pero los productos de bóveda y de herencia que la gente no deja de pedir están a la espera de esto.

Cómo funciona

Estado: ningún opcode de covenant está activo en la mainnet de Bitcoin. Cada diseño que sigue es una propuesta, y ninguno tiene parámetros de activación integrados en Bitcoin Core.

La capacidad que falta tiene un nombre preciso: introspección. Cuando un nodo ejecuta un script, el script puede examinar firmas, hash, bloqueos temporales (timelocks) y la pila, pero no puede leer las salidas de la transacción que gasta la moneda. Ese único punto ciego es la razón por la que bitcoin puede expresar "dos de estas tres personas deben estar de acuerdo" y no puede expresar "este dinero solo puede moverse a esa dirección".

Las propuestas cierran esa brecha de dos formas distintas, y la diferencia entre ellas es el núcleo del debate.

El enfoque de plantilla fija de antemano un hash de toda la transacción de gasto. El opcode OP_CHECKTEMPLATEVERIFY funciona así: la salida guarda un hash de 32 bytes, y el gasto falla salvo que el hash de la transacción coincida con ese valor. Es estrecho, es barato de verificar y, como el compromiso no puede describir otro compromiso, la restricción no puede repetirse indefinidamente.

El enfoque de introspección le da al script las piezas y le deja hacer aritmética. Combinar el opcode OP_CAT con una verificación de firma, o añadir el opcode OP_CHECKSIGFROMSTACK, permite a un script reconstruir el hash de firma de la transacción a partir de piezas de la pila y verificarlo, y a partir de ese momento el script puede exigir lo que quiera sobre las salidas. Este enfoque es general, y es recursivo: un covenant puede insistir en que la siguiente salida lleve el mismo covenant.

La recursión es la objeción que lo ha frenado todo. Unas monedas bloqueadas en una regla que se perpetúa a sí misma podrían, en principio, quedar gravadas para siempre, lo que plantea preguntas sobre la fungibilidad y sobre los emisores que podrían hacer obligatoria esa regla. El contraargumento es que un grupo de personas ya puede simular un covenant prefirmando el único gasto permitido y destruyendo la clave, así que la capacidad existe en la práctica, y el hecho de que el consenso haga cumplir el covenant elimina sobre todo la necesidad de confiar en que la clave se destruyó de verdad.

Dónde aparece

Los covenants ya están desplegados en cadenas que copian el motor de script de bitcoin, lo cual es la forma más barata de ver lo que hacen.

Liquid, la cadena lateral (sidechain) basada en Elements, ejecuta un tapscript con opcodes de introspección que leen directamente las salidas de la transacción de gasto, y su federación los usa para su anclaje. Cualquiera puede además probar los opcodes de bitcoin propuestos en signets personalizadas antes de decidir si los querría en la mainnet.

En la mainnet, lo que hace las veces de covenant es una transacción prefirmada con una clave eliminada. Un proveedor de bóvedas genera la clave de depósito, firma el único retiro que llegará a permitir y luego destruye la clave para que no pueda crearse ningún otro gasto. Es un covenant que se hace cumplir con una promesa en lugar de con la red, y la promesa es justo lo que un opcode de covenant real haría innecesario. Conviene saberlo si un servicio le vende una bóveda: pregunte cuál de las dos cosas es.

Covenant frente a contrato de escrow

Un covenant restringe el destino; un contrato de escrow (depósito en garantía) restringe a los firmantes. Resuelven mitades distintas de la misma preocupación, y solo uno de los dos está disponible.

Un contrato de escrow es un multisig corriente con un tercero en el quórum, normalmente dos de tres, y funciona hoy en bitcoin: una plataforma de compraventa conserva una clave, y el comprador y el vendedor pueden liquidar sin ella o recurrir a ella para desempatar en una disputa. Lo que el escrow no puede hacer es restringir el resultado. En cuanto se forma un quórum de gasto, las monedas pueden ir a cualquier parte, incluso al árbitro. Un covenant fijaría de antemano el destino y eliminaría por completo del diseño la discrecionalidad del árbitro.

No confundir con

Preguntas frecuentes

¿Puedo usar un covenant en bitcoin ahora?

No. Ningún opcode de covenant está activo en la mainnet. Los productos que hoy anuncian un comportamiento de bóveda se basan en transacciones prefirmadas y una clave eliminada, lo que es una promesa y no una regla que haga cumplir la red.

¿Por qué son polémicos los covenants?

Porque las versiones generales son recursivas, lo que significa que una moneda podría llevar una restricción que vuelve a adherirse a cada gasto futuro. A los críticos les preocupan las monedas gravadas de forma permanente; los partidarios señalan que las transacciones prefirmadas ya imitan el efecto.

Para seguir leyendo

Términos relacionados

Más en la sección Protocolo y actualizaciones

Leer esta página en inglés