1.2 代币追溯:比特币、区块链和其他分布式账本 - JoanJiao/TokenEconomyBook_Chinese GitHub Wiki

区块链网络建立在 P2P 网络的理念之上,它提供了一个每个参与者都可以信任的通用数据集,即使他们可能不认识或不信任对方。这些数据的不可变副本在网络中的每个节点上存储和管理。区块链网络采用原生网络代币形式的经济激励措施,使得该网络具有容错性、抗攻击性和抗串通性。

2008 年 10 月的比特币白皮书中引入了“区块链”的概念,旨在创造“没有银行的 P2P 货币”。这篇论文以笔名 Satoshi Nakamoto 发表,它提出了一个系统,在该系统中,网络中的所有计算机都拥有一份相同的交易账本副本,作为网络中每个人的单一参考点。所有网络节点共同更新和管理这个账本,它代表了每个参与者都可以信任的通用数据集,即使他们可能不知道或不信任彼此。相互不认识或不信任、居住在不同国家、受不同司法管辖以及彼此之间没有具有法律约束协议的个人和机构现在可以通过互联网进行交互,而无需银行、互联网等受信任的第三方平台或其他类型的清算机构。

双花问题(Double-Spending Problem): 这种新形式的分布式数据管理解决了互联网上的双花问题。按照当今互联网的设计方式,一个人可以多次花费相同的价值(作为数字文件发布),因为数字信息可以复制,并且可以将同一数字文件的副本从一台计算机同时发送到其他多台计算机。在比特币出现之前,自 1980 年代以来,围绕加密保护的 P2P 网络的想法已经在不同的发展阶段进行了讨论,但主要是在理论论文中(了解更多:附录 - 比特币的起源)。然而,从来没有一个 P2P 网络的实际实施能够设法避免双花问题,而不需要受信任的中介来保证价值交换。比特币协议引入了一种能够使得复制数字价值变得昂贵的机制。

区块链: 在区块链网络中,代币交易记录在被哈希(hashed)过的称为“块”的批量数据中。这种加密哈希创建了区块的数字指纹(了解更多:第 1 部分 - 代币安全:密码技术。)每个区块都包含前一个区块的哈希,从而将一个区块与另一个区块链接成一个区块链。这个过程保证了从第一个块开始(也被称为创世块)所有块的历史完整性。如果一个区块中的数据被篡改,该区块和所有后续区块的哈希值都会发生变化,网络中的每个节点都会知道数据被篡改。这个不断增长的链式块列表也称为账本。

账本 是一个用于维护不断增长的交易记录列表的文件,这些交易记录链接在以加密方式防止篡改和修改的块中。如果有谁企图操纵账本,被操纵账本的哈希值将与所有其他节点上账本副本上记录的哈希值不一致。因此,区块的哈希值可用作防伪保护,可用于检查账本上交易的真实性。

分布式账本: 账本的副本存储在加密保护的 P2P 网络的多个节点上。为了改变整个网络中所有账本副本上的账本数据,网络节点需要就这种变更达成相互协议。分布式账本是一种共享的、受信任的、公共的交易账本,每个人都可以检查,但没有单个用户可以控制。每个独立节点都有最新版本的账本,其中包含所有曾经进行过的交易,并且可以验证交易。这个过程被称为“共识”。这在一些机构无法信任其他机构来管理其数据的组织间设置中特别有用。

代币: “代币(token,含令牌之义)”一词只是一个比喻。与比喻所暗示的相反,代币并不代表从一个设备发送到另一个设备的数字文件,而是表现为账本中属于区块链地址的条目。 只有拥有该地址私钥的人才能使用充当区块链客户端的钱包软件访问相应的代币(了解更多:第 1 部分 - 代币安全:密码技术、钱包。)

图 1.4 为什么叫区块链?

区块链网络与分布式数据库不同,后者的数据是分布式的,但却是由一个实体管理和控制的。而区块链网络则允许分布式控制,互不信任的不同人员和机构无需中央管理员即可共享信息。

云电子表格(Like a spreadsheet in the cloud): 账本也可以描述为云中的电子表格。想想像“Google Sheets”这样的云应用程序,每个人都可以同时访问和编辑文件。但是,与将文件集中存储在 Google 服务器上的 Google Sheets 不同,区块链网络的账本是一个非集中存储的文档。相反,网络的每个节点始终保留同一文件的相同副本(每次创建新块时都会有临时例外)。

通用状态: 网络中的每台计算机都管理着自己相同的账本副本,作为整个网络的通用数据集,保证每个代币只传输一次。因此,账本代表了网络中的所有节点都认同的网络的普遍状态,它充当了数字公证人和可公开验证的时间戳。

比特币交易: 使用比特币网络时,网络中的所有计算机都会检查其账本副本以确认交易的有效性,并以多数共识的方式共同确认交易,而不是通过银行来验证金融交易。在比特币网络中,没有任何用户比其他用户更受信任。运行区块链协议的 P2P 计算机网络不是由单个受信任的第三方通过具有权限的服务器验证交易(单票),而是通过共识(多数票)来验证交易。

图 1.5 云电子表格和区块链协议的背后

该协议是一组用于定义网络中的所有(匿名)节点如何就网络的真实状态达成一致的规则和过程,它定义了网络中的参与者如何相互交互:(i)在什么条件下从 A 向 B 发送代币是有效的; (ii) 使用加密代币验证交易的经济回报; (iii) 如何引用身份和签署交易; (iv) 谁决定网络升级。

加密经济学(Cryptoeconomics): 密码技术保障了网络安全,并为所有参与者提供完全的透明度,同时维护每个参与者的隐私。它还确保过去的交易是真实的。区块链网络假设所有网络参与者都有可能腐败,所以应用博弈论以确保未来的交易将通过所有网络参与者的多数共识以真实的方式进行。共识机制旨在使账本难以操纵。

