OP_RETURN

O script padrão para armazenar dados dentro de transações

OP_RETURN refere-se a um tipo de script de travamento padrão que pode ser usado para armazenar dados dentro de transações.

O opcode OP_RETURN em si encerra imediatamente a execução do script e o marca como inválido.

Embora seja um opcode próprio que pode ser usado em vários scripts, o nome "OP_RETURN" também é usado para se referir a um padrão de script padrão usado para armazenar dados arbitrários dentro de transações. Esta página cobre o padrão de script de travamento OP_RETURN.

Este script de travamento não pode ser destravado. Não trave nenhuma quantidade de bitcoins usando este padrão de script.

Isso às vezes é chamado de script "nulldata". Esse é o termo tecnicamente correto, mas não é muito usado.

Uso

Como um script OP_RETURN funciona?

ScriptPubKey (trava)

O script de travamento padrão OP_RETURN contém apenas o opcode OP_RETURN seguido de um ou mais pushes de dados:

OP_RETURN <dados>

Esses pushes de dados podem conter quaisquer bytes que você quiser. São comumente usados para armazenar strings de texto codificadas em ASCII:

Ícone Ferramenta ASCII
Ícone Ferramenta

ASCII

Converta entre texto e bytes hexadecimais (codificação ASCII/UTF-8).

0 caracteres 0 bytes
  • Você só pode usar opcodes de push de dados.
  • A saída precisa ter um valor de 0 satoshis. Se você incluir uma quantidade de bitcoins, será considerada não padrão e não será retransmitida pelos nós. Isso serve para te proteger de perder bitcoins ao travá-los em um script não gastável.

ScriptSig

Um script de travamento OP_RETURN é não gastável, então não há ScriptSig que possa destravá-lo. As saídas com o script OP_RETURN só existem para armazenar bytes de dados arbitrários, e nunca podem ser usadas como entradas em transações futuras.

Limites

Por padrão, os nós só retransmitem transações com uma saída OP_RETURN que contenha um único push de dados de até 80 bytes. Saídas OP_RETURN maiores ou múltiplas são consideradas não padrão (embora ainda possam ser mineradas se enviadas diretamente a um minerador).

Propósito

Por que armazenar dados na blockchain?

O OP_RETURN fornece uma forma "oficial" e enxuta de gravar dados arbitrários na blockchain sem inchar o conjunto de UTXOs (já que a saída é provadamente não gastável e pode ser descartada pelos nós). É usado por protocolos construídos sobre o Bitcoin (timestamps, tokens, mensagens, etc.).