Skip to content

OP_RETURN

INFO

Opcode number: 106
Byte representation: 0x6a
Short description: Fail the script immediatly (must be executed).

OP_RETURN is an opcode in bitcoin's scripting system that allows for the inclusion of a small amount of arbitrary data in a transaction. This opcode immediately marks the transaction output as unspendable, ensuring that the output can't be used as an input in a subsequent transaction. It's primarily used to embed arbitrary data in the blockchain.

Operation

  1. Terminate the script execution unsuccessfully. Any transaction output with this opcode is not spendable, but the data after OP_RETURN remains permanently on the blockchain. It's a way of declaring that the output can't be spent, and it's only here for the data.

Notes

  • OP_RETURN is commonly followed by a pushdata operation that determines the length of the data to be embedded, and then the data itself.
  • The maximum size of the data push is 80 bytes.
  • This means that OP_RETURN can be at most 83 bytes: 1 byte for the opcode, 1-2 bytes for the data push, and 80 bytes of data.
  • OP_RETURN outputs are used for various purposes, from proving the existence of a particular piece of data at a certain point in time to more complex protocols built on top of bitcoin.
  • Historically, there were debates around the use of OP_RETURN because embedding data into the bitcoin blockchain adds to its size without directly supporting the transfer of bitcoin.

Examples

Example 1

Embedding the string "HELLO" into the blockchain:

shell
# ASM script
OP_RETURN OP_PUSHBYTES_5 48454c4c4f

# Raw script
6a0548454c4c4f

# Script result
Output is unspendable and contains the data "HELLO".