共识: 工作量证明(Proof-of-Work,PoW)是比特币网络使用的“共识机制”,它引导一组未知的匿名网络参与者的集体行动。它建立在加密经济学原理之上,运用反向博弈论来将本地网络代币奖励给网络参与者。在比特币网络中,就是比特币代币。这种奖励机制使得欺骗网络在经济上完全不可行,考虑到极端的攻击场景,这样做需要大量的算力。尽管缺乏中心化的各方来管理网络活动的真实性,但共识规则的设计方式使得网络能够很好地抵抗攻击。

身份: 从私钥派生的区块链地址代表代币所有者的匿名数字身份。代币被注明属于公共账本中的某个地址。只有该地址的所有者才能请求将这些代币发送到其他地方。为了向网络的其他参与者证明他们的所有权,代币持有者需要用他们的私钥签署交易。这种形式的身份管理纯粹基于数学函数,允许网络中的其他计算机确认交易的有效性,而无需知道真实的人或他的秘密私钥(了解更多:第 1 部分 - 密码技术和以用户为中心的身份 )。

会计与治理机器: 区块链网络也可以被描述为分布式记账机器,或公开透明的超国家治理机器。它们为互联网提供了一个治理层,所有网络参与者都可以(几乎)实时地平等访问相同的数据。交易是集体管理的,它们对所有参与者都是透明的,并且可以追溯到它们的起源。

去中心化自治组织(Decentralized & Autonomous Organization,DAO): 账本由自治网络节点共同管理,这就是为什么它也预示着一种新形式的组织基础设施,通常被称为去中心化自治组织(了解更多:第 2 部分 - DAO 的制度经济学和治理;第 4 部分:目的驱动代币。)

区块浏览器: 由于区块链网络的公开性,每个人都可以在账本上运行大数据,比如跟踪所有代币交易、网络总哈希率、代币供应量和交易增长等。但是,虽然账本上的所有数据都是公开的,很少有人具备在区块链上运行高级数据分析的技能。区块浏览器是一个第三方应用程序,允许任何人公开探索特定网络的所有交易,例如比特币和其他公共区块链网络。区块浏览器就像一个专门的区块链相关数据搜索引擎。然而,这种透明度也引发了与隐私相关的问题。这些与隐私相关的问题正在通过更新区块链协议得到解决,新协议使用了更多隐私保护加密方法(阅读更多:第 3 部分 - 隐私代币。)

加密经济学、共识和工作量证明

具有一组匿名网络节点的 P2P 网络的潜在挑战是,如何在没有集中方保护系统的情况下处理恶意网络节点。人们必须始终假设会有不良行为者试图破坏任何开放和公共网络。在这种不受信任的设置中,这样一个分布式网络如何就哪些数据正确或不正确,或者哪个过程是对还是错达成共识,这被称为“拜占庭将军问题”。恶意节点,也称为拜占庭节点,可以故意向参与共识过程的所有其他节点发送错误信息。拜占庭故障被认为是分布式网络中最困难的故障类别。可靠的共识机制必须能够抵御 DDoS(分布式拒绝服务)攻击、女巫攻击[^1]、和其他网络攻击。在比特币出现之前,人们认为 P2P 网络中不受信任的节点之间不可能达成容错和抗攻击的共识。

图 1.6 为什么操纵区块链网络交易成本高昂?

在分布式计算的历史上,比特币协议首次引入了“工作量证明”的数学解决方案来解决这个问题,这使得攻击系统的经济成本与这样做的收益不成比例。它引发了一个围绕使用加密工具的经济协调游戏的新科学领域,也被称为“加密经济学”。加密经济学可以定义为研究不受信任环境中的经济互动,其中每个参与者都可能腐败。它是跨学科的,需要深入了解密码学、经济学和 P2P 网络,以及网络参与者的动机。公私密钥基础设施保证了对一个代币的抗攻击访问控制。哈希函数允许节点验证通过网络完成的交易。被称为工作量证明的经济协调游戏也需要哈希函数和公私钥密码学,以奖励矿工将真实交易块添加到账本中。加密经济机制可以提供一种安全平衡,使得网络具有容错性、攻击性和合谋性。这允许匿名网络节点就所有网络交互的状态达成共识。比特币网络是加密经济学的第一个实际实例,它造就了“数学信任”而不是“法律合同信任”。

然而,网络的安全性取决于对“网络参与者将如何对经济激励做出反应”这一假设的弹性。人们如何对激励做出反应长期以来一直是经济学的研究领域。因此,加密经济学与机制设计(与博弈论相关的经济学领域)有很多共同之处。博弈论旨在分析被称为博弈的战略互动,它试图理解如果每个玩家都为了实现自己的最优结果而将采取何种最佳策略。机制设计定义了理想的结果,并反向创建一个游戏来激励玩家实现理想结果。虽然密码经济学是跨学科的,但它是一门主要在计算机科学界发展起来的学科,不过它似乎仍有很大空间来整合来自各种经济学科和其他学科的方法(更多内容在下一章和第 4 部分 - 目的驱动的代币中)。

图 1.7 为什么账本防篡改?

“工作量证明”(PoW)是比特币网络和类似区块链网络中使用的共识机制,用于保证通过网络发送的代币交易是有效的。该机制建立在所有网络节点都可能被破坏的假设之上,并且最小的共同点是钱。工作量证明的设计方式是(i)如果你花了钱并且遵守规则,你可以获得网络代币;(ii) 作弊是不值得的,因为挖矿需要专用的计算机硬件并且消耗大量电力。

当通过网络发送代币时,网络中的每个节点都可以提出要添加到账本的新条目。这些节点验证交易并相互竞争以解决复杂的计算难题。在这个过程中,他们必须收集所有最近的网络交易,包括一些额外的元数据,验证交易,猜测一个伪随机数(“nonce”),并通过加密算法(SHA-256)运行所有数据以找到新区块的哈希。这意味着他们必须执行计算工作,这就是为什么这个过程被称为“工作量证明”。

