Pular para o conteúdo
buybitcoinsmart

Glossário / Referência do desenvolvedor

OP_RETURN

O que é OP_RETURN?
OP_RETURN é o opcode que torna uma saída de transação comprovadamente impossível de gastar, o que permite gravar uma pequena quantidade de dados arbitrários na blockchain sem inflar o conjunto de saídas ainda gastáveis.

Uma saída cujo script começa com 0x6a nunca pode ser gasta por ninguém, então os nós completos a descartam do conjunto de UTXO que precisam manter à mão. O Bitcoin Core 0.9.0 tornou essas saídas padrão em março de 2014 com uma margem de 40 bytes, elevada a 80 bytes de carga útil na 0.11.0. Se você compra e guarda, nunca precisará criar uma, mas paga pelas dos outros por meio do mercado de taxas.

Como funciona

OP_RETURN faz o script falhar no instante em que é alcançado. Nada pode satisfazer uma saída travada dessa forma e, ao contrário de um endereço de queima, em que os bitcoins são enviados a um hash cuja chave ninguém tem, a impossibilidade é visível para o software em vez de ser apenas provável. Essa visibilidade é o ponto central: um nó mantém um índice de cada saída gastável, e uma saída que pode ser provada morta nunca precisa entrar nele.

As carteiras que constroem uma definem seu valor como zero e colocam a carga útil depois do opcode, geralmente como um único push. O resultado é uma transação com uma saída normal que paga a alguém e uma segunda saída que carrega bytes e nenhum dinheiro.

A primeira versão do opcode foi um desastre. Em 2010, um script de entrada e um script de saída eram executados de forma unida, e OP_RETURN encerrava a avaliação informando sucesso, então quem gastava podia anexá-lo e sair com bitcoins pertencentes a outra pessoa. A correção daquele ano separou as duas metades da execução e transformou o opcode em uma falha incondicional. Seu uso moderno como carregador de dados veio quatro anos depois, quando os desenvolvedores já enfiavam dados em chaves públicas falsas que os nós nunca conseguiam podar.

Os limites de retransmissão vieram em seguida, e nenhum deles era regra de consenso. O Bitcoin Core lançou um carregador de 40 bytes padrão na versão 0.9.0, dobrou a margem para 80 bytes na 0.11.0, em julho de 2015, e permitiu uma saída desse tipo por transação. A versão 30.0 removeu o teto de tamanho padrão e a regra de uma única saída após uma discussão pública longa e mal-humorada, com o argumento de que os limites eram facilmente contornados e empurravam os dados para lugares piores. O Bitcoin Knots manteve os padrões mais estritos, e a divisão na política dos nós é uma das divergências em aberto no bitcoin hoje.

Por que isso importa quando você compra bitcoin

Nunca será pedido que você crie uma saída OP_RETURN e, se um site disser para você enviar bitcoin para uma, é um golpe: não há nada para onde enviar. Algumas corretoras e cadeias usam campos de memo, mas um saque de bitcoin nunca precisa de um.

O que chega até você é a taxa. Dados escritos on-chain competem com o seu saque pelo mesmo espaço limitado, e o efeito é mensurável. O bloco 840.000, minerado em 20 de abril de 2024, arrecadou cerca de 37,6 bitcoin em taxas, o maior valor de qualquer bloco até hoje, porque um novo protocolo de tokens foi ativado exatamente nessa altura e milhares de pessoas correram para escrever nele. Quem por acaso sacou de uma corretora naquela tarde pagou várias vezes a taxa vigente por esse privilégio.

A defesa é o momento, não a indignação. As taxas variam em uma ordem de magnitude dentro de uma única semana, então consolidar seus bitcoins, tirá-los de uma corretora ou fazer qualquer transferência não urgente em um fim de semana tranquilo custa uma fração do que a mesma transferência custa durante uma corrida por dados. Carteiras que permitem que você defina sua própria taxa, em vez de adivinhá-la por você, merecem preferência exatamente por esse motivo. Se a questão de política importa muito para você, rodar o Bitcoin Knots em vez do Bitcoin Core é a forma direta de registrá-la, já que a política de retransmissão é escolhida individualmente por cada operador de nó.

