OP_RETURN
El opcode para meter datos arbitrarios en la blockchain. Una válvula de escape diseñada para evitar males mayores.
Qué es OP_RETURN OP_RETURN es un opcode de Bitcoin Script que inmediatamente marca un output como inválido para gastar. Cualquier script que empiece con OP_RETURN es "provably unspendable" (demostrablemente no gastable). Pero tiene un uso secundario crucial: permite incluir hasta 80 bytes de datos arbitrarios en la blockchain. El script OP_RETURN <datos> En hexadecimal: 6a<longitud><datos> Ejemplo con el texto "Hello Bitcoin": 6a0d48656c6c6f20426974636f696e Comportamiento especial Cuando un nodo ve un output con OP_RETURN:
Verifica que los datos no excedan el límite (80 bytes estándar) NO añade este output al UTXO set El output queda en la blockchain pero no consume memoria de estado
Este último punto es crucial: los outputs OP_RETURN no inflan el UTXO set que todos los nodos deben mantener en memoria. Por qué existe Antes de OP_RETURN, la gente que quería poner datos en la blockchain usaba hacks:
Crear outputs con claves públicas falsas (que contenían los datos) Estos outputs eran técnicamente gastables pero nadie tenía la clave privada Permanecían en el UTXO set para siempre, consumiendo recursos de todos los nodos
OP_RETURN fue un compromiso: dar un mecanismo oficial para meter datos que:
No infla el UTXO set Es claramente datos, no fondos "perdidos" Tiene un límite de tamaño razonable
CALLOUT INFO: Un compromiso pragmático OP_RETURN fue diseñado bajo el principio de "si van a hacerlo de todos modos, mejor darles una forma que haga menos daño". Es mejor tener datos explícitos que no inflan el UTXO set que datos disfrazados que sí lo hacen.
Usos legítimos Proof of existence (timestamping) Puedes demostrar que un documento existía antes de cierta fecha:
Hashear el documento Incluir el hash en un OP_RETURN La transacción confirmada prueba que el hash existía en ese momento
Servicios como OpenTimestamps usan esto para timestamping descentralizado. Protocolos de capa superior Varios protocolos usan OP_RETURN para anclar datos:
Omni Layer (el Tether original) Counterparty Diversos sistemas de identidad y certificación
Mensajes y marcadores Algunas transacciones incluyen mensajes o identificadores en OP_RETURN por razones de auditoría o comunicación. La controversia OP_RETURN ha sido controvertido desde su introducción: Argumento "purista": Bitcoin es dinero, no una base de datos. El espacio de bloque debería usarse solo para transacciones financieras, no para almacenar JPEGs, textos o hashes de documentos. Argumento pragmático: La blockchain es un timestamping service por naturaleza. Si la gente quiere anclar datos, es mejor que lo hagan de forma limpia (OP_RETURN) que de formas que dañan más la red. El límite de 80 bytes refleja este compromiso: suficiente para un hash y metadatos, no suficiente para almacenar archivos grandes. Inscriptions y Ordinals En 2023-2024, los Ordinals e Inscriptions reavivaron este debate. Pero técnicamente, Inscriptions no usan OP_RETURN. Usan el witness data de transacciones Taproot, que tiene límites mucho más generosos. El debate sobre el uso del espacio de bloque continúa, pero es un debate separado de OP_RETURN. Límites Estándar (relay policy): 80 bytes de datos. Las transacciones con OP_RETURN más grande son válidas pero la mayoría de nodos no las retransmiten. Consenso: Técnicamente se pueden incluir datos más grandes si un minero los incluye directamente, pero la política estándar de 80 bytes es respetada por la mayoría. Un OP_RETURN por transacción: La política estándar permite solo un output OP_RETURN por transacción. Implicaciones prácticas Para usuarios normales: probablemente nunca necesites usar OP_RETURN directamente. Para desarrolladores: es útil para anclar datos de protocolos de capa superior, pero considera si realmente necesitas la blockchain o si hay alternativas más apropiadas. Para el ecosistema: OP_RETURN es una herramienta que existe y se usa. Entender su propósito y limitaciones ayuda a entender los debates sobre el uso del espacio de bloque.