如果一个节点是网络中第一个找到该哈希值的节点,它可以将块添加到其账本中,并将新块的哈希值(包括所有块数据)广播到网络的其余部分。其他节点现在可以验证哈希的有效性。如果他们接受这个新添加的交易块是有效的,他们会将新块添加到他们的账本副本中。工作量证明的设计方式使得哈希很难找到,而解决方案可以很容易地验证真伪。通过参与这场寻找哈希值的竞赛,挖矿节点共同确保一个区块中包含的所有交易都是有效的。获胜节点以新铸造的网络代币(加上潜在的交易费用)的形式获得“区块奖励”。这就是为什么该过程被称为“挖矿(mining)”。因此,已验证的块的哈希代表了矿工所做的工作。在本书出版时,在比特币网络中成功创建区块的奖励是每个区块 6.25 BTC。大约每四年,每 210,000 个区块的区块奖励会减少 50%。区块奖励的下一个“减半”是在 2024 年。

找到正确的哈希值需要做一些工作,以计算机的处理时间来算,也称为“CPU成本函数”。 如果作弊矿工是找到哈希的最快计算机,那么网络的其余部分将不会接受他们的交易块。因此,作弊矿工不会获得区块奖励,即使他们投入了计算能力和精力。这是阻止网络攻击的经济措施。因此,理性的经济行为者不会去欺骗系统,因为这会导致能源和基础设施投资的沉没成本。通过基础设施和电力成本的后门,网络攻击变得异常昂贵。成功的攻击需要大量的计算能力、能源消耗和时间。由于其计算强度,比特币网络非常消耗能源。

找到该哈希值并因此创建一个块的“难度”会随着时间的推移而调整,以保持 10 分钟 [^2] 的块间时间(interblock-time)相对恒定。它会根据矿工网络部署的哈希能力定期调整。如果创建块的时间不到 10 分钟,难度就会增加。同样,如果创建块的时间超过 10 分钟,难度就会降低。难度也随着竞争程度的增加而增加——竞争验证区块的其他计算机的数量。

图 1.8 交易块是如何链接的?

网络节点

比特币网络是 (i) 开源的,(ii) 公开的,和 (iii) 无需许可的。开源性质是指任何具有足够技能的人都可以以公开的方式为协议做出贡献。此外,任何人都可以获取代码,对其进行修改,并创建自己的 P2P 支付网络版本。“公共”是指任何人都可以将网络用作支付系统(用户),任何人都可以下载协议和账本并验证交易(全节点)。“无须许可”是指任何人都可以下载协议和账本并将交易写入账本(矿工)。在比特币网络中,有四种类型的节点:全节点(Full nodes)、挖矿节点(Mining nodes)、矿池(Mining Pools)和轻节点(light nodes)。

全节点管理比特币网络(账本)的整个历史,并在新交易被添加到账本时对其进行验证。运行这样一个全节点的任何人都可以发送和接收比特币代币,并验证交易的完整性,而无需依赖任何第三方。验证交易是比特币挖矿的补充功能。虽然比特币挖矿几乎完全在专用硬件上完成,但仅验证交易的全节点可以在具有标准处理硬件的普通家用 PC 上运行。在比特币网络早期,每个人都必须下载完整的账本才能发送交易。今天,钱包软件开发商还提供轻节点选项(见下文)。

挖矿节点(矿工)争夺创建新区块并将交易添加到账本的权利。他们可以“单独开采”或“集体开采”。如果他们单独开采,他们需要维护自己的完整账本副本。获胜的矿工因创建新区块而获得比特币代币奖励(区块奖励)。协议中规定了确切的奖励机制。除了区块奖励,矿工还可以获得交易成本。但是,这些交易成本不是协议规定的,而是可以由自由市场上的矿工要求。当网络流量很高并且网络变得拥挤时,交易费用通常会增加。

矿池:多年来,个体矿工开始合作并形成挖矿节点卡特尔。在矿池场景中,单个矿工与其他矿工合作写入账本并获得区块奖励。矿池运营商维护一个完整的节点,各个矿工贡献他们的 CPU(也称为哈希算力)。利用所有个体矿工的累积哈希算力,他们可以提高成为最快的计算机来解决难题并将交易块写入账本的机会。然而,最初的比特币白皮书并没有说明矿工之间的这种合作形式。经济假设建立在“简单博弈论”而不是“协作博弈论”之上。结果,比特币网络已经成为一个比最初预期更加集中的系统。因此有人认为,比特币共识机制的现实可以被描述为“委托的工作量证明”,并且已经成为少数矿池的寡头垄断,这可能并不反映比特币创造者中本聪的初衷。

轻节点是为智能手机钱包应用的简化支付验证 (simplified payment verification,SPV) 而创建的,它们也因此被称为 SPV 节点或 SPV 客户端。与完整节点不同,它们不维护整个账本,而只是存储所有交易块的所有区块头部(headers)的副本。他们无法自主验证交易,因为他们无法访问存储在账本上的所有信息。轻节点依赖于网络中其他可以访问所有账本数据的节点提供的信息。

与挖矿节点相反,全节点没有直接的经济动机来验证交易。但是,运行全节点存在间接激励。在可能发生协议升级的情况下,运行一个全节点是投票决定网络应该如何升级的唯一方法。运行全节点的另一个原因是更高程度的隐私,因为全节点在自己的设备上维护完整的账本和所有交易数据。这与轻节点的工作方式完全不同。轻节点依靠第三方服务器向网络广播交易,这意味着那些第三方服务的服务器知道轻节点的交易历史。

网络攻击

账本上的所有条目都是只读的。一旦一个交易块被网络接受,它就不能轻易更改或删除。必须重新计算所有块才能发生这种情况,这将需要大多数网络参与者就此类更改达成一致。攻击者需要在大多数网络节点上重做所有后续块的计算工作,这就需要控制或者贿赂大多数网络节点。即使有可能在区块创建期间执行这些计算,其成本也将远高于攻击网络的回报。虽然操纵是可能的,但是该机制使其变得几乎不可行。

