这些天很难避免听到关于区块链的消息。区块链将成为基于智能合约的新商业世界的基础。它将使每个人都能追溯其食物的来源、他们购买物品中的零件,或者他们听到的想法的出处。它将改变我们的工作方式、经济运行方式以及我们生活方式的方方面面。
尽管区块链具有巨大的潜力,但也很难找到对其真正含义的一致描述。在谷歌上搜索“区块链技术论文”的前三个屏幕返回的都是白皮书;没有一篇论文是经过同行评审的。10 关于这项技术本身的最好讨论之一来自美国国家标准与技术研究院,但长达 50 多页的内容对于快速阅读来说有点太多了。9
本文的目的是探讨区块链的基础知识:各个组成部分、这些组件如何组合在一起,以及可以进行哪些更改来解决区块链技术的一些问题。这项技术远非铁板一块;如果去除其他部分,一些技术可以被使用(在资源和精力方面有惊人的节省)。
由于没有单一的技术规范集,一些声称是区块链实例的系统将与此处描述的系统有所不同。此描述的大部分内容取自最初的区块链论文。6 虽然细节可能有所不同,但主要思想保持不变。
区块链系统的最初目标是支持“一种基于密码学证明而非信任的电子支付系统”6。虽然使用范围已大大扩展,但基本目标和要求仍然保持一致。
这些目标中的第一个是确保区块链用户的匿名性。这通过使用公钥/私钥对来实现,其方式相当为人所知,并且区块链技术并未重新发明。每个参与者都通过公钥标识,身份验证通过使用私钥签名来完成。由于这并非区块链独有,因此本文不再进一步考虑。
第二个目标是提供一套交易的公共记录或账本,一旦验证并达成一致,就无法更改。最初的设计目的是防止电子货币用户重复消费,并允许对所有交易进行公开审计。账本记录了已发生的交易以及这些交易的顺序。将此账本用于验证电子现金交换以外的交易,一直是区块链技术的主要扩展。
最终的核心目标是使系统独立于任何中心化或受信任的权威机构。这意味着这是一个由对等方或参与者驱动的系统,其中没有任何实体比其他实体拥有更多或更少的权威或信任。该设计旨在确保其他目标的实现,只要参与社区中超过一半的成员是诚实的。
虽然有很多不同的方法来实现区块链,但所有区块链都有三个主要组成部分。第一个是账本,它是一系列区块,这些区块是交易及其顺序的公共记录。第二个是共识协议,它允许社区的所有成员就存储在账本中的值达成一致。最后是数字货币,它作为对那些愿意为推进账本工作的人的奖励。这些组件协同工作,提供一个具有稳定性、不可否认性和信任分配等属性的系统,而这些属性正是该系统的目标。
账本是一系列区块,其中每个区块是约定大小的交易的有序序列(尽管实际大小因系统而异)。区块的第一个条目是前一个区块的密码学哈希值(例如,由安全哈希算法 SHA-256 生成的哈希值)。这可以防止前一个区块的内容被更改,因为任何此类更改都会改变该区块的密码学哈希值,因此可以被社区检测到。这些哈希函数易于计算,但(至少以我们目前的知识)不可能逆转。因此,一旦区块内容的哈希值发布,社区中的任何人都可以轻松检查该哈希值是否正确。
到目前为止,这没什么新鲜的;它只是一个梅克尔链,已经使用了多年。区块链的创新之处在于,哈希值的计算需要向要哈希的区块添加一个 nonce(一些随机位集),直到生成的哈希值具有一定数量(通常为六个或八个)的前导零。由于无法预测哪个值会使哈希值具有该数量的前导零,因此这是一个暴力计算,其难度随所需零的数量呈指数级增长。这使得区块哈希值的计算在计算上变得困难,并意味着社区中的任何成员都有机会提出可接受的哈希值,其概率与该成员投入问题的计算资源量成正比。提出哈希值和正确的 nonce 是一种工作量证明(或许还有运气),社区中的任何人都可以轻松验证。那些试图计算区块的正确哈希值的人是区块链世界的矿工;他们正在用计算换取报酬。
一旦矿工提出了正确的 nonce,从而产生了正确的哈希值,他们就会将结果广播给社区的其他成员,所有矿工都开始处理下一个区块。新区块的第一个条目将是上一个区块的哈希值,区块的第二个条目将是分配给为上一个区块找到哈希值的矿工的某些数量的货币的创建。
只有当您有一个区块来启动链时,这才有效。这与所有系统的启动方式相同:通过作弊并声明一个区块为创世区块。
当然,有可能两个不同的矿工可能会同时(或足够接近)找到一个 nonce,该 nonce 给出的候选哈希值具有正确数量的前导零,或者看到一个有效的 nonce 的人可能会声称该发现是他们自己的。甚至可能有两个不同的区块被提议作为链中的下一个条目。处理此类问题需要系统的下一个组件:共识协议。
共识协议是分布式系统中最受研究的方面之一。虽然很久以前就证明了,如果存在任何类型的故障可能性,则没有算法可以保证共识3,但一些众所周知的协议(例如 Paxos4)已经在系统中使用了很长时间,以提供高度可靠的分布式协议机制。然而,在 Paxos 等共识协议中,假设需要达成协议的系统是已知的。
根据使用的故障模型,需要达成共识的系统数量会发生变化。当大多数系统在这样的协议中达成一致(对于多数的某种定义),在想要防止非拜占庭故障的系统中就达成了共识。如果系统容易受到拜占庭故障的影响,则需要三分之二的系统(加上一个)达成一致。虽然投票可以在对等系统中完成,但算法的最有效版本依赖于领导者来发起投票并统计结果。
然而,在区块链宇宙中,存在一个无信任系统,这意味着不可能有领导者。此外,在区块链宇宙中,参与验证交易的系统数量(即,为区块找到前缀中具有正确数量零的哈希值)是未知的。这使得声称当 51% 的矿工同意该区块时,该区块就被接受的说法毫无意义,因为尝试达成协议的实体数量是未知的。
相反,多数由下一个区块的哈希值计算确定。由于该区块以先前区块的哈希值开头,并且由于下一个区块的哈希值被计算出来的可能性与尝试计算下一个区块的适当哈希值的计算资源量成正比,因此,如果大多数可供矿工使用的计算能力开始处理以先前哈希值为种子的区块,那么该区块更有可能作为下一个区块被提供。这就是共识与最长链条联系在一起的原因,因为该链条将由最大数量的计算资源产生。
这种机制依赖于生成具有正确前导零集的哈希值的真正随机性。随机性也意味着,有时有人会很幸运,并且由少数矿工处理的链条将在由大量计算资源处理的链条之前被正确哈希。
然而,在重要的意义上,这并不重要。区块链宇宙将多数定义为产生适当的 nonce 和哈希值。有时,这意味着超过一半的计算能力已经投入到问题中,但有时可能意味着只有一个(非常幸运的)矿工得到了答案。这可能意味着需要回滚未首先验证的区块中的一组交易,但这正是在途交易的本质。
这确实意味着区块链宇宙中的所有矿工都需要将新哈希的区块作为链中下一个区块计算的基础。这需要一种激励机制,这就是区块链宇宙的第三个组成部分出现的地方:数字货币。
矿工进行所有计算工作以计算区块的 nonce 和哈希值的原因是,第一个完成这项工作的人将在下一个区块中获得数字货币的分配作为第一笔交易。这也鼓励其他矿工尽快接受一个区块,以便他们可以开始进行哈希下一个区块的工作(这很可能在哈希上一个区块所需的时间内被交易填满)。比特币是最初的区块链货币和激励措施;2017 年 9 月,哈希一个区块的奖励是 12.5 个比特币8,当时的汇率为 1 个比特币 = ~4,500 美元(价格波动相当剧烈)。此奖励(对于比特币)每 210,000 个区块减半。下一次减半预计在 2020 年 5 月 25 日左右。1
其他数字货币以类似的方式运作。为了花费货币,条目被输入到当时的当前区块中,该区块充当特定账本/数字货币组合的所有货币兑换的账本。
虽然区块链最初是作为一种无信任数字货币的机制提出的,但提议的用途已远远超出该特定用例。实际上,重点似乎已分为两类,一类是强调货币的原始用途的公司(因此出现了首次代币发行 (ICO) 的爆炸式增长,这创造了新的货币),另一类是将账本用作记录和排序交易的通用机制。对于第一种用途,声称区块链可以取代过时的货币概念,并允许一种新的、私有的、无摩擦的经济。对于后一种用途,声称区块链可用于跟踪供应链、创建自我执行的合同,并普遍消除任何交易中的中介层。
这两种用途都存在一些严重的问题。许多问题是任何新技术在取代根深蒂固的利益时都会遇到的问题,但其中许多问题本质上是技术性的;这些是本文讨论的问题。
对区块链的一些批评集中在用于为区块创建可接受哈希值的机制上。为了确保任何人都可以发现这一点,该机制需要是需要大量计算但易于验证的机制。为了确保已验证的区块无法更改,计算需要难以逆转。使用诸如 SHA-256 之类的函数对区块进行哈希处理,并要求添加一个 nonce 值,直到哈希值中出现一定数量的前导零,这非常符合这些特征。然而,正是这组要求意味着共识机制具有内在的局限性。
关于区块链中使用的基于哈希的共识机制的一个明显的担忧是,该技术是否可以扩展到更普遍使用所需的水平。根据 blockchain.com 的数据,每日确认交易数量平均约为 275,000 笔,过去一年中的峰值约为 380,000 笔。2 这是一个令人印象深刻的数字,但远不及主要信用卡系统在高峰日每分钟执行的 400,000 笔交易。目前,区块的验证速度为每秒 4 到 6 个,这是交易数量的限制因素。
虽然有许多关于处理区块链扩展的建议,但尚不清楚这些建议如何与系统的基本设计相符。使区块的验证变得困难和随机是区块链基本设计的一个重要方面;这是工作量证明,它是无信任共识算法的核心。如果区块的验证变得更容易,那么任何矿工都能够发现适当哈希值的概率保证就会降低,并且一些拥有大量计算能力的矿工接管链条的可能性就会增加。验证区块的目的是要困难;这就是系统避免不得不信任任何特定成员或成员集的方式。
已建议用于扩展的一种机制是将区块链分片成多个不同的链,以便可以在不同的链中并行完成交易。这正在不同的代币交易所中发生;每个代币系统都可以被视为一个单独的分片。为了进行跨越这些分片的交易,这引入了自身的复杂性,因为确保一致性的概念要求所有账本都是独立的,以便在每个账本内进行一致性检查。可以创建一个新的区块链用于跨区块链交易,但该区块链的激励机制将是一种新的电子货币,需要保留在这个新区块链的生态系统中。让交互的区块链信任中介区块链是一个尚未解决的问题。
也有人尝试使用工作量证明以外的其他机制来驱动共识协议。其中最著名的可能是权益证明方法,其中可以用更简单的方式计算区块,并且当拥有大多数货币的人同意区块的哈希处理时,就达成共识。由于货币的数量及其所有者是已知的,因此这不受不知道社区成员投票的问题的影响。但这确实将信任的概念重新引入到系统中;那些拥有更多资金的人拥有更多的权益,因此比那些拥有较少权益的人更值得信任。这是寡头政治的电子等价物,在过去效果不佳,但在这种情况下可能会证明更稳定。
对区块链技术的第二个批评是共识机制的产物,即在发现区块的适当哈希值时消耗的能量。计算具有适当数量前导零的哈希值需要多次哈希计算,这反过来又消耗大量电力;有些人声称比特币和相关的加密货币是将电力转化为货币的机制。对电力消耗量的估计范围从低端表示约为加利福尼亚州圣何塞市的用电量,到高端表示相当于丹麦的电力消耗量。无论使用哪种模型进行计算,答案都是巨大的。
希望这种能源消耗将会减少,也许通过将用于哈希处理的硬件更改为更高效的硬件(例如专用 ASIC)。然而,使哈希处理过程更有效率与区块链不信任任何人的基本机制相悖;关键在于区块的验证必须是困难且随机的,以便任何矿工都有可能平等地找到哈希值。
如果消耗所有这些能量的计算通常是有用的,那么能源消耗可能就不那么令人担忧了。例如,SETI@home 通过将背景无线电波传输的分析卸载到连接互联网的计算机来消耗大量能量。这项倡议位于加州大学伯克利分校的 SETI(搜寻地外文明)研究中心,旨在寻找宇宙中其他智慧生命的迹象,参与者认为这值得做(并支付额外的电费)。
也许可以更改用于验证区块链的计算,使其提供不仅仅是区块链验证的东西。这样的计算需要具有以下属性:所有矿工都有可能平等地找到(在计算资源相等的情况下),难以找到,并且易于验证。目前尚不清楚这种计算可能是什么。
也许区块链最成问题的方面是其作为无信任的核心概念。该技术的许多复杂性都是由此要求引起的。然而,尚不清楚对于人们谈论的作为区块链核心的用途而言,这是否是必要的,或者该系统是否实际上是免信任的。
正是由于缺乏信任,系统才需要区块的验证在计算上是困难的、单向的和易于验证的。如果放弃这种免信任的要求,那么可以轻松完成公共账本的生成,该账本是不可更改且易于验证的。假设这样的账本将用于银行间转账(这已被建议作为区块链的用途)。然而,用户不使用免信任系统,而是决定信任主要银行、联邦储备委员会以及一些消费者监督机构或组织的联盟。该联盟可以选择一个成员(可能轮流),负责维护账本(领导者)。交易被写入账本,当账本区块达到适当大小时,领导者对账本进行哈希处理,使用哈希值启动一个新区块,然后继续(就像当前的区块链中一样)。
不同之处在于,领导者无需随机尝试添加到区块中的值,直到哈希值中产生正确数量的前导零。如果没有该要求,则可以非常快速地完成哈希处理,且能源消耗很少。区块仍然无法更改(因为哈希值仍然是单向函数),并且联盟的任何成员(或任何其他有权访问账本的人)都可以快速检查哈希值。可以以这种方式生成公共的、可验证的和不可更改的账本,但时间和能源成本要低得多。
这确实需要信任联盟的各个成员,但是验证联盟是否在区块的哈希处理上作弊很容易。这不是对单个实体的完全中心化信任,而是信任一个群体。群体越大,种类越多,群体串通的可能性就越小。另请注意,这样的系统不需要像数字货币这样的激励机制来运作。
也许您真的不想信任任何人。校准妄想症很困难,也许您真的想要一个经济系统,其中没有一组特定的实体有能力串通和控制系统。这是区块链的真正原因。
正如肯·汤普森在 1984 年指出的那样,信任必须在某个地方发生。7 即使您不信任任何群体来计算区块,您也需要信任用于管理区块、账本和其余部分软件的开发人员。从软件中的错误到设计更改5,一切都导致了比特币生态系统中的分叉,这些分叉已在该系统中引起了相当大的动荡。如果您的信任在于代码的安全性和稳固性,那是您做出的选择。但这并不是一个免信任的系统。
用于交易的公共、不可否认、不可更改的账本可能对许多应用来说是一个有用的工具。在已知的密码学协议之上构建这样的系统可以通过多种方式完成。如果在系统中添加了免信任(除了信任软件之外)的要求,则需要在区块链这样的系统之上构建它。这样的免信任系统是有代价的。
成本是否值得是需要理解系统的各个部分及其如何相互作用的决策。无需加密货币或基于难以计算但易于验证的单向函数的共识算法,就可以实现公共的、不可伪造的、不可更改的账本。无需使用公共账本或免信任共识算法即可创建加密货币。并且可以创建不需要财务激励系统或公共账本的共识算法。
1. Bitcoinblockhalf.com. 比特币区块奖励减半倒计时。
2. Blockchain.com. 2018. 每日确认交易量; https://www.blockchain.com/charts/n-transactions?daysAverageString=7。
3. Fischer, M., Lynch, N. A., Paterson, M. 1985. 在存在一个故障进程的情况下,分布式共识的不可能性。《美国计算机学会杂志》32(2), 374-382。
4. Lamport, L. 1998. 兼职议会。《美国计算机系统汇刊》16(2), 133-169。
5. Morris, D. Z. 2017. 在 Segwit2x 分叉取消后,比特币陷入剧烈动荡。《财富》(11 月 12 日); http://fortune.com/2017/11/12/bitcoin-upheavel-segwit2x-fork/。
6. Nakamoto, S. 2008. 比特币,一种点对点电子现金系统; https://bitcoin.org/bitcoin.pdf。
7. Thompson, K. 1984. 关于信任信任的反思。《美国计算机学会通讯》27(8), 761-763; https://dl.acm.org/citation.cfm?id=358210。
8. Trubetskoy, G. 2017. 1 个比特币的电力成本(9 月); https://grisha.org/blog/2017/09/28/electricity-cost-of-1-bitcoin/。
9. Yaga, D., Mell, P., Roby, N., Scarfone, K. 2018. 区块链技术概述。NISTIR 8202 (10 月)。美国国家标准与技术研究院; https://nvlpubs.nist.gov/nistpubs/ir/2018/NIST.IR.8202.pdf。
10. 2018 年 10 月 31 日对术语“区块链技术论文”进行的搜索。
比特币的学术渊源
加密货币的概念建立在研究文献中被遗忘的思想之上。
阿文德·纳拉亚南和杰里米·克拉克
https://queue.org.cn/detail.cfm?id=3136559
实践研究
加密货币、区块链和智能合约;深度学习硬件
计算机科学最佳研究的专家策划指南
https://queue.org.cn/detail.cfm?id=3043967
证书透明度
公共的、可验证的、仅附加的日志
本·劳里,谷歌
https://queue.org.cn/detail.cfm?id=2668154
吉姆·瓦尔多 是哈佛大学计算机科学实践教授,同时也是工程学院的首席技术官,他在离开 Sun Microsystems 实验室后担任该职位。
版权 © 2018 由所有者/作者持有。出版权已授权给 。
最初发表于 Queue 第 16 卷,第 6 期—
在 数字图书馆 中评论本文
斯科特·鲁奥蒂、本·凯泽、阿卡迪·耶鲁希莫维奇、杰里米·克拉克、罗布·坎宁安 - 区块链技术:它有什么用?
企业高管、政府领导人、投资者和研究人员经常提出以下三个问题:(1)区块链技术究竟是什么?(2)它提供哪些功能?(3)有哪些好的应用?在这里,我们彻底回答了这些问题,对区块链技术进行了全面的概述,将炒作与现实区分开来,并提出了一个有用的词汇表,用于在未来讨论区块链技术的具体细节。
亚历山大·库兹马诺维奇 - 网络中立性:区块链扩展的意外解决方案
可证明中立的云无疑是区块链扩展的可行解决方案。通过优化传输层,不仅可以从根本上扩展吞吐量,而且可以显着降低延迟。事实上,在当今的数据中心中,大多数流的延迟分布已经偏向微秒级时间尺度,而毫秒级时间尺度仅存在于分布的尾部。没有理由 BDN 存在点不能实现类似的性能。在这些 BDN 存在点之间添加专用光纤基础设施将进一步缓解吞吐量并减少延迟,从而创建高级 BDN 的骨干。