OP RETURN
OP_RETURN is a script opcode used to mark a transaction output as invalid. Since the data after OP_RETURN are irrelevant to Bitcoin payments, arbitrary data can be added into the transaction by following the OP_RETURN with an OP_PUSHDATA. Since any outputs with OP_RETURN are provably unspendable, OP_RETURN outputs can be used to burn bitcoins.
Currently, the default Bitcoin client relays OP_RETURN transactions up to 40 bytes, but does not provide a way to create OP_RETURN transactions.
Philosophy
Some members of the Bitcoin community believe that use of OP_RETURN violates the contract of Bitcoin, because Bitcoin was intended to provide a record for financial transactions, not a record for arbitrary data. Despite this, use of OP_RETURN may continue unabated because there is no easy way to stop people from embedding arbitrary data in the blockchain, and OP_RETURN is an efficient way to do it. [bitcointalk discussion]
Resources on OP_RETURN
- coinsecrets.org: An OP_RETURN transaction explorer
- python-OP_RETURN
- StackExchange: Explanation of what an OP_RETURN transaction looks like
- Metadata in the Blockchain: The OP_RETURN Explosion
- How to Put Custom Messages Into Bitcoin Blockchain - OP_RETURN
OP_RETURN prefixes
Often, OP_RETURN transactions include a prefix to identify which protocol they belong to. There is no standardized method of claiming OP_RETURN prefixes, and not all OP_RETURN transactions use prefixes. At the time of writing, this wiki page is probably the most complete registry of OP_RETURN prefixes.
Prefix (Ascii-Encoded) | Protocol/Owner | Brief description |
---|---|---|
Fa | Factom | ? |
CC | Colu | ? |
? | Open Assets | Issuance and transfer of user-created assets |
MG | Monegraph | Digital work licensing |
id | Blockstore | ? |
ASCRIBE | ASCRIBE | Digital work licensing |
? | Counterparty | ? |