Skip to content
Todos os guias de opções e contratos futuros
Saídas de transações Bitcoin11 min read

OP_RETURN no Bitcoin: data carriers, nulldata e saídas não gastáveis

Entenda como OP_RETURN registra dados públicos, por que a saída não pode ser gasta, como a política de relay do Bitcoin Core 31.1 difere do consenso e o que muda em relação às inscrições em witness.

Neste guiaOP_RETURN coloca dados no script de bloqueio

Resumo breve

OP_RETURN é uma forma de anexar dados públicos ao script de saída de uma transação Bitcoin. O Bitcoin Core trata saídas cujo script começa com OP_RETURN como comprovadamente não gastáveis e as exclui do conjunto UTXO. Os limites atuais de relay são política de cada nó, não um limite de payload imposto pelo consenso a toda a rede.

OP_RETURN coloca dados no script de bloqueio

Cada saída Bitcoin contém um valor e um script de bloqueio chamado scriptPubKey. Uma saída OP_RETURN, também classificada como nulldata, começa com o opcode OP_RETURN e pode inserir uma sequência de bytes depois dele. Quando a transação entra em um bloco, esses bytes ficam registrados publicamente como parte da saída. A forma com dados após OP_RETURN é esquemática; ela não cria uma camada de dados separada, saldo de token ou mensagem privada.

Por que a saída não pode ser gasta novamente

OP_RETURN é um opcode que falha se a execução chegar até ele. Uma tentativa de gastar uma saída cujo script começa com esse opcode não consegue satisfazer o script. Por isso, o Bitcoin Core classifica a saída como não gastável e pode deixá-la fora do conjunto UTXO sem manter uma moeda que nunca poderá ser usada. Consulte a implementação em script.h do Bitcoin Core 31.1. Bitcoin Core script implementation.

O script é maior que o payload

Quando um nó aplica um limite de data carrier, ele pode contar mais do que os bytes da aplicação. O script bruto da saída inclui o opcode OP_RETURN, a instrução de push e sua codificação de comprimento, além do payload. Um payload de 80 bytes pode resultar em um script de 83 bytes: um byte do opcode, dois do cabeçalho OP_PUSHDATA1 e 80 de dados. Por isso, guias antigos que citam “80 bytes” costumam falar do payload, enquanto opções novas podem medir o script inteiro.

Política padrão de data carrier no Bitcoin Core 31.1

No Core 31.1, -datacarrier fica ativado por padrão e -datacarriersize tem limite padrão de 100.000 bytes. A medida soma o tamanho dos scriptPubKey brutos de todas as saídas data carrier da mesma transação. Várias saídas NULL_DATA compartilham o limite e contam também o opcode e a codificação do push. O Core 30.0 substituiu o antigo limite de 83 bytes de script por um limite agregado de 100.000 e passou a permitir várias saídas; o Core 31.1 mantém o padrão. Consulte as opções do Core 31.1, a implementação da política e as notas da versão 30.0.

Ilustração sem texto: o fluxo de dados de uma saída para em uma barreira, enquanto dados witness da entrada chegam à cadeia
Compara dados OP_RETURN em uma saída com dados witness em uma entrada; eles ocupam campos diferentes e seguem regras distintas

Relay e consenso respondem a perguntas diferentes

Cada nó pode desativar o relay de data carrier ou reduzir o limite local; outros nós e versões do software podem usar parâmetros diferentes. Se um nó recusar a entrada de uma transação no mempool, isso pode significar apenas que sua política local não a retransmite, não que o consenso a proíba. O Bitcoin Core aplica o limite de dados ao verificar transações padrão e verifica separadamente as regras de consenso ao validar blocos. Core consensus transaction checks. See Bitcoin Core 31.1 mempool standardness implementation.

O valor da saída é perdido; a taxa é calculada à parte

É possível atribuir um valor a uma saída OP_RETURN, mas ele não pode ser recuperado e fica permanentemente inutilizável. Carteiras costumam usar valor zero. Se forem atribuídos 1.000 sats, eles não viram automaticamente taxa do minerador. A taxa continua sendo a soma das entradas menos a soma de todas as saídas. Os bytes do script ocupam peso da transação e podem aumentar a taxa para uma mesma taxa em sat/vB. Veja o guia de taxas de transação Bitcoin.

Várias saídas de dados não multiplicam o limite

O Bitcoin Core 31.1 permite várias saídas NULL_DATA padrão, mas soma os tamanhos dos scripts dentro do mesmo limite por transação. Dividir o payload entre saídas não amplia o espaço e cada saída adiciona dados e peso de bloco. O relay também depende do peso da transação, das taxas e de outras políticas de padrão do nó. A aceitação por uma carteira ou explorador não garante propagação pela rede inteira.

OP_RETURN é diferente de uma inscrição em witness Taproot

Os dados OP_RETURN ficam no scriptPubKey de uma saída quando a transação é criada. Os dados witness do SegWit são serializados separadamente para cada entrada; a BIP 141 os descreve como dados de pilha associados a cada entrada. Um gasto por caminho de script Taproot pode revelar o script e o bloco de controle no witness da entrada. O software Ordinals pode interpretar ali uma estrutura de inscrição conforme uma convenção de aplicação, mas esse mecanismo não é uma saída nulldata. Consulte BIP 141, BIP 341 e o guia de [Ordinals e inscrições Bitcoin](/learn/bitcoin-ordinals-inscriptions-satoshi-numbering-witness-data-explained).

Confira política, valor e privacidade antes de usar

Identifique a versão do Bitcoin Core e as configurações locais em que você está se baseando. Calcule separadamente o tamanho do script bruto completo, o peso da transação, o valor destinado à saída não gastável e a taxa do minerador. O consenso não atribui significado a bytes arbitrários; confirme também se o protocolo ou destinatário reconhece o formato. O que é gravado na cadeia é público, então não inclua senhas, dados pessoais nem arquivos que devam ser privados. Para entender saídas e troco, veja o guia de UTXO e coin control no Bitcoin.

Perguntas frequentes

Q1O consenso do Bitcoin limita OP_RETURN a 80 bytes de dados?

Não. O valor de 80 bytes descreve o payload de um exemplo antigo de política de padrão, não um limite universal de consenso. O Bitcoin Core 31.1 usa por padrão um limite agregado de 100.000 bytes para scripts de dados, e cada nó pode configurar sua política.

Q2Um OP_RETURN maior aumenta a taxa da transação?

Pode aumentar. Os bytes do script acrescentam peso, então a taxa pode subir para uma mesma taxa em sat/vB. Sats atribuídos à saída não gastável são perdidos à parte e não são a taxa do minerador.

Q3OP_RETURN é a mesma coisa que uma inscrição Ordinals?

Não. OP_RETURN fica em um script de saída e torna essa saída não gastável. Uma inscrição Taproot típica coloca conteúdo nos dados do caminho de script do witness de entrada, interpretados pelo software Ordinals conforme suas convenções.

Fontes e leituras adicionais

Relatar um problema

Vamos preparar um e-mail com o link deste artigo. Mark só receberá o relato depois que você enviar

Verificação rápida

Terminou o guia? Confira o que aprendeu com 3 perguntas

Pergunta 1 / 3

Pergunta 01

O que o -datacarriersize padrão do Bitcoin Core 31.1 mede?

Escolha uma resposta para ver a explicação

Glossário de opções