对手方
比特币的扩展
状态机复制
亚当・克雷伦斯坦
2024-03-29
目录
- 背景 .................................................................... 3
1.1. 状态机复制 ...................................................... 3 - 对手方,一个区块链元协议 ................................. 5
2.1. 对手方交易 ........................................................ 6
2.2. 交易编码 ........................................................ 7
2.3. 原生货币 .......................................................... 8 - 未来发展 ............................................................ 9
- 与其他二层协议的比较 .................................... 10
背景
对手方的开发始于 2013 年 11 月底。在次年 1 月 2 日,对手方通过比特币论坛发布公告,并立即投入生产。¹
1: https://bitcointalk.org/index.php?topic=395761.0
自那时起,对手方网络一直在线并被公众积极使用。因此,这份白皮书是在十年后撰写的 —— 最初的意图是让对手方的代码库本身记录其可行性;然而,正式化协议设计和历史的描述仍然是有益的,特别是考虑到对设计某些特征的持续误解、对手方在区块链生态系统历史中所扮演的特殊角色,以及近期对比特币 “L2” 协议的兴趣复苏。
对手方的想法最初来自 Mastercoin 项目。² 在对手方推出的几个月前,J.R. Willett 将 Mastercoin 描述为首次 ICO 的一部分。³
3: https://www.forbes.com/sites/laurashin/2017/09/21/heres-the-man-who-createdicos-and-this-is-the-new-token-hes-backing/
对手方的创始人 —— 亚当・克雷伦斯坦、埃文・瓦格纳和罗比・德莫迪 —— 看到了 Mastercoin 设计的巨大潜力,但对 Mastercoin 的推出和开发方式并不满意。对手方是实现 Mastercoin 背后架构愿景的努力,但与之相反,遵循中本聪及其创造的原则和价值观。
即使在 Mastercoin 拥有简单的原生代币转移功能之前,对手方就能够展示后来被称为元协议或元链的可行性和广泛能力,成为 Willett 最初设计的架构的模型实现。此后,对手方激励了一些模仿者和二阶元协议,如 STAMPS、SRC-20、BRC-20 和 Mastercoin 本身。但对手方的架构特征并不广为人知,这部分是比特币特有设计的结果,其偶然特征被错误地认为是所有区块链的基本特征。
状态机复制
区块链通常被称为 “不可变数据库”,因为与传统的可变数据库不同,区块链没有能够随意改变其状态的中央权威。使用区块链,数据是日志结构的,由成千上万的匿名实体全球复制,并通过工作量证明进行安全保护。然而,“区块链” 一词不仅指块和交易的历史日志,还指去中心化的系统本身,即协议及其在特定网络中的实例。
比特币区块链尤其不仅仅是一个数据库 —— 不仅仅是由规范块和交易集合构成的数据结构 —— 它还描述了在参考实现及其所有克隆中体现的协议。
没有比特币核心代码库,比特币将无法完全指定。例如,作为历史日志的区块链并不决定未来的区块奖励减半。更相关的是,它并不决定这些数据如何被解释;例如,如何计算余额作为该地址可支配的 UTXO 值的总和。这些余额必须以确定性方式计算,以便网络中的每个节点为给定的区块链日志副本报告相同的余额,并且余额本身不会记录在块中,也不会被矿工验证。
如果某个比特币协议的替代实现报告的余额与比特币核心报告的余额不同,那么根据定义,它将是比特币的不正确实现。实际上,比特币设计的一个有趣特征是,比特币协议的绝大多数由矿工验证,因此无效交易通常不会进入交易日志。然而,人们可以很容易想象一种替代设计,其中双重消费交易作为无用数据包含在块中,并在计算给定地址的(有效)UTXO 列表时被每个节点忽略。严格来说,区块链不仅仅是数据 —— 它也是逻辑和状态。
区块链的定义特征是状态机复制的架构模式。该架构有两个组成部分:一个分布式日志(即块列表)和一个解析该日志的状态机(确定性地)并存储与每个其他节点相同的本地状态。日志在所有比特币节点中复制,每个节点根据对该日志中数据的解释报告相同的网络状态。
urn:uuid
图 1:霍尔德对阿基米德证明的重建
对手方,一个区块链元协议
作为一个真正的元协议,对手方将区块链的架构模式推向其逻辑结论:对手方通过添加解析逻辑和派生状态,利用一种新颖的状态机扩展比特币协议,该状态机将比特币区块链日志视为新协议消息的存储。比特币节点明确忽略的区块链数据被对手方软件解析,并以确定性方式派生出额外状态。
图 2:霍尔德对阿基米德证明的重建
对手方具有与比特币相同的安全模型:每个对手方交易都是比特币交易,因此对手方交易的完整历史得到了比特币挖矿网络的全部哈希算力的保护。唯一的区别是,对手方的用户必须依赖两个代码库 —— 比特币核心和对手方核心 —— 而不是仅仅依赖比特币核心。比特币矿工对对手方 “无意识”,验证的对手方协议部分比比特币协议少;但这种区别是定量的,而不是定性的。这在各种彩色币协议中也是如此,包括序数。
如果有人运行一个不符合对手方协议的对手方软件版本,如参考实现中隐含指定的那样,后果与有人运行一个与比特币核心不一致的比特币全节点完全相同。对手方网络的矿工只是比特币矿工,这并不比比特币全节点不必是矿工、比特币矿工不必运行全节点的问题更大。然而,对手方协议无法经历不是比特币的硬分叉或软分叉。
对手方交易
因此,对手方协议确实是比特币协议的扩展。它实现了一些比特币未提供的功能。这些功能包括但不限于代币发行、完全去中心化和无信任的资产交换、差价合约、原生预言机和无信任游戏。对手方在比特币交易的 “边缘” 进行 “书写”:要创建一个对手方交易,对手方软件构建一个比特币交易,其中包含构成其协议消息的元数据。
例如,可以通过构建一个向自己发送尘埃的比特币交易并在其中包含一个带有 OP_RETURN 操作码的附加输出来在对手方上发行代币。⁴
该操作码,
4: https://en.bitcoin.it/wiki/OP_RETURN
在比特币节点解析时,会导致脚本的执行忽略后续的数据字节。因此,在最简单的发行交易的情况下,对手方在该输出中编码代币的名称和要发行的数量。一旦比特币交易被广播到网络并被挖掘,每个对手方软件实例都会在比特币区块链中看到该交易并解析发行,将事件存储在其本地数据库中。每个对手方用户随后可以同意该代币已按指定标识符以所需数量发行。
对手方为解析这些元数据实施了自己的规则。如果对手方交易无效 —— 例如,它包含发送给发送者没有足够持有的代币的请求 —— 该交易将存储在比特币区块链中,但所有对手方节点将其识别为无效。因此,对手方数据存储在有效的比特币交易中,在比特币区块链中,被比特币全节点简单忽略。无效交易则只是像其他任何比特币交易一样的比特币交易,除非根据对手方协议定义。
urn:uuid
交易编码
对手方交易数据通过多种方法嵌入比特币交易中。最简单的方法是使用 OP_RETURN 操作码,这也是默认方法。然而,对较大 OP_RETURN 数据的交易转发的任意限制使得对手方必须使用其他方法编码数据,即使这些方法不允许数据在之后从比特币区块链中修剪。尽管如此,对手方在可能的情况下更喜欢使用可修剪输出。使用可修剪数据时,比特币节点没有义务无限期存储对手方交易。然而,只要某些比特币节点不修剪这些数据(例如对手方用户自己运行的比特币节点),这些数据就永远不会丢失。
长期以来,关于使用比特币区块链存储与比特币本身无关的交易的伦理问题存在争议。来自元协议(如对手方)的数据有时甚至被标记为 “垃圾邮件”,然而,对手方数据是语义上有意义的,并不是批量生成的。对手方及其他比特币二层(L2)网络的操作并不涉及利用比特币协议中的任何漏洞,例如允许它们绕过比特币费用系统。相反,创建对手方交易涉及支付比特币费用,就像正常的比特币交易一样:支付的比特币费用与转发和挖掘对手方数据所施加的网络负担成正比。只有当与对手方交易相关的经济价值大于所需费用时,创建该交易才意味着为网络增加价值。
最重要的是,比特币首先是一个无许可的平台,其协议由诚实参与的经济激励驱动。对支付费用的对手方交易的抱怨等同于对比特币本身用于特定 “不可取活动” 的抱怨。由于对手方交易的流行,确实有可能增加非对手方比特币交易的成本。然而,它们也有助于提高比特币网络整体的价值 —— 矿工为此获得可观的费用 —— 尤其是考虑到对手方资产能够在链上以无信任的方式与比特币进行交换。比特币协议作为一个全球网络,每秒仅有几笔交易的容量,从来不是,也永远不会是用于转移小额价值的协议,至少在没有像闪电网络这样的二层协议的情况下。因此,使比特币可扩展的技术挑战与对手方或其他 L2 协议消息的数量完全无关。
这一争议的历史高峰发生在 2014 年,期间发生了所谓的 “OP_RETURN 战争”。⁵
当时,比特币核心开发者人为限制比特币参考实现用于转发(而不是挖掘)交易的规则,试图防止对手方在 OP_RETURN 有效负载中存储超过 40 字节的数据,因为 40 字节足以存储哈希值。⁶
当然,哈希被认为是可接受的有效负载,而语义数据则不被接受,证明了这种规则集的虚伪和无效性 —— 哈希只是数据,数据有效负载对比特币网络的影响显然与其内容无关。值得注意的是,这一 40 字节限制后来被提高到 80 字节的任意大小(这是对手方推出前的计划大小),而没有任何特别原因。⁷
今天,甚至可以通过采用分离见证方案在单个比特币交易中存储千字节的可修剪数据。⁸
原生货币
作为比特币协议的通用扩展,对手方还提供了自己的原生加密货币 ——XCP。XCP 代币在比特币代币无法作为工作货币(无论是作为面额单位还是支付网络费用)时使用:比特币协议由于不知晓对手方元协议,除了作为基于包含对手方数据的比特币交易的总大小的最小反垃圾邮件机制外,无法使用。然而,由于其简单性,许多对手方交易并不需要使用 XCP 代币,最显著的是简单的资产转移和数字资产(没有人类可读标识符的对手方资产)的发行,这为对手方节点创造了低计算负担。
XCP 的创建和初始分配旨在尽可能去中心化和无信任,而没有任何挖矿网络提供 Sybil 抵抗。在 2014 年初,已经通过后来被称为 “首次代币发行”(ICO)的方式推出了一些加密货币,然而这种推出必然需要对协议创建者的信任,他们必须以集中方式分配(即 “出售”)代币。烧毁证明提供了一种优雅的替代方案,反映了比特币挖矿的安全模型:正如在比特币中,能量在创建比特币时被消耗;在烧毁证明中,比特币在创建 XCP 时被销毁。用于创建这些比特币的能量被重新利用来创建 XCP,而没有额外的能量支出。烧毁证明在 2013 年被理论化,但之前从未实施过;⁹它提供了强大的 Sybil 抵抗,而不引入任何中心化。
9: https://en.bitcoin.it/w/index.php?title=Proof_of_burn&oldid=33833
烧毁证明涉及发布一个可证明不可支取的地址(1CounterpartyXXXXXXXXXXXXXXXUWLpVr),其低熵表明没有相应的私钥可以用来支出发送到该地址的币。对手方核心代码检测到在 2014 年 1 月 2 日至 2 月 3 日之间向该地址发送 BTC 的交易,自动且无信任地创建 XCP,因为 BTC 被销毁。每销毁 1 BTC 会创建 1500 到 1000 XCP(线性减少),以激励用户在烧毁期早些销毁 BTC,总共销毁了 2130 BTC(当时约 200 万美元),导致生成 2648755 XCP。
对手方的创建者在 XCP 的创建中没有任何特殊权利或特权,他们也不因使用对手方协议而获得任何费用。这意味着对手方开发必须寻求替代资金来源,就像比特币生态系统一样。XCP 是一种通缩货币:自烧毁证明期结束以来,没有新的 XCP 被创建。对手方用户定期销毁 XCP 以支付对手方网络费用;但由于 XCP 是对手方意识的,它们可以简单地被删除,而不必通过发送到不可支取的地址来烧毁。
未来发展
在撰写本文时,对手方协议有两个主要限制,这两个限制都可以通过适度的额外开发努力克服。这些是: - 与 BTC 的更深集成
目前实施的对手方在比特币 UTXO 系统和对手方状态机之间保持强抽象层。也就是说,对手方将比特币视为一个简单的分布式不可变日志,并在很大程度上忽略单个比特币交易输出的语义价值。因此,在去中心化交易所中,对手方原生代币与 BTC 之间的交易缓慢且昂贵,需要多个区块确认才能完成匹配。
通过打破这一抽象边界,将 UTXO 视为协议中的一等公民,对手方将能够与比特币代币提供无缝集成:对手方资产将能够直接附加到 UTXO 上,从而可以使用标准比特币钱包软件进行持有和转移。也许更重要的是,此升级将允许对手方资产与 BTC 之间进行无信任的原子交换,就像序数一样。实际上,将能够将序数资产与对手方资产进行交易。 - 实现通用虚拟机
状态机复制模型的核心特征是支持任意确定性计算。实际上,对手方通过将以太坊虚拟机的全部功能移植到比特币区块链来证明了这一点。10 由于缺乏维护所需的开发资源,这一功能从未合并到主线中。
智能合约系统在公共区块链中已经使用多年,但它们通常仅用于构建非常小的应用程序。造成这种情况的主要原因是 (a) 语言安全性差,(b) 缺乏模块化,(c) 语法困难。对手方智能合约语言将解决现有系统的这些局限性,以便将通用计算引入比特币区块链,而无需使用侧链。自然,XCP 将作为使用该虚拟机进行计算和存储的燃料代币,费用将根据网络负载动态变化。
与其他二层协议的比较
比特币二层协议可以根据与比特币区块链的基本集成水平大致分类:
・覆盖网络是对比特币的扩展,未为比特币增加价值或功能,但可能显著改善性能。例如,闪电网络属于此类。
urn:uuid
・彩色币是对比特币的扩展,仍然依赖于 UTXO 系统和脚本:这些协议为比特币区块链增加了语义价值和功能,但受到脚本的简单性和不灵活性的严重限制。序数协议是彩色币协议的一个例子。
・元协议是对比特币的扩展,实现了自己的状态机。元协议能够为比特币添加任意功能。对手方是元协议的第一个有效实例。
・侧链是独立的协议和网络,仅允许与比特币代币进行双向挂钩,因此它们不是真正的 “L2 协议”。Liquid、Rootstock 和 Stacks 本质上都是侧链。
与覆盖网络和彩色币相比,对手方元协议允许显著更多的功能,同时保持底层区块链的安全模型,并允许与比特币的深度集成。侧链协议由于拥有独立的网络,必须实现自己的共识系统,然后依赖一组同时运行比特币节点的中心实体来验证所有超出比特币协议本身的逻辑。
从理论上讲,像序数这样的协议相对于对手方的唯一显著架构优势在于其固有的简单性:例如,序数必然既非常简单又非常有限 —— 它支持代币创建和转移,但没有更多。当然,对手方在过去十年的持续运营证明了元协议模型的实用性。
在实现上述功能后,对手方将提供彩色币和侧链协议的最佳特性,提供与比特币的深度原生集成,这一特征使序数得以实现,同时也具备 Rootstock 和 Stacks 等山寨币和侧链的强大灵活性。对手方的技术使得在比特币上创建一个真正无信任的以太坊替代品成为可能,这一努力将在不久的将来使对手方重新获得其在比特币创新和价值创造中的中心地位。