Exemplo prático: quanto custam 80 bytes

Uma saída carregadora legada de tamanho máximo ocupa 92 bytes na rede: 8 bytes de valor definido como zero, um byte para o comprimento do script, depois 83 bytes de script formados pelo opcode, uma instrução de push, um byte de comprimento e 80 bytes de carga útil. Nada disso é dado de testemunha, então cada byte conta quatro unidades de peso, o que dá 368 unidades de peso ou 92 bytes virtuais. A 10 satoshis por byte virtual, isso são 920 satoshis antes de contar o restante da transação.

Para comparar, uma saída SegWit nativa comum ocupa 31 bytes, ou 31 bytes virtuais, então a saída de dados custa três vezes mais do que pagar a alguém. Dados nunca foram gratuitos, e o mercado de taxas é o único mecanismo de racionamento que o bitcoin tem.

OP_RETURN vs transação de dados nulos

OP_RETURN é o opcode; transação de dados nulos é o que o Bitcoin Core chama de todo o padrão de transação quando uma dessas saídas aparece nela. O software informa o tipo da saída como "nulldata" no JSON decodificado, e essa cadeia de caracteres é o que os exploradores de blocos costumam exibir. A distinção é pequena, mas evita uma leitura errônea comum: uma transação de dados nulos não é uma transação que não move dinheiro. Ela quase sempre também paga a alguém, com os dados viajando em uma segunda saída.

OP_RETURN vs inscrição

As inscrições não usam OP_RETURN de forma alguma, e é daí que vem uma confusão sem fim sobre o armazenamento de dados no bitcoin. O esquema ordinals, lançado em janeiro de 2023, esconde o conteúdo dentro de um ramo de script Taproot que nunca é executado, e esse ramo fica na testemunha, onde cada byte custa uma unidade de peso em vez de quatro. A consequência prática é a escala. Uma carga útil OP_RETURN ficou limitada pela política de retransmissão a 80 bytes por uma década, enquanto uma única inscrição pode se aproximar do tamanho de um bloco inteiro a um quarto do custo em peso por byte. O Runes, lançado em abril de 2024, seguiu o caminho oposto e codifica deliberadamente suas mensagens de protocolo em OP_RETURN, e é por isso que as duas discussões sobre dados no bitcoin são, na verdade, discussões sobre dois mecanismos diferentes.

Não confundir com

Perguntas frequentes

Posso escrever uma mensagem na blockchain do bitcoin?

Sim, em uma saída OP_RETURN, e você paga a taxa vigente por cada byte dela. Uma carga útil legada máxima de 80 bytes acrescenta cerca de 92 bytes virtuais à sua transação, o que é aproximadamente três vezes o custo de uma saída de pagamento comum.

Os bitcoins enviados a uma saída OP_RETURN se perdem para sempre?

Não há nada para enviar. Essas saídas são criadas com valor zero, e nenhuma carteira permite que você pague uma delas. Se um site pede que você envie bitcoin para um endereço OP_RETURN, é um golpe, porque esse endereço não existe.

O Bitcoin Core realmente removeu o limite de 80 bytes?

O Bitcoin Core 30.0 removeu o teto de tamanho padrão e a regra de uma saída por transação, e o Bitcoin Knots manteve os padrões mais estritos anteriores. Nenhum dos dois limites foi alguma vez uma regra de consenso, então os mineradores sempre tiveram liberdade para incluir dados maiores, se quisessem.

As inscrições usam OP_RETURN?

Não. As inscrições armazenam seu conteúdo em um ramo de script Taproot não executado dentro da testemunha, cobrado a uma unidade de peso por byte em vez de quatro. Os dados de OP_RETURN ficam na parte da transação que não é a testemunha e custam quatro vezes mais por byte.

Leia a seguir

Termos relacionados

Mais em Referência do desenvolvedor

Ler esta página em inglês