OP RETURN: Difference between revisions

From Bitcoin Wiki
Jump to navigation Jump to search
Occupy paul st (talk | contribs)
Add Omni Layer, note Open Assets prefix
Occupy paul st (talk | contribs)
Add known prefixes table from Gideon Green
Line 1: Line 1:
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 [[Proof of burn|burn]] bitcoins.
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 [[Proof of burn|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.
Currently, the default Bitcoin client relays OP_RETURN transactions up to 80 bytes [https://github.com/bitcoin/bitcoin/search?utf8=%E2%9C%93&q=MAX_OP_RETURN_RELAYa], but does not provide a way for users to create OP_RETURN transactions.


== Philosophy ==
== 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. [[https://bitcointalk.org/index.php?topic=471928.0 bitcointalk discussion]]
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 if they want to, and OP_RETURN is reasonably efficient in terms of [http://i.imgur.com/VAGZWBK.png data bytes stored as a fraction of blockchain space consumed]. Compared to some other ways of storing data in the blockchain, OP_RETURN has the advantage of not creating bogus UTXO entries. [https://github.com/bitcoin/bitcoin/pull/5286 Discussion on GitHub pull request]


== Resources on OP_RETURN ==
== Resources on OP_RETURN ==
Line 14: Line 14:


== OP_RETURN prefixes ==
== 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 list of 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 list of OP_RETURN prefixes. Note that this table is an attempt to catalog OP_RETURN prefixes that are already in use, *not* a system for reserving OP_RETURN prefixes!


{| class="wikitable"
{| class="wikitable"
|-
|-
! Prefix (Ascii-Encoded) !! Protocol/Owner !! Brief description
! Prefix !! Protocol
|-
|-
| Fa || Factom || ?
| SPK || [http://coinspark.org/developers/ CoinSpark]
|-
|-
| CC || Colu || ?
| DOCPROOF || [http://www.proofofexistence.com/ Proof of Existence]
|-
|-
| OA || [https://github.com/OpenAssets/open-assets-protocol Open Assets] || Issuance and transfer of user-created assets
| CryptoTests- || [http://crypto-copyright.com/ Crypto Copyright]
|-
|-
| omni || Omni Layer || ?
| CryptoProof- || [Crypto Copyright http://crypto-copyright.com/
|-
|-
| MG || [https://monegraph.com Monegraph] || Digital work licensing
| BS || [http://blocksignit.com/ BlockSign]
|-
|-
| id || Blockstore || ?
| OA || [https://github.com/OpenAssets/open-assets-protocol/blob/master/specification.mediawiki Open Assets]
|-
|-
| ASCRIBE || [https://ascribe.io ASCRIBE] || Digital work licensing
| STAMPD## || [http://stampd.io/ stampd]
|-
|-
| ? || Counterparty || ?
| Factom!! || [http://factom.org/ Factom]
|-
| FACTOM00 || [http://factom.org/ Factom]
|-
| Fa || [http://factom.org/ Factom]
|-
| FA || [http://factom.org/ Factom]
|-
| tradle || [http://tradle.io/ Tradle]
|-
| LaPreuve || [http://www.lapreuve.net/ LaPreuve]
|-
| hex:5888 || [http://blog.onename.com/blockstore-bitcoin/ Blockstore]
|-
| hex:5808 || [http://blog.onename.com/blockstore-bitcoin/ Blockstore]
|-
| id || [http://blog.onename.com/blockstore-bitcoin/ Blockstore]
|-
| BITPROOF || [https://bitproof.io/ Bitproof]
|-
| S1 || [https://stampery.co/ Stampery]
|-
| ASCRIBE || [https://www.ascribe.io/ Ascribe]
|-
| ProveBit || [https://github.com/thereal1024/ProveBit ProveBit]
|-
| EW  || [http://eternitywall.it/ Eternity Wall]
|-
| CC || [http://colu.co/ Colu]
|-
| omni || [http://www.omnilayer.org/ Omni Layer]
|-
| MG || [http://monegraph.com/ Monegraph]
|-
| RMBd || [https://app.remembr.io/ Remembr]
|-
| RMBe || [https://app.remembr.io/ Remembr]
|-
| ORIGMY || [http://originalmy.com/ OriginalMy]
|}
|}

Revision as of 11:18, 29 December 2015

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 80 bytes [1], but does not provide a way for users 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 if they want to, and OP_RETURN is reasonably efficient in terms of data bytes stored as a fraction of blockchain space consumed. Compared to some other ways of storing data in the blockchain, OP_RETURN has the advantage of not creating bogus UTXO entries. Discussion on GitHub pull request

Resources on 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 list of OP_RETURN prefixes. Note that this table is an attempt to catalog OP_RETURN prefixes that are already in use, *not* a system for reserving OP_RETURN prefixes!

Prefix Protocol
SPK CoinSpark
DOCPROOF Proof of Existence
CryptoTests- Crypto Copyright
CryptoProof- [Crypto Copyright http://crypto-copyright.com/
BS BlockSign
OA Open Assets
STAMPD## stampd
Factom!! Factom
FACTOM00 Factom
Fa Factom
FA Factom
tradle Tradle
LaPreuve LaPreuve
hex:5888 Blockstore
hex:5808 Blockstore
id Blockstore
BITPROOF Bitproof
S1 Stampery
ASCRIBE Ascribe
ProveBit ProveBit
EW Eternity Wall
CC Colu
omni Omni Layer
MG Monegraph
RMBd Remembr
RMBe Remembr
ORIGMY OriginalMy