这些网站提供了有关在所谓的“51% 攻击”中攻击不同区块链网络的当前成本的实时信息。只要 50% 以上的工作是由诚实的矿工完成的,工作量证明网络就是安全的。当一个人或机构能够控制大部分哈希率或计算能力来操纵网络时,就会发生“51% 攻击”。在比特币的十年历史中,外部攻击者的操纵从未成功。

成功的 51% 攻击可能会产生以下影响:它能够让你 (i) 通过添加或删除交易来更改区块,这需要额外的 PoW(交易越旧,攻击越难); (ii) 审查参与者并因此审查这些参与者的交易; (iii) 发送交易然后撤销交易;(iv) 更改协议规则。

不过,51% 攻击无法更改现有交易或虚假交易,例如:(i) 更改现有交易中发送的金额;(ii) 更改现有交易的接收方;(iii) 未经他人批准发送代币。这是因为所有交易都需要使用代币所有者的私钥进行签名,而这不能通过网络的多数同意来披露。更改现有交易中的细节将使账本“非法”,因为其中包含了没有有效签名的交易。这些类型的操作只能通过暴力破解网络参与者的私钥来实现。或者,也可以破坏密码算法 (SHA) 来攻击网络,这就是为什么必须使用经过适当压力测试的密码算法(了解更多:第 1 部分 - 代币安全:密码技术)。

图 1.9 区块链概念

协议分叉(Protocol Forks)和网络分裂(Network Splits)

在软件工程中,“软件分叉”是指任何免费和开源软件都可以在未经原开发团队事先许可且不违反版权法的情况下被复制和修改。该术语有时也指现有项目的开发人员社区中出现的分裂,而不仅仅是代码。公共区块链网络的开源性质允许任何人下载代码、修改它,并开始基于一段独特的代码创建一个单独的网络。

这样,人们可以(i)通过简单地复制现有代码库并对其进行修改以构建新网络(例如,“Zcash”和“Litecoin”就是基于比特币代码库创建的),或者(ii)为了协议更新,将现有网络(包括现有账本和社区)分叉到不同的延续中。由于协议升级争议(如“比特币现金(Bitcoin Cash)”和“以太坊经典(Ethereum Classic)”的情况),或者出于经济原因,通常是为了在哲学协议的讨论之上提取经济价值而故意分离(如“比特币黄金”、“比特币钻石”和“比特币白金”的情况),那这些协议更新就可能导致网络分叉。软件分叉的类型和规则取决于每个网络的正式和非正式协议。比特币网络和类似网络的分叉分为“硬分叉”和“软分叉”:

硬分叉(hard fork)” 是一种不向后兼容的协议更改。未更新到新版本协议的节点将无法处理交易。所有根据旧协议验证交易的节点都会将根据新协议生成的区块视为无效区块。因此,想要采用新协议的节点将需要升级其软件。

软分叉(soft fork)” 是一种向后兼容的协议更改。如果不违反新协议规则,未更新协议的节点仍然能够处理事务。运行升级协议的矿工产生的区块被网络中的所有节点接受。运行旧版本的矿工产生的区块被运行新版本协议的节点拒绝。如果旧版矿工的区块被部分网络拒绝,他们可能也倾向于升级。因此,与硬分叉相比,软分叉在投票过程中要渐进一些,需要数周时间。如果大多数矿工升级到新协议,则称为矿工激活软分叉(miner-activated soft forks,MASF)。如果全节点在没有矿工支持的情况下进行协调,则称为用户激活的软分叉(user-activated soft fork,UASF)。

当网络中的一些节点继续使用旧协议而所有其他节点都使用新协议时,就会发生分裂。技术协议更新经常发生,通常不会引起太大争议,尤其是当它们涉及到小的技术升级时。较短的链一旦死亡,代币就没有了市场价值。然而,区块链网络的短暂历史表明,关于协议升级的更政治化的决策都可能导致网络分裂,其中少数链有足够的追随者或政治叙事来维持自己的经济。这其中的一个关键点是支持一个网络或另一个网络的开发人员的脑力分裂。随着社区的分裂,开发人员通常不得不对一个网络或另一个网络表明立场,这就会导致缺乏必要的开发人员权力。矿工还必须选择他们继续支持的网络(了解更多:第 2 部分 - DAO 的制度经济学和治理。)。

在硬分叉的情况下,任何在旧网络中拥有代币的人也将在新的少数派网络中拥有等量的代币,然后他们可以出售或持有这些代币。但是,这需要至少一个代币交易所上架了少数派网络的新代币;否则,该网络的代币就没有市场,也会被逐渐遗忘。政治化的硬分叉是一场黑天鹅事件,可能会对代币价值产生严重影响,这取决于从长远来看哪个网络将获得牵引力。分裂网络的政治硬分叉的例子是“以太坊经典”(ETC)[^3]和“比特币现金”(BCH)[^4]。由于比特币网络和以太坊网络的这些突出分叉,治理问题在社区中引发了一场持续的辩论,并且似乎是未来几年更突出的研究问题之一(了解更多:第 2 部分- DAO 的制度经济学和链上与链下治理)。

此外,由于网络延迟,网络中的暂时分裂时有发生。如果两个矿工同时为同一个区块找到不同的解决方案,并且都是有效的,那么网络就有可能暂时分裂。发生这种情况时,网络中的节点在网络的不同部分有两个替代版本的账本。这创建了两个并行的区块链网络。比特币协议有一个解决这些暂时分裂的规定,以使网络中只有一个分支可以存活。在像比特币这样的工作量证明网络中,具有最多“累积工作量证明”(也称为“哈希算力”或“网络算力”)的网络,总是被网络节点认为是有效的。在这个过程中,获胜的账本版本由网络的多数“投票”决定。节点通过升级协议(或不升级)来投票给一个版本。“区块链长度”是指累积最多的网络分支工作量证明,而不是拥有最多块的证明。

