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