
图片:Bitcoin Magazine
TL;DR — 快速摘要
- 时间链(区块链)通过加密哈希链接和经济激励解决了去中心化系统中的唯一时序问题,防止双重支付和时间戳操纵
- 挖矿费用为矿工持续提供包含他人交易的激励——即使在区块补贴结束后——形成基于区块空间供需关系的费用市场
- 所有节点必须永久验证和存储每一笔链上交易,这带来了根本性的可扩展性和隐私限制
- 链下范式(闪电网络)将大多数交易保留在公共时间链之外,仅用于冲突解决和定期结算,从而在不牺牲去中心化的前提下缓解这些限制

这是比特币爱好者贾科莫·祖科(Giacomo Zucco)系列文章《发现比特币:从穴居人到闪电网络的简要概述》的第七篇也是最后一篇。请先阅读该系列的引言和《发现比特币 第1部分:关于时间》、《发现比特币 第2部分:关于人》、《发现比特币 第3部分:引入货币》、《发现比特币 第4部分:走错了路(需要新计划!)》、《发现比特币 第5部分:数字稀缺性》以及《发现比特币 第6部分:数字合约》。
在我们结束《发现比特币》系列之际,我们将基于数字签名和CoinJoin范式的应用,进一步探索唯一时序、挖矿费用和链下交易的概念。
证明唯一性:时间链
我们终于来到了对「计划B」探索的终点,再次回到了我们出发时那个「何时?」的问题。
这是一个重要的问题,因为它证明了所谓的「区块链技术」引入的合理性——这个被严重滥用的表述,在其最初的含义中,仅仅标注了对一个唯一时序问题的解答。(有趣的是,中本聪本人将这种结构称为「时间链」,这也是我们在这里要使用的术语……抱歉了,彼得!)

让我们回到我们的小故事中,试着理解它解决了什么问题。你设计了一个数字现金系统,其中发行和所有权都是去中心化的,通过谜题和签名的巧妙组合来运作。
但是,如何防止用户重复花费同一枚UTXO呢?如果卡罗尔——一个不诚实的用户——将聪(sats)转移到丹尼尔控制的地址,然后又签名了另一笔交易,将同一笔聪重新发送到自己控制的地址,网络将强制执行哪笔交易?从签名和脚本链的角度来看,这两笔交易都是「有效的」,并且两者都指向有效的初始发行,具有正确的工作量难度。
又如何防止「矿工」伪造正确的时间戳,欺骗难度调整算法以增加发行率呢?如果矿工米妮以低难度解决了数百个工作量证明谜题,但她包含伪造的时间戳,将这些解决方案描绘成彼此仅相隔10分钟,那么一个普通用户——也许只是最近才连接到系统——如何发现并证明这种不诚实行为呢?
在你之前的数字黄金实验中,你信任的时间戳服务器轻松解决了这两个问题。但现在没有中心服务器了,那么谁来定义事件的唯一时序呢?
如果网络能够以某种方式「投票」,它可以就此达成「民主」共识。但是,投票过程虽然在具有固定数量已知参与者的系统(通常称为「联邦」)中可行,但在动态、未知、匿名的参与者集合中却无法运作。你不能简单地用「节点数量」作为投票权的代理,因为每个用户都可以伪装成「数百万」个不同的节点——这就是所谓的「女巫攻击」。你需要另一种「抗女巫」的方式,推动所有节点找到(并保持)关于一个唯一、一致、不可篡改的历史的共识。

不幸的是,基于数学的确定性最终解决方案在理论上是不可行的。但基于经济的统计性和渐近性解决方案在实践上是可行的,而你足够聪明,能够找到它。思路是这样的:每次矿工尝试解决工作量证明谜题时,他们应该在自己的消息中包含当前交易时间线的紧凑快照!
不仅仅是他们的发行消息,他们应该通过哈希函数传递更复杂的「区块」信息。每个区块包含(除了上述发行消息、时间戳和解决正确难度谜题所需的随机数外)前一个区块的解决方案(由其他矿工在大约10分钟前找到)以及最近由其他用户进行的一批交易。

包含已在之前区块中记录过的交易的区块被视为无效。携带与前一个区块时间戳明显不兼容的时间戳的区块也会被丢弃。
通过这种技巧,所有参与者都被激励去收敛到同一版本的唯一时序。米妮可以包含一笔与之前已确认交易矛盾的(双重花费)有效交易,或者篡改时间戳来欺骗难度调整,但其他节点会拒绝这样的区块,而她将损失新发行的价值,白费时间和精力。
矿工花钱解决谜题,因此可以相当安全地假设他们希望享受相应的奖励,创建不会被拒绝的区块——至少在场景中,他们只遵循系统内生的经济激励。