替代分布式账本系统

上述分叉是现有区块链网络协议升级的结果,所有这些都导致现有网络节点分成两组。这种拆分会影响网络代币的市场价格,因为两个网络都比原始网络小。另一种形式的分叉是开源项目典型的简单软件分叉。由于比特币的代码库是开源的,任何人都可以将此代码库用作模板,并通过调整一些变量、参数或函数来创建替代区块链网络。

多年来,比特币协议已经修改了数百次,以创建更快或更匿名的比特币替代版本,例如“Litecoin”或“Zcash”。显然,在某些时候,区块链协议提供了一个操作系统,允许一群不认识或不信任彼此的人围绕特定目标组织自己,而不仅仅是“没有银行的现金系统”。因此,许多项目试图修改比特币代码库以促进其他类型的 P2P 价值转移,例如没有 Amazon Web Services 的去中心化文件存储,就像“Sia”,或者没有 Facebook、Twitter 等的社交网络,就像“Steemit”。这个想法的出现是为了摆脱只有一个智能合约 [^5] 的单一用途网络,而是创建一个协议,你可以在其中通过同一网络执行任何类型的 P2P 价值交易。一些最有趣的早期项目,比如“彩色硬币(Colored Coins)”和“万事达币(Mastercoin)”,将比特币代币用作任何类型的价值转移或法律合同的搭载工具。曾短暂参与这些项目的 Vitalik Buterin 意识到比特币协议的这些改编是可能的,但不够高效或不够灵活。随后,他提出了将智能合约功能与网络处理功能解耦的想法,并启动了以太坊项目。这使得开发环境比比特币网络和其他特殊用途的区块链网络更加灵活。以太坊网络首次引入了一个去中心化网络,允许使用智能合约处理任何类型的价值转移。这些智能合约可以通过几行代码轻松创建,并由以太坊网络处理,而无需创建自己的专用区块链基础设施。与比特币网络设计用于结算 P2P 汇款的单一智能合约不同,以太坊网络被设计为一个去中心化的计算机网络,在该网络上可以使用以太坊虚拟机 (EVM) 处理任何类型的智能合约,以及转移任何类型的代币化价值(了解更多:第 2 部分 - 智能合约,第 3 部分 - 代币)。

以太坊的出现激发了许多新的区块链项目开发类似的智能合约网络。此类项目包括“Cardano”、“Neo”、“EOS”、“Hyperledger Fabric”、“Ontology”等等。评估其可行性的因素包括技术、经济和法律因素。目前尚不清楚以太坊网络的哪些替代解决方案会变得流行,以及是否会出现“赢者通吃”的场景或多个网络并存的情况。目前,以太坊社区似乎拥有最大的牵引力,并且在许多开发人员中具有先发优势,但是这一情况也可能会发生改变。

此外,已经出现了具有完全不同类型的共识机制的替代分布式账本系统,例如不再需要创建区块链而是使用替代的加密经济机制来达成共识的有向无环图(directed acyclic graphs,DAG)。使用 DAG 作为共识机制的网络有“IOTA”、“Byteball”或“Nano”。

另一方面,像银行、保险公司和许多供应链重的行业的私人机构已经意识到,分布式账本系统的集体数据管理概念可能是一个有用的行业协作工具。与公共和未经许可的区块链网络不同,该行业开始设计“许可账本”,其中所有验证者都是行业联盟的成员,或者至少是同一组织的不同法律实体。然而,在许可和私有网络的语境下,“区块链”一词是极具争议的。批评者质疑是否可以将具有“权威信任”的许可账本视为区块链网络。许可账本的支持者认为,“区块链”一词适用于任何将交易哈希为链接区块的分布式数据结构,因此也适用于将交易批处理到区块链的许可网络。

公共网络使用加密经济机制(数学信任)通过激励个人行为(计算努力)以实现集体目标的共识机制来保障网络安全。激励机制与网络代币挂钩。确保这个不受信任的参与者网络免受攻击和操纵是至关重要的。相较之下,许可网络则是由一组相互了解和信任的网络参与者共同管理,不需要像工作量证明这样的计算密集型共识机制,也不需要代币。信任依赖于法律制度和已知网络参与者的声誉(通过法律合同进行信任)。这些网络的最小共同点是分布式账本的存在。这就是为什么“分布式账本”这个术语已经成为一个更通用的术语,用来描述源自比特币网络的技术。它们可能是经过许可或未经许可的,可以将交易捆绑在区块链中,也可以像 IOTA 一样,根本不使用区块链。

区块链协议和类似的分布式账本在互联网之上运行,可以被概念化为几个组件:(i) 物理网络:由运行相同协议的计算机 P2P 网络来表示;(ii) 协议:定义网络规则并通过所有网络节点的共识^6 执行它们。这包括与原生代币相关的经济激励;(iii) 账本:以共享和公共账本的形式管理从创世区块到今天的所有交易的所有资产; (iv) 识别和定址(addressing):这些资产属于特定身份,需要对身份进行定址,以便我们可以将价值从一个身份转移到另一个身份。这些身份或多或少是匿名的,具体取决于所使用的加密算法的类型;对于像以太坊这样的智能合约网络,(v) 智能合约管理相关参与者的关系,并代表业务或治理逻辑。

PoW 的替代共识机制

比特币的工作量证明是开创性的,但它是有代价的。虽然它保证了不受信任的网络的安全性,但它速度慢、能量密集,并且有利于那些拥有更多经济资源的人。这就是为什么许多研究人员和开发人员开始探索替代共识机制以试图解决比特币的一些主要挑战。需要解决的研究问题包括:

  • 我们如何就大多数人认为真实的历史版本达成共识?
  • 如何将稀缺的自然资源(如电力和 CPU)与网络资源结合起来,以防止恶意行为者向系统发送垃圾信息的不良行为?
  • 什么是安全风险和攻击媒介?

