比特币OP_RETURN元数据

参考自
在比特币的每一笔交易信息中,包含input和output两个部分。output里的脚本又称验证脚本,input里的脚本又称调用脚本。要想花掉交易A的ouput中的比特币,就需要构造一个交易B,能够使B的调用脚本满足A的验证脚本。

利用比特币网络存储数据

区块链可以看作是一个不可变的数据结构,所以人们试图利用这一特性开发其它应用。这就需要在交易记录中存储其它的数据。在普通的P2PH(pay to pubKey hash)交易中,可以将output里的验证脚本换成其它数据。

这么做,会导致这笔交易里的比特币不能再被花费,因为很难再找到满足条件的调用脚本(需要反求哈希)。这种方法还有一个严重的缺点,即在比特币节点上,通常出于速度考虑,未被花费的交易(UTXO)都会被存储在内存中,因此这种交易就会占用许多内存空间,影响比特币网络的效率。

所以,我们可以使用比特币的 OP_RETURN 指令。包含这一指令的交易也是不可花费的,但节点可以将其安全地移出UTXO集合,这笔交易可以在 OP_RETURN 中存储一定数量的字节。

广阔的应用

利用区块链上的这一存储空间,发挥你的想象力,可以做很多事情。比如,编写一套自己的脚本协议,利用比特币网络发行TOKEN。事实上,很早就有人这么做了,而且以太坊协议原本是要建立在比特币网络上的。

目前又不少主流项目采用元数据功能在比特币区块链中进行资产的发行和转移活动,比如说合约币(CounterParty)和Omnilayer,最终能够达到证明特定的商品、资产、股票等所有权的目的。已经在比特币区块链中成功发行的资产包括BitCrystals、FoldingCoin和 Tether。 另外,公证通和BitProof通过结合区块链的不可更改性与元数据功能,确保特定文件的有效性和合理性。这是元数据应用最广的领域。 其它应用还包括数字艺术档案的访问权和版权以及区块链中信息的永久有效性。

限制

然而,由于比特币核心开发者认为 OP_RETURN 会导致用户在比特币网络上存储过多的非交易信息,可能影响比特币的正常使用,所以对unspendable transaction大小做了限制(最早是40字节,扩大到80字节,之后又缩小到40字节)。并且一笔交易最多只能包含有一个有OP_RETURN的output。这使得一些二层协议的项目转投其它主链。

事实上,比特币的交易费是与交易的体积相关的,使用者都会趋向于在实现功能的前提下尽量少地占用空间,过小的强制限制并没有必要。而且 OP_RETURN 交易的总体积只占了整个区块体积的 0.3%。(2017)

未来

在2018年5月份的升级中,比特币现金计划将OP_RETURN的空间提升到223字节。或许这能为比特币的二层协议开发带来新的生机。

例子

比特币交易:
0x8bae12b5f4c088d940733dcd1455efc6a3a69cf9340e17a981286d3778615684

比特币OP_RETURN元数据_第1张图片

我们可以看到第一个output被标志为Unspendable address,Type为空。然后我们可以看到具体内容:

OP_RETURN 636861726c6579206c6f766573206865696469

0x36861726c6579206c6f766573206865696469经过UTF8-DECODER可以得到:

charley loves heidi

更多更具体的应用场景/设计/分析

个人想法

可以通过OP_RETURN的元数据分析比特币的非交易功能

你可能感兴趣的:(bitcoin,2018,blockchain)