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.

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 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
Situação em que o preço de exercício da opção está muito próximo do preço de mercado do ativo subjacente. Ela pode não ter valor intrínseco relevante, mas ainda pode ter prêmio por causa do tempo e da incerteza restantes.
Ler o guia completoOpção de compraContrato que dá ao comprador o direito de comprar o ativo subjacente no preço de exercício, conforme seus termos. Quem vende o contrato assume a obrigação correspondente se o direito for exercido e atribuído.
Ler o guia completoOpção de vendaContrato que dá ao titular o direito, mas não a obrigação, de vender o ativo subjacente pelo preço de exercício antes ou no vencimento, conforme seus termos.
Ler o guia completo