挖矿费用
这个解决方案虽然出色,但仍然缺乏激励矿工包含他人交易的因素。他们可以选择节省验证脚本和签名所需的计算能力(虽然不像哈希碰撞所需的那样大,但仍然可观),只在自己的区块中包含自己有效的发行交易。此外,由于受控供应范式,这些发行中允许的聪数量不断减少,将降低(即使考虑到聪购买力的增长)解决区块的激励,最终在最后一个纪元结束时完全消失,届时将不再有通胀。
你通过引入「挖矿费用」解决了这个问题:用户可以在交易中附加一笔小额「额外费用」,以激励矿工将其包含在区块中。
它的运作方式如下:系统允许矿工在他们的奖励交易中,除了新「铸造」的聪(与当前纪元相符)的发行之外,还可以收取区块中包含的所有有效交易的已创造与已消耗UTXO之间的差额。费用从不依赖于交易金额,而只取决于交易大小(脚本复杂度、签名数量等)以及在区块内的期望优先级。
可扩展性(与黑暗性)问题
交易被包含在区块中所必需的最低挖矿费用,取决于「区块空间」的供需关系。在供给方面,可以添加到时间链中的交易数量受限于最大区块大小(每个区块不到4兆字节)和最大出块速度(大约每10分钟一个)。在需求方面,每个用户都有不同的约束和偏好(有些人可以等更久以支付更少,有些人可以支付更多以减少等待时间,有些人使用具有优秀动态费用估算的钱包,有些人则没有)。总的来说,对区块空间需求的上升将导致挖矿费用的上升。这显然限制了系统的可扩展性(特别是由于矿工费用与转移的价值量无关,我们可以说它实际上降低了可分割性)。
更广泛地说,使用时间链意味着网络中的每个节点都必须永久跟踪一切:每一笔链上交易都必须被每个使用系统的参与者下载和验证,贯穿其整个历史,甚至远至未来。这样的系统显然不具有可扩展性。它还缺乏黑暗性,因为每个人都必须永久保存每一笔交易的副本,使得各种取证分析和去匿名化尝试成为可能。

有可能通过创造另一个更「特权」的用户类别,让某些用户的情况看起来更好。例如,如果增加区块的大小和频率,那么区块空间的供给增加,其价格就会下降。但是,运行节点以独立验证交易和区块有效性的成本,其增长速度远远超过上述供给的增长,从而会集中整个系统的拓扑结构。当然,一个新的专业节点类别可以作为某种「签名消息」服务于低级的、非验证用户,给他们一些交易有效性的保证。毕竟,铸币(coinage)的引入就是为了将验证贵金属硬币的昂贵任务委托给少数专业化的可信实体。但是,就像铸币一样,这种策略(称为「SPV」)意味着严重的中心化,以及随之而来的马洛里等人进行政治干预或审查的所有风险。
新范式:「链下」
有一种聪明的方法可以在不牺牲去中心化的情况下,缓解全球共识系统根本的可扩展性限制。我们称之为「链下范式」。
思路很简单:在非必要的情况下,避免将每笔交易都提交到区块中,将大多数流量保留在公共时间链(及其昂贵的全球共识)之外,仅将其用于冲突解决和定期结算。
这种演变类似于人们在普通法体系中使用法院和合同的方式:法院可以创建具有公共约束力的判例,达成某种「法律上的全球共识」,但它们相对缓慢和昂贵,因此大多数交易方通常只签署私人的双向合同,仅在出现冲突或需要定期结算时才请求法院验证和执行。
高级智能合约可用于使这种「追索」方式实现信任最小化:与现实的法律体系不同,去中心化的时间链可以避免人类的偏见和腐败,主要依赖密码学和代码。与在虚拟化语境下讨论的信用凭证不同,链下交易并非「虚拟的」;它们是实际有效的交易,无论相关方是否诚实,都有很高的概率被系统强制执行。

你很快意识到,这种范式也能极大地改善你系统的黑暗性。不再需要所有节点永久记录所有交易,大多数交易将在相关方之间私下交换,使得恶意窃听者的取证分析更困难、更昂贵、更不完整、更不可靠。

这种策略的主要实现,是一个由预先资助的双向「支付通道」组成的二级网络,能够以信任最小化和原子化的方式在多跳之间路由交易。用户给它起了一个非常诗意的名字:「闪电网络」(Lightning Network)(其缩写经常包含在你系统整个协议套件的标签中,命名为「LNP/BP」,类似于历史上的「TCP/IP」)。
但同一范式还有其他小的实例;例如,有几种技术可以将实际脚本保留在时间链之外,直到需要时才上链,从而节省区块空间并保护隐私。(人们给这些技术起了许多奇怪的名字,比如「Taproot」、「Graftroot」、「g*root」、「无脚本脚本」等等。)

随着这些最后的技术拼图的引入,你的用户终于拥有了在现实生活中使用该系统所需的一切,以夺回货币一些最重要的特性。谢谢你,「中本聪」!

自从远古时期你穴居人早期的创新以来,你已经走过了漫长的道路。现在,只有时间能告诉我们你这个「计划B」是否能够成功。飞向月球吧。
最后,感谢尼基·迪奇科(Nicki DiCicco)为本系列创作封面艺术,感谢CryptoScamHub为本系列贡献表情包艺术!