尽管行业内正在试验许多不同的共识算法,但工作量证明(PoW)和权益证明 (PoS) 目前是应用最广的。然而,需要注意的是,使用相同通用共识机制的区块链网络可能具有不同的规范。[^7] 比特币和以太坊网络使用的是工作量证明的不同变体。

权益证明也是如此,这是一种只有在网络中拥有财务利益的网络参与者才能将区块添加到账本中的共识机制。与工作量证明不同,验证者不会相互竞争来创建交易块。用户必须证明他们拥有一定数量的网络代币才能生成一个块,而不是牺牲能量来验证一个块。你钱包里的代币代表你的股份。权益证明的应用有很多变体。

早期的权益证明提议假设那些在系统中拥有更多权益的人在验证交易和编写区块时有自然的动机以真实的方式行事,假设代币持有者对网络的长期成功天然感兴趣,否则,如果他们以不真实的方式做出贡献,他们在系统中的股份就会贬值。此外,早期权益证明还假设一个人拥有的代币越多,当网络受到攻击时,其风险就越大。因此,投票权的设计与持有的网络代币数量成正比。但是,原始的权益证明机制与工作量证明相比存在一个问题,工作量证明挖矿成本很高,因此将精力浪费在不会为你带来任何收益的分叉上是不明智的,而权益证明不需要计算密集型工作来创建一个块,因此验证者没有什么可失去的,却可以得到很多。

“Peercoin”网络是第一个引入权益证明的项目,随后也出现了一些使用自己权益证明变体的其他网络,例如“Tendermint”(“Cosmos”)、“Ouroboros”(“Cardano”)、“Tezos”、“Dfinity”、“Nxt”、“BlackCoin”、 “NuShares/NuBits”和“Qora”,每个都有不同的属性。有些网络,比如“Decred”,结合了工作量证明和权益证明的元素。以太坊项目计划通过硬分叉(Casper)从工作量证明过渡到权益证明。以太坊开发人员已经就应该如何做到这一点提出了不同的建议。

委托权益证明 (Delegated Proof-of-Stake,DPoS) 是权益证明的一种变体,首先由“BitShares”实施。这是一种更激进的变体,一种代币所有者可以将他们的投票转移给其他人以代表他们进行验证的代议制民主。通常,有21至101个选举的代表可能会定期改组或下达命令以交付其区块。这些代表可以创建区块并防止未经信任的当事方创建区块。他们不能更改交易,但可以否决特定交易被包含在下一个网络区块中。不同的网络采用了自己的 DPoS 变体,例如“Steemit”、“EOS”和“Lisk”。每个代表都有一个时间段来发布他们的区块,而不是在验证块上竞争。如果受托人不断错过他们的区块或发布无效交易,代币持有人可以撤回对受托人的投票。与大多数其他共识机制相比,这种区块创建的部分集中化带来了更好的交易吞吐量(也称为“可扩展性”)。

权益证明还有更多变体,其中大部分只是概念性的或者仅由一个网络实施:“租赁权益证明(Leased Proof-of-Stake,)”、“作为权益证明的交易(Transactions as Proof-of-Stake)”、 “重要性证明(Proof-of-Importance)”、“容量证明(Proof-of-Capacity)”、“重量证明(Proof-of-Weight)”、“权威证明(Proof-of-Authority)”和“消耗时间证明(Proof-of-Elapsed-Time)”。

拜占庭容错 (Byzantine Fault Tolerance,BFT):另一组共识机制是拜占庭容错 (BFT) 的变体,例如由“Ripple”或“Stellar”实施的联邦拜占庭协议 (Federated Byzantine Agreements,FBA)、由“Hyperledger Fabric”实现的实用拜占庭容错 (Practical Byzantine Fault Tolerance,pBFT) ,以及“NEO”中使用的委托拜占庭容错(Delegated Byzantine Fault Tolerance,dBFT)。还有一组协议使用了多种机制的组合,例如将异步拜占庭容错与“八卦协议(gossip protocols)”和“虚拟投票(virtual voting)”机制相结合的“哈希图(Hashgraph)”。

有向无环图(Directed Acyclic Graphs):此外,还有一系列使用有向无环图的协议,例如“IoT Chain”、“Byteball”、“Nano”(Block Lattice)和 IOTA(Tangle)。DAG 的共识机制与区块链有着根本不同。有向无环图不需要将数据捆绑在一起,然后逐个确认区块,而是需要新添加的数据来引用和验证过去的数据。通常,每个新交易都必须引用和验证之前的两个交易。在这样做的过程中,网络形成了一个收敛和确认交易的图表。如果一个节点错误地验证了过去的交易,则该节点的交易将无法被其他参与者确认。

详细解释上面列出的每个共识机制超出了本书的范围,需要一个或几个专门的出版物。在分布式账本的背景下,关于这些协议的文献仍然很少,但是在不断增长。不过,其中许多协议仍处于概念阶段,没有合适的文档用来参考。大多数情况下,它们仅由一个项目实施,有时没有经过适当的研究,或者没有经过学术同行评审过程。

要不要代币?

随着对原始比特币协议使用修改后的治理规则的衍生技术的出现,似乎有必要对不同的分布式账本系统进行分类。分类依据包括允许谁(i)验证交易,(ii)将交易写入账本,(iii)读取交易,以及(iv)使用网络等。根据账本的类型,答案会有所不同。为简单起见,我们可以说在公共网络中,任何人都可以读取、写入和验证交易并使用网络。而在私有网络中,只有受邀成员才能读取、写入和验证交易并使用网络。混合变体也是可能的,比如只有验证和写入交易需要邀请,而读取(某些)交易则是公开的。在公共和无需许可的网络中,参与共识协议的所有节点都是不受信任的,因为它们事先是未知的。无须经过中心化实体许可,任何人都可以将协议和当前版本的账本下载下来以:

  • 在他们的本地设备上运行一个完整的节点,验证网络中的交易。

  • 挖掘一个交易区块,将数据添加到账本中,从而参与共识过程(工作证明)并在此过程中获得网络代币。

  • 通过网络发送代币并期望在交易有效时将它们包含在账本中。

  • 使用公共区块浏览器软件,将网络中所有与交易相关的数据真实化,或对存储在全节点上的所有区块链相关数据进行链分析(大数据)。

这样设置的共识机制必须考虑到恶意问题。代币是使这个不受信任的参与者网络抵抗攻击的重要组成部分。虽然代币化激励保障了不受信任网络的安全,但同时也使它们变得非常缓慢。公共和无许可网络每秒只能处理几笔交易,这使得它们对于交易量高的大规模应用程序不太可行。然而,业内目前正在提出和实施各种技术解决方案来解决这些可扩展性问题(了解更多:附录 - 可扩展性解决方案)。

另一方面,私有和许可的账本具有双边合同协议的联合设置。这是一个仅限邀请的会员俱乐部,其他任意参与者都无法访问该网络。由于成员之间有双边合同协议,因此他们彼此信任,如果出现任何问题,他们知道该起诉谁。所以,许可账本不需要代币来激励协调行动,而代币却是无许可网络不可或缺的一部分。事先知道所有参与节点的身份这一事实提供了对“女巫攻击”的自然保护。因此,私有和许可的账本可以每秒处理更多的交易,因为它们不必处理未知数量的匿名节点。它们还提供比当前最先进的公共区块链网络更多的隐私,因为账本数据不可公开访问。许可账本主要由行业联盟开发。交易验证由一组预先选定的参与者进行,例如,60 家金融机构,每个机构运营一个节点,其中 40 家必须签署每个区块才能使区块有效。根据行业和案例,读取账本数据的权利可能是公开的、部分公开的或仅限于参与者。

虽然大多数区块链文献都对许可账本和无许可账本进行了二元区分,但我想说没有“100% 无许可”之类的东西。每个共识机制都需要一个最低投资门槛,以便能够验证交易或写入账本。然而,世界上大多数人没有经济能力购买足够强大的专用硬件来挖掘比特币代币。即使对于仅验证公共区块链网络中的交易并且不需要与采矿节点相同级别的硬件投资的全节点,也需要投资一台普通的 PC。在撰写本书时,购买 PC 意味着必须花费至少几百欧元[^8] 来验证交易。虽然 500 欧元对于一个普通的欧洲家庭来说不算多,但它超过了世界上相当一部分人口的月收入。更不用说采矿计算机所需的成本了。

此外,虽然例如基于“股权证明”的共识是公开的,但它并非完全无需许可。共识机制要求你拥有最少数量的网络代币才有资格验证交易。因此,“无许可”是一个相对术语,我们不能以二进制方式使用,而是应该作为梯度使用,范围从“较少许可”到“完全许可”。在分布式账本系统的早期阶段,许可解决方案在高度监管行业中非常有用,这些行业希望建立在分布式账本上,但同时又受到政府监管。倡导者声称,联合解决方案可以提供更高水平的效率和安全性,并减少传统金融机构的欺诈问题。私有区块链不太可能彻底改变金融体系,但它们可以取代遗留系统,使行业更有效率。一旦底层技术变得更具可扩展性和成熟度,并被监管机构更好地理解,许可账本也可能是通往广泛采用公共和无许可网络所迈出的一步。

目前尚不清楚该技术在中长期将如何发展。一些人预测,在 1990 年代初,当私营公司建立自己的私有网络时,许可账本可能会遭受与“内部网”相同的命运,因为它们害怕与公共互联网连接。随着时间的推移,这种恐惧消失了。今天,内网仅被用于对安全型要求极高的情况。

图 1.10 公共账本 vs. 私人账本

案例和应用程序

区块链网络和衍生的分布式账本系统为权限管理提供了基础设施。 每个流程、任务和支付都将具有可以识别、验证、存储和共享的数字记录和签名。律师、经纪人、银行家和公共管理人员等中介的许多任务可能会被分布式账本系统所取代。个人、组织、机器和算法现在可以在几乎没有摩擦以及交易成本很小的情况下相互交互。这种新的基础设施催生了许多新的应用程序,其最重要的特点是:

透明度和控制:区块链网络和其他分布式账本允许在商品和服务的供应链中实现更高的透明度和控制权,包括已被代币化的金融服务,这将解决供应链的透明度问题、减少腐败、并更好地控制我们的私人数据会被用来做什么。

减少官僚主义:智能合约和类似的权利管理解决方案有可能减少官僚主义和商业交易的协调成本(了解更多:第 2 部分 - 智能合约)。

解决组织的委托代理困境:分布式账本还为新型去中心化、有时甚至是自治组织提供了全球协调工具(了解更多:第 2 部分 - DAO 的制度经济学和治理)。

代币作为杀手级应用:加密代币作为区块链网络和衍生账本的应用可能与万维网的出现一样具有革命性,它允许只用几行代码创建具有视觉吸引力的网页,并通过后续链接而不是使用命令行界面浏览 Internet。使用几行智能合约代码创建代币也同样变得非常容易(阅读更多:第 3 部分和第 4 部分)。

分布式账本的最大应用案例之一是商品和服务供应链的透明化和溯源。供应链代表着地理上相距遥远且法律上独立的实体的复杂网络,这些实体通过动态网络交换商品、支付和文件。它们的架构与区块链网络非常相似,但与区块链网络不同,所有文档都在数据孤岛中进行管理。因此,这些供应链网络中的文档处理系统通常效率低下、接口复杂且成本高昂。公司和个人的可持续行为很难追踪,也没有很好的回报。买家和卖家很少或根本没有关于他们购买产品的来源信息,包括潜在的欺诈、污染或侵犯人权行为。

分布式账本允许供应链上的不同网络参与者无缝地交换数据。文档和交易几乎可以实时处理,因为审计和执行可以自动化,从而缓解多份文档副本和数据不一致等挑战。沿着全球供应链追踪商品和服务的来源可能比今天更加可行。基于 Web3 的解决方案可以提供 (i) 环境影响的更高透明度,以及 (ii) 我们所吃食物的来源、生产类型和成分,以及植物生长的条件或动物的处理方式。许多公司和行业计划,例如“Provenance”、“Ambrosus”、“Modum”、“OriginTrail”、“Vechain”、“Wabi”或“Wantonchain”,已开始实施基于 Web3 的基础设施以优化其价值链,改善低效率,释放营运资金,并使商品和服务更容易获得。然而,这样的解决方案总是需要一组技术的组合,包括机器学习算法和来自物理网络、物联网的数据(了解更多:第 2 部分 - 智能合约预言机)。分布式账本应用程序还可以提供更好的人权问责制,例如一般工作条件、童工或公平工资。致力于此类解决方案的项目包括:“bext360”、“fairfood”和“Namahe”。它们可以进一步用于对我们的私人数据提供更多控制(了解更多:第 1 部分 - 以用户为中心的身份 - 数据保护)并创建 P2P 数据市场(海洋协议)。虽然从理论上讲,当前的解决方案也可以提供个人数据所发生情况的这种透明度,但我们必须信任一个中心化的机构。

本节概要

区块链网络是一种由集体维护一个共享的分布式账本的公共基础设施,其中账本信息以不可篡改且加密的副本形式存储在网络的每一台计算机上。

账本中包含了曾经进行的所有交易。交易以防篡改的方式存储:区块中的更改将会影响后续区块。存储在网络中所有计算机上的账本保证每个代币只传输一次,它充当了数字公证人和可公开验证的时间戳。

所有网络参与者都可以平等地实时访问相同的数据。网络处理的交易对所有参与者都是透明的,并且可以追溯到它们的起源。

与分布式数据库不同,区块链允许分布式控制,其中不信任彼此的不同方可以共享信息,而无需中央管理员。其业务逻辑和治理规则的算法管理,以及共识协议和智能合约为我们的社会经济活动提供了更高水平的自动化。

区块链概念建立在 P2P 网络的概念之上,并提供了一个通用数据集。即使每个参与者可能不认识或不信任对方,他们也都可以信任这个通用数据集。彼此不认识或不信任、居住在不同国家、受不同司法管辖、彼此之间没有具有法律协议约束的个人和机构现在可以通过互联网进行交互,而无需银行、互联网等受信任的第三方平台或其他类型的清算机构。

自 1980 年代以来,围绕加密保护 P2P 网络的想法已经在学术环境的不同发展阶段进行了讨论。然而,在比特币出现之前,从来没有一个 P2P 网络的实际实施能够避免双花问题,而不需要可信的中介来保证价值交换。“双花问题”是指在当前的互联网中,数字货币以文件的形式可以被复制,同一个数字文件的副本可以从一台计算机同时发送到其他多台计算机上。

共识机制,例如工作量证明,允许分布式控制。它们基于经济激励和密码学的结合。运用博弈论来将本地网络代币奖励给网络参与者。这种奖励机制的设计方式使得欺骗网络在经济上并不可行。由于需要大量的计算能力,因此伪造区块链变得极其困难。

与公共和无许可网络不同,许可网络仅接受邀请的成员,这意味着所有验证者都是联盟成员。

“分布式账本”已经成为一个概括性术语,用于描述在所有使用它的人之间分发记录或信息的技术,无论是许可的还是非许可的,并且独立于他们的共识机制或数据结构。

章节引用和延伸阅读

脚注

[^1]: 在匿名网络中,所谓的女巫攻击(sybil attack )是一种单个用户可以使用假名生成多个实体来影响共识过程的攻击。

[^2]: 比特币网络作为一个全球性的计算机网络,具有网络延迟(网络数据处理的延迟)。考虑到延迟问题,比特币协议规定平均每 10 分钟创建一个区块。

[^3]: 以太坊硬分叉源于“The DAO”事件,其中约 5000 万美元因代码漏洞而流失。追溯审查导致流失的交易的硬分叉被高度政治化。硬分叉的反对者坚持账本的不变性。结果,反对硬分叉的少数网络代币——以太坊经典——创造了历史,成为第一个在交易所上市的少数网络代币。

[^4]: 由于网络拥塞而增加比特币网络的交易费用是社区中一些开发人员提议在需要硬分叉的协议更新中增加区块大小的动机。该提议遭到其他网络开发商的强烈反对。经过两年的辩论,有争议的硬分叉于 2017 年 7 月进行,并导致形成了一个新社区,他们提出了不同的提议,被称为比特币现金。 2017 年 8 月 1 日,比特币现金的交易价格约为 240 美元,而比特币的交易价格约为 2700 美元。

[^5]: 智能合约是用于规范、审计和执行已写入代码中的任意代币转移规则的计算机程序,这些规则是由网络中所有计算机的共识自行执行的,即区块链网络(了解更多:第 2 部分 - 智能合约)。

[^7]: 比特币和以太坊的工作量证明有所不同,其差异包括:哈希算法类型的不同(SHA-256 与 Ethash)、平均区块时间目标不同(10 分钟与约 15 秒)以及支付方案不同(仅实际的区块生产者与一些非接受(non-accepted)的区块得到奖励,例如 Uncles)。

[^8]: 可以在 Raspberry PI(经济实惠的迷你计算机)和 SD 卡上运行完整节点,其成本低于 100 欧元。但是,你仍然需要一台普通的 PC 来下载完整的区块链(至少 BTC 和 ETH)。下载完整的账本后,可以在 Raspberry PI 上运行完整的节点。