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:
ASCII
- 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.).