从 Bitcoin 深入理解“区块链状态”

转自 https://zhuanlan.zhihu.com/p/85351374

将 Bitcoin 视为一个不可窜改的账本,一笔入块的交易意味着对账本的合法的修改。在现实的生活中,一笔交易可能意味着网络极客使用 Bitcoin 购买 Pizza,可能意味着一笔快捷的跨境汇款,也可能意味着使用 Omni 网络上使用 USDT。不难得出这样的结论:区块链交易越多,其对于现实生活中的影响,既应用自然也越多。一笔笔交易汇集成一个个区块, 并且最终构成了区块链的整体历史和状态:区块链历史包含了所有的区块数据和交易数据,是从Genesis到达当前状态的路径;而状态是节点在处理完从Genesis 到当前高度的所有区块和交易后形成的最终结果。

本文梳理了 Bitcoin 的区块链状态可以通过哪些方式进行改变,并着重关注链外数据是如何放置到 Bitcoin ,以此将 Bitcoin 的去中心化、抗审查、去信任等特性影响现实社会(应用)

如何改变区块链状态?

Bitcoin 状态变更的方式主要区分为:转账交易、无意义地址、Op_Return 、Coinbase Tx 这四种。前三者具备一样的数据结构,既 Bitcoin 交易的数据结构,而 Coinbase 交易则稍微不同:Coinbase 交易中有一个 Coinbase Data,长度在2-100字节之间可以填充任意数据。在 Genesis 的 Coinbase Tx 中,中本聪写下了被时常提起的:The Times 03/Jan/ 2009 Chancellor on brink of second bailout for banks。就状态变更的目的而言,转账交易所涉及的一般是代币所有权的转换(既货币功能),而其他三者则能够存储一定数量的链外数据,也因此能够将应用扩展到可想象的一切领域。在 Bitcoin,货币功能的 UTXO 账本与链外状态账本构成了 Bitcoin 的总状态。

假地址 (fake Bitcoin addresses) 可以区分为3类,一类为:Pay-to- Fake-Key-Hash (P2FKH) ,这是在使用 P2PKH 时,将 data 存储于 ,其容量为 20 bytes;还有一种为 Pay-to- Fake-Key (P2FK) ,这是在使用 P2PK 时,将 data 存储于原先放置公钥的位置,其容量可达 34或者65 bytes(取决于公钥是否压缩)。于此同时,为了增加能够放置的数据量,可以采用多签假地址。显而易见的是,通过假地址产生的 Output 是无法被花费的。下文是 P2PKH 的锁定脚本,P2FKH 将原先公钥处放置了外部数据。

OP_DUP OP_HASH160 00e6e9c2ab476c627c157ccaa2a1a526b86fb797 OP_EQUALVERIFY OP_CHECKSIG

Op_Return 是 Bitcoin 的脚本操作码,是最为直接的放置链外数据的方式。2014年2月27日,Op_Return 开始能够支持40 Bytes 的数据上传(Bitcoin v0.9.0),2015 年2月4日,Op_Return 则能够支持80 Bytes 的数据上传(Bitcoin v0.11.0), 我们可以轻易地在区块链浏览器找到这样的[交易](https://btc.com/74a0d9e0af8cf903c3372f25649ae6ae275af2e5a6005249dffcb8cadda85c83,其锁定脚本展示为:

OP_RETURN 6f6d6e69000000000000001f0000000667cb9900

由于 Coinbase 交易为每个区块一笔,且只能够由矿工进行,其应用自然受到了巨大的限制。而具备相同功能的假地址与 Op_Return,由于 Op_Return 是官方版本支持的向区块链账本放置任意数据的方式,其高效、易辨识、低费用等特点,假地址也越来越少被使用。

区块链状态与落地应用

如上文所述,Bitcoin 的状态变化有多种方式。从应用落地的角度出发,区块链状态的变化对于现实到底意味着什么呢?Bitcoin 的转账交易本质是 Bitcoin 所有权的转换,这符合中本聪最初白皮书中对于 Bitcoin 的定义:货币。Bitcoin 的货币应用,跨境支付、黑市交易、ATM 等等都已经有了大量的讨论。但是,Bitcoin 最高7笔的 tps 、长时间的交易确认等特点很难支持全球范围内的小额支付,目前大多数人也将 Bitcoin 认为是全球结算层,是数字黄金。Coinbase 交易、Op_Return 支持链外数据上链,也因此出现了其他类型的落地应用。

Coinbase 交易

Coinbase 交易中的 Coinbase Data 可以放置2-100字节的数据,最为熟知的应用是联合挖矿(Merge Mine)与区块链治理。

Coinbase Tx Output

已经有大量区块链与 Bitcoin 联合挖矿,譬如 Bitcoin 与 Namecoin、亦来云、RSK、Ixcoin、Devcoin、I0coin、Groupcoin 等等。最初联合挖矿被运用于 Namecoin,目前主要的应用则为矿池。目前,RSK 已经继承了 Bitcoin 近40 %+ 的算力,联合挖矿能够赋予给公链巨大的安全性。联合挖矿的最简单过程是:1)辅链提供一个可挖矿区块 A,需要矿工来解决谜题;2)辅链将区块 A Hash (或者其他信息)等放置于主链区块的 Coinbase 交易;3)主链解决难题,区块 A 将主链的工作量证明信息放置于辅链,证明已经达到该要求。Coinbase 交易被用于放置辅链的区块信息。

