在区块链上存储额外数据是指那些存在区块链上但是对交易没有任何影响的数据,目前存储额外数据主要有两种方法:OP_RETURN
和Multi-Signatures
。
2013年,比特币协议中引进了一项新的功能,即:创建一种名为OP_RETURN
的交易,可以嵌入40字节小段数据(目前已经是80字节)。最初这个功能旨在把情景信息(例如配送信息)加入比特币交易中,后来就发展出了今天的这种用法:创建最小量(0.000000001BTC+交易费)的交易,然后把信息嵌入进去。利用这个功能的一个有趣的应用就是存在性证明(Proof of Existence),它可以为任何文件创建一个hash,然后存放到区块链上,最终通过比较时间戳和hash就能证明该文件在某时刻确实是存在的。但是这种方法也有一个缺点就是通过该交易发送的比特币无法被再次使用,也就是永久消失了。
多签名地址是另外一种存放数据的方法,对n-of-m型的多签名地址,因为只需要提供n个有效签名就可以花费该交易,但剩下的m-n个签名的内容还是分配了存储空间,如果没有填写的话那就回用0填充,我们就能将0换成我们想填充的数据,这种方法的好处是该交易依然可以继续被花费。
侧链不是指特定的某个区块链,而是指那些遵守侧链协议的所有区块链,这个词是针对比特币主链来说的。侧链协议是指可以让比特币安全的从比特币主链转移到其他区块链,同时又可以让其他区块链上的货币安全返回到比特币主链的一种协议。
目前侧链主要是通过楔入式侧链技术(pegged sidechain)来实现的,主要由Blockstream公司负责开发,详细内容可以参考论文《Enabling Blockchain Innovations with Pegged Sidechains》,侧链一般具有如下属性:
侧链实现的过程中一般包括如下四个阶段:
竞争期结束之后,这个赎回交易被打包进区块中,用户就可以使用自己新币了。从侧链上转移比特币的过程也是如此。
合约币从本质上来说是建立在比特币之上的传输层协议,把比特币区块链当成可信的时间戳服务和可信的消息发布证明,主要目的是用来建立和使用去中心化的财务工具协议。协议内部的货币是合约币XCP,合约币并不是通过挖矿产生的,而是通过燃烧证明Proof of Burning
通过燃烧比特币来产生的,这个燃烧的过程是在2014年1月份已经完成的,总量燃烧了2130个比特币(https://blockchain.info/address/1CounterpartyXXXXXXXXXXXXXXXUWLpVr),产生了260万个XCP,每个XCP交易都包含如下信息:
为了方便区分,每个合约币交易的数据区域都以UTF-8格式的CNTRPRTY打头,用以区分合约币交易和比特币交易。合约币交易中的源地址和目的地址其实就是比特币地址,任何比特币地址都可以收到任何合约币资产。合约币目前已经实现了如下功能:
合约币的所有交易类型和数据信息可以通过https://xchain.io/查看,官方文档参考:https://counterparty.io/docs/。