OP_RETURN

El script estándar para almacenar datos dentro de transacciones

OP_RETURN se refiere a un tipo de script de bloqueo estándar que puede usarse para almacenar datos dentro de transacciones.

El opcode OP_RETURN en sí termina inmediatamente la ejecución del script y lo marca como inválido.

Aunque es un opcode propio que puede usarse en varios scripts, el nombre "OP_RETURN" también se usa para referirse a un patrón de script estándar usado para almacenar datos arbitrarios dentro de transacciones. Esta página cubre el patrón de script de bloqueo OP_RETURN.

Este script de bloqueo no puede ser desbloqueado. No bloquees ninguna cantidad de bitcoins usando este patrón de script.

Esto a veces se llama script "nulldata". Ese es el término técnicamente correcto, pero no se usa mucho.

Uso

¿Cómo funciona un script OP_RETURN?

ScriptPubKey (bloqueo)

El script de bloqueo estándar OP_RETURN contiene solo el opcode OP_RETURN seguido de uno o más pushes de datos:

OP_RETURN <datos>

Esos pushes de datos pueden contener cualquier byte que quieras. Se usan comúnmente para almacenar cadenas de texto codificadas en ASCII:

Ícone Ferramenta ASCII

ASCII

Convierte entre bytes (en hexadecimal) y caracteres ASCII.

0 bytes
Bytes
0 caracteres
  • Los bytes hex entre 0x20 y 0x7f contienen los caracteres imprimibles.
  • Cualquier valor 0x1f o inferior es un carácter de control (no se mostrará, o mostrará un carácter extraño).
  • Cualquier valor 0x80 o superior no mostrará nada.

Consulta el estándar de codificación ISO 646 para más detalles.

  • Solo puedes usar opcodes de push de datos.
  • La salida debe tener un valor de 0 satoshis. Si incluyes una cantidad de bitcoins, se considerará no estándar y no será retransmitida por los nodos. Eso sirve para protegerte de perder bitcoins al bloquearlos en un script no gastable.

ScriptSig

Un script de bloqueo OP_RETURN es no gastable, así que no hay ScriptSig que pueda desbloquearlo. Las salidas con el script OP_RETURN solo existen para almacenar bytes de datos arbitrarios, y nunca pueden usarse como entradas en transacciones futuras.

Límites

Por defecto, los nodos solo retransmiten transacciones con una salida OP_RETURN que contenga un único push de datos de hasta 80 bytes. Las salidas OP_RETURN más grandes o múltiples se consideran no estándar (aunque todavía pueden minarse si se envían directamente a un minero).

Propósito

¿Por qué almacenar datos en la blockchain?

OP_RETURN proporciona una forma "oficial" y compacta de grabar datos arbitrarios en la blockchain sin inflar el conjunto de UTXOs (ya que la salida es demostrablemente no gastable y puede ser descartada por los nodos). Se usa en protocolos construidos sobre Bitcoin (marcas de tiempo, tokens, mensajes, etc.).