基于 Coinbase 交易的区块链治理被称为 MASF(miner-activated soft fork)。在 BIP16 的分叉过程中,支持 P2SH 的矿工需要将“/P2SH/”写入到 Coinbase Data 中。而在 BIP34、65、66中,软分叉的升级需要矿工升级 bitcoin 软件版本号,并且将 Block Number 写入 Coinbase Data 中。显而易见的是,由于 Bitcoin 分叉次数并不多,基于 Coinbase 交易的区块链治理必然是数量极少的。

Op_Return 交易

Op_Return 交易是将链外数据上链的最佳手段,自2018年开始,Op_Return 交易占 Bitcoin 总交易的比例从 3.83% 一直到19年7月的24.31%,并已经7个月稳定在20%以上。其中关键增量在 Omni 为代表的代币发布平台(主要为 USDT)以及VeriBlock 为代表的比特币安全性继承。目前,USDT 交易与 VeriBlock 交易在占比 Op_Return 的交易总量的97%以上,月均交易量在200万-300万之间。

数据来自https://www.blockchain.com/explorer 与 https://opreturn.org/

以 Omni / Omnilayer(以前的 Mastercoin), Colored Coins, Counterparty 为代表的代币发布、智能合约平台最为重要的是 Omni 上发布的 USDT。Omni Layer 通过将改造过且兼容其他 Bitcoin 节点的客户端作为 Bitcoin 网络的节点,并查找对其区块链具有特殊含义的嵌入在 Bitcoin 中的数据,然后根据它们的规则解释这些数据执行操作(规则已确定的代码储存于特殊客户端中)。通常,只要在 Omni Layer2 上发起了一笔交易,Bitcoin 也会发起一笔交易。Omni 的交易结构如下:在3个 Output 中,一个 Output 为找零地址,一个 Output 为接收 USDT 的地址,另外一个在区块链浏览器中往往展示为:Unable to decode output address,这个 Output 即为通过 Op_Return 放置于 Bitcoin 的数据。具体的一笔 Omni Layer Simple Send 一般包括:Transaction version、Transaction type、Currency identifier、Amount to transfer 这四个参数。客户端通过维护特定的 Op_Return Output set,则可以维护用户所持有的 Omni Layer 上的代币。值得一提的是,Ethereum 正是从 Mastercoin 出发建设更加灵活可用的智能合约平台。

在上述交易的数据结构中,Transaction Type 的不同意味着执行的代码逻辑的不同,在 Omni Layer 上目前可以做到:代币转账、ICO、代币原子交换、发布代币、资产上链等等。代币被认为是 Bitcoin 之后最大的创新,基于区块链的代币催生了稳定币、代币融资、资产上链等各类应用。伴随着越来越多的链外数据上链,区块链状态开始与外部世界发生了紧密的联系。链外数据往往是现实世界的映射,USDT 虽然是发布在区块链上的资产,而且信任锚点在于 Tether 存储在银行的保证金。链外资产的确可以轻松的在区块链上生成对应资产,但是资产是否可信?上链过程是否可信?这里还有很多问题尚待解决,也是目前区块链应用的难点。

VeriBlock 走向了完全不同的道路,其并不将现实世界的资产映射到区块链中,而是将其他区块链的数据放置于 Bitcoin。通过去中心化的方式向 Bitcoin 放置区块头数据,在 Bitcoin 维护了 VeriBlock 的总账本。由于该账本是放置于 Bitcoin 的区块中的,可以认为 VeriBlock 继承了 Bitcoin 的安全性。于此同时,VeriBlock 增加了交易吞吐量并改进其经济模型,能够支撑其他的区块链也可以通过同样的方式将自身账本放置于 VeriBlock,使 Bitcoin 能够保护无数条区块链,进而能够在 Bitcoin 的安全基础上支撑各种类型适应垂直场景的区块链,形成了已 Bitcoin 为主的区块链网络。VeriBlock 在最高峰曾占据了 Bitcoin 日交易量的 40%,大幅度提高了交易费用。对于 VeriBlock 褒贬不一(是否污染了 Bitcoin 网络呢?),不过这并不是本问题讨论的范围。

在这个案例中,链外数据是其他区块链的数据。其他区块链的数据上链往往与跨链主题相关,此类数据上链能够将单一区块链拓展为区块链网络,极大地拓展 Bitcoin 的交易速度、确认速度等问题。

注:2017年之前有对于 Op_Return 的具体研究,由于交易量不大因此并未在本文进行讨论。但是可以发现之前出现大量将链外数据上链的项目


参考:

https://github.com/OmniLayer/spec#appendix-a-storing-omni-protocol-data-in-the-blockchain

http://www.talkcrypto.org/blog/2016/12/30/op_return-40-to-80-bytes/

https://www.mycryptopedia.com/uasf-user-activated-soft-fork-explained

https://komodod.com/dpow/btc

你可能感兴趣的:(从 Bitcoin 深入理解“区块链状态”)