OP RETURN: Difference between revisions
Add Omni Layer, note Open Assets prefix |
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 | 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 | 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 | ! Prefix !! Protocol | ||
|- | |- | ||
| | | SPK || [http://coinspark.org/developers/ CoinSpark] | ||
|- | |- | ||
| | | DOCPROOF || [http://www.proofofexistence.com/ Proof of Existence] | ||
|- | |- | ||
| | | CryptoTests- || [http://crypto-copyright.com/ Crypto Copyright] | ||
|- | |- | ||
| | | CryptoProof- || [Crypto Copyright http://crypto-copyright.com/ | ||
|- | |- | ||
| | | BS || [http://blocksignit.com/ BlockSign] | ||
|- | |- | ||
| | | OA || [https://github.com/OpenAssets/open-assets-protocol/blob/master/specification.mediawiki Open Assets] | ||
|- | |- | ||
| | | STAMPD## || [http://stampd.io/ stampd] | ||
|- | |- | ||
| | | 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
- 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 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 |