Difference between revisions of "OP RETURN"
(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 |