algorand的分享会刚刚结束。Micali教授站在台上,望向人群。
有人举手问了一个问题:
“在algorand系统里,验证节点如果作恶是不会受到任何惩罚的吗?这样的话整个系统可以轻易被收买吧,哪怕我事先并不知道这些验证节点是谁……”
algroand核心设计理念有一个非常重要的假设:在一个系统中,绝大部分人都是诚实的。这个假设贯穿整个系统,代表了algorand最本质的内核。但显然,现场提问的这位朋友对此仍然有所质疑。
Micali教授打断了对方的问题:“algorand整个系统的确没有所谓的「惩罚」机制。你后面说的其实是另一个问题。”
他把身体转向观众,说了接下来这样一段意味深长的话:
“我和你,包括在场所有人,我想我们都同意「诚实」究竟意味着什么。
你知道密码学诞生至今最古老的协议是什么吗?是「秘密分享协议」(secret sharing)。
这个协议的原理大部分人都说得出来:我们都害怕忘记密码,而密码其实就是一串数字而已,于是有人想出了一个方法——把这串数字拆成十个不同的数字,它们相加的和刚好等于密码的值,然后我把这10个数字随机发给10个不同的人保管。我请求他们做一个诚实的人,不要把自己的数字告诉别人。当有一天我自己忘记了密码,我就去找他们每个人要回数字,相加一遍就好了。
按照你的质疑,如果人们会一边认为自己是诚实的,一边把手里的数字告诉别人,那秘密分享这个协议是不成立的——不仅如此,整个密码学领域里所有的协议大概也都不存在了。「诚实」的基础是不去考虑那些不诚实的做法,我认为不止是我一个人这么想的。”
如果你对隐私币(privacy coin)和zcash比较熟的话,你可能听说过,这些项目很多都用到了密码学里的一个理论——零知识证明(zero knowledge proof)。
第一篇提出零知识证明理论的论文发表于1985年,micali正是这篇论文的联合作者。
零知识证明,包括密码学,原本只是一个很小众的学科。直到2009年,一个化名中本聪的密码朋克发表了关于比特币构想的白皮书,密码学里的许多理论才得到了实际应用。同时,比特币和区块链也迅速吸引来了其他人的眼光。
比特币的出现当然也立刻引起了 micali 的兴趣。“我在想我可以做点什么。我把自己关在房间里,几个月都不出门,不停地研究区块链的协议、共识、治理、激励机制,然后,我终于知道自己想要的是什么了。”在杭州的见面会上,micali这样告诉橙皮书,“最后我把激励机制拿掉,单独去思考整个协议。我把自己的想法写成了一份白皮书,扔到网上,然后你猜发生了什么?”
几个同在MIT的同事找了上来,其中一位叫nickolai zeldovich,他是系统安全领域鼎鼎有名的人物。nickolai觉得白皮书里的设想看起来过于美好,不像是真的,“too good to be true”,于是他问 micali,能不能把白皮书拿出来测试一下?micali回答,当然可以。
于是,他们着手准备了一次测试。
“我们租了1000台亚马逊的服务器,每台模拟500名用户,然后增长到1000个用户、2000个用户、5000个用户,15000个用户,一直到500000用户。测试的结果显示,达到15000个用户时,系统完全没有变慢——在那一刻我知道,我的想法不仅在白皮书上可行,在测试上也是可行的。”后来,nickolai也成了白皮书的联合作者之一。
有了白皮书,有了技术可行性的测试,是时候动手做点大的了。
micali 把这个项目正式取名为algorand,他想把 algorand 建设成为区块链里切实可用、值得依赖的基础设施——换句话说,就是做成一条最好的公链。
algorand是一个复合词,由algorithm(算法)+random(随机)组成。这个名字揭示了alogrand的设计原理,即用算法随机产生出块节点与验证节点——这本身就是一种很“密码学”的思路。
micali 关于图灵奖的头衔,能够为 algorand 吸引来不少好奇的目光。但其实 micali 本身也是一个特别擅长传达理念的人。
这个瘦瘦小小的老头子教授,看起来永远是一副精神充沛的样子。在上海万向举办的区块链大会上,micali 与 oasis lab 创始人 dawn song、cosmos 创始人 jae、以太坊创始人 vitalik 分到了同一组做 pannel 讨论。当主持人一个一个询问嘉宾观点的时候,micali是唯一一个执意要从座位上站起来、面向观众大声回答问题的人。
虽然他讲的英语有很重的意大利口音,但这个口音似乎从来没有影响过他对自己所表达的东西的自信力。杭州见面会现场的话筒临时出了问题,micali对工作人员摇了摇头,示意自己其实并不需要话筒。
在这些公开的分享会里,micali喜欢用“魔法”来代替algorand涉及到的许多复杂的密码学算法,以此让听众更好的理解algorand系统究竟是如何运作的。
对于第一次接触algorand的人来说,这个系统在设计上有两个非常“反直觉”的地方:
这个系统里没有任何的“惩罚措施”这个系统不需要你押注任何的资产在大部分公链系统的设计里,为了防止节点作恶,系统往往会设置相应的惩罚机制。dpos或者bpos的共识机制要求节点抵押一部分的资产,以此作为筹码,约束节点的行为。可以说,大部分区块链项目的“信任”,都是通过这种基于资产抵押的惩罚机制,建立起来的。
但在micali的脑子里,上面这些并非都是必须存在的东西。这背后反映了algorand与众不同的设计哲学。
micali认为,当“钱”不需要拿去做任何抵押、可以随时流动的时候,系统里大部分的钱就会掌握在诚实的人手里。因为大部分的人都是诚实的,钱只要足够分散,大部分钱也会是诚实的。而对一个POS的系统来说,“钱”就是一种投票权。如果大部分投票是诚实的,那么这时,“惩罚”也就没有必要存在了。
“我认为我们应该做一个「不可能作弊,而非如果有人作弊就去惩罚它」的系统。我觉得这才是更好的设计。”micali在一次分享会上说,“当钱可以随意流动的时候,大多数钱掌握在大多数人的手里,而大多数人是诚实的,这个网络就是安全可靠的。”
第一个区块,也就是创世块,是不需要考虑的,它是人为定义的,不需要共识。第二个区块怎么产生才是关键。
在micali的设计里,algorand通过两个阶段的“魔法”——这个魔法背后其实是数学和密码学——来确定下一个区块的产生。
第一阶段:魔法随机选出一个人来产生区块(概率与这个人所拥有的钱的数量成正比,不需要锁定或抵押),然后他把「签名的区块+自己的公钥」广播到网络里;第二阶段:魔法随机选出一千个人来验证这个区块。这一千个人组成的委员会对该区块是否有效达成共识,他们把「自己对区块的投票意见+自己的公钥」广播到网络里。micali 喜欢把“公链系统”想象成一个小型的人类社会:“在一个社会里肯定会有一小撮坏人,比例可能是1%、2%,或者20%,但是不可能大部分人都是坏人。不然所谓的「社会」就不存在了,那就是一个野蛮动物的黑暗丛林。”
因此,当第一个人被选出来的时候,他可能有10%的概率是坏人。坏人会发布错误的区块,或者把不同的区块发给不同的人,以此完成欺骗。这时,如果我们再随机选出一千个人,这一千个人都是坏人的概率是非常非常低的。相反,这一千个人和整个系统一样(如果足够随机的话),大部分人都会是好人。
如果你既没有被选为生成区块的人,也没有被选为验证区块的一千人,当你看到一个区块被这1000个人中的750个人验证过,那么你也可以知道,这个区块是正确的。
这就是algorand的基本原理。
那么问题来了:这一千个人的委员会到底是怎么选举出来的呢?
一人一票,通过纯民主的方式,让网络里所有的用户一起来选举?这样效率肯定非常低。
algorand采用了一种反直觉的做法:让他们自己推选自己。
这部分其实也是密码学的精华。
委员会的选举,依赖于一个神奇的彩票程序。这个彩票程序有如下几个特点:
每个用户都有一个彩票程序彩票程序只在用户本地的计算机上运行用户自己无法通过彩票程序作弊如果中奖了,用户可以拿出证据证明自己中奖整个彩票程序的计算量非常小,就是一些哈希和字符串的比较。中奖的概率和你手里的钱的数量成正比,而且,一个公钥有100万个币,和100万个公钥,每个地址有1个币,他们被选举上的概率是相同的,同时,二者彩票摇奖的时间和速度也是相同的。
然后,一旦你中奖了,你的计算机就会给你一张中奖证明,这个中奖证明会和你对区块的投票意见一起广播到网络中。所有这些事情将在几毫秒中完成,非常快速。
聪明的读者到这里应该反应过来了——micali 所说的那个“魔法”,其实就是这个基于密码学的彩票程序。
这个彩票摇奖机有两个好处:
委员会的选举速度很快:时间是毫秒级,因为没有人需要互相沟通,大家在自己本地的机器上运行就好了。委员会选举的过程很安全:假设系统中的坏人可以贿赂任何节点,让他们说谎,但在algorand系统里,坏人到底应该去贿赂谁呢?当委员会被选举出来的时候,坏人可以知道这 1000 个人分别是谁,但问题是,这时哪怕委员会里的人被贿赂了,他也已经把自己的中奖证明和对区块链的验证意见给广播出去了——换句话说,此时区块验证已完成,贿赂也无济于事。粗略的理解大概是这样。其中 alogrand 还做了不少的技术细节,比如:
vrfs(随机验证函数)和基于密码学的自选举新的速度超快的拜占庭协议(即 1000 人委员会对新区块达成共识的过程)用户可替代性(上面做拜占庭共识的过程中,如果对区块产生分歧需要经过最多 9 轮投票,这 9 轮以内的投票,每一轮的委员会都是不同的 1000 个人。这种可替代性可以更有效地经受被贿赂的情况)……
“我们今天一直在说的「区块链」,其实从来就不是一条链。它(比特币的链)是一棵树,”micali 说,“只不过,这棵树的分支随着时间的进行逐渐凋亡,最终留下了最长的那一条。但在 alogrand 系统里,从始至终就只有一条干净的主链,不需要 6 个区块的确认时间,一个新区块一旦产生就是最终的区块。就是这么简单、干净、明了。”
比特币之所以是一棵树而不是一条链,原因在于比特币需要额外的 6 个区块时间才能确认该区块的最终一致性。援引 maxdeath 在知乎上的答案:“在比特币里,因为网络延迟的原因,某个区块的生成者天然地在下一个区块的生成上具有优势。于是,比特币有了6个区块这么个延迟,因为一个区块的生成者预测 6 个区块以后的生成者的概率的时候,网络延迟能造成的优势就微乎其微了”。
algorand 能快速确定一个区块的最终一致性。根据 micali 的说法,algorand 上出现分叉的概率非常之低。大概需要经过「从宇宙诞生至今」这么长的时间,系统才有可能出现分叉。
除此之外,micali 认为 algorand 还有其他一些更重要的改进,比如:
真正意义上的去中心化:所有节点都一样,不存在矿工与普通用户的不同角色。借助于计算量很小、几乎没有延时的随机算法,在可扩展性上可以有很大的突破;很好的安全性:不仅可以抵挡协议层的攻击,还可以抵挡网络通信层面的攻击。上面这三点分别代表了“去中心化”、“可扩展性”和“安全性”——换句话说,algorand 解决了一直以来困扰公链的三难问题,即「不可能三角」。
在行业整体思潮开始转变,越来越多人开始探讨「以太坊成为世界计算机的愿景是否必要」时,“区块链在保持去中心化与安全性的前提下,应该尽量把计算剥离开,挪到第二层来做,让layer2来提升性能” 几乎已经成了行业新的共识了。
人们已经习惯并默认「不可能三角」无法解决,放弃与这个问题刚正面,转而去寻求其他解决思路,比如分片、链下扩容、侧链等等。在已经接受了一个既定条件的情况下,突然告诉你这个条件不存在了,让你重新定义问题——这时的人们很难做出正确的反应,因为大部分人的思想已经被这个既定条件牢牢困住了,很难挣脱。
algorand 的横空出世,如果对行业有其他方面的借鉴意义的话,也许在于它在尝试帮助这个行业打破这个狭小的思维框架。用 micali 的话来说,“algorand是真正使用第一性原理设计出来的”。
最大的质疑声聚集在同一个问题上—— alogrand 没有完善的激励机制。
对于这个问题,micali 在早期曾经尝试论证为什么不需要经济激励机制。coindesk 2017 年 5 月发表的一篇报道里,micali 表示“激励机制是最难的”,他的解释是这样: 当你为系统加入激励机制,人们就会尝试去利用激励机制赚钱。他们会想出各种你预想不到的办法专空子。中本聪肯定不会想到,pow 最终会导致比特币出现产业规模级的挖矿活动。
“我们必须把激励机制当作最后一种方法来使用。我相信我可以(让 algorand 在没有激励机制下运作起来),但我没有确切的论证方法证明我可以,因为这比「让 algorand 自己证明自己」要来得更难。”但没有激励机制,就像没有惩罚机制一样,很容易让人怀疑因此可能产生更大的问题。比如,没有激励机制,怎么吸引更多的人加入整个生态?人们为什么要参与成为 algorand 的节点,哪怕这个节点不需要消耗太多的计算资源和资产,没有好处的话,人们一开始为什么要去做呢?所有的节点会不会都变成懒惰节点?
micali 对这些问题做了一个有趣的反问:你会因为担心电脑上的 gmail 费电,而选择把邮箱关掉吗?
vitalik 显然对激励机制有不一样的看法。在被问及如何看待 algorand 时,v 神说过这样一句话:“algorand 假设系统中大部分人都是诚实的。而我们(以太坊的 casper)则是尝试用更偏经济激励机制的方法、而非密码学的方法,来实现 pos。”
micali 认为 algorand 是「更纯粹的 pos」。“pow 通过算力提高了节点出块的成本,保证系统的安全性,同时也产生了廉价电力和专业挖矿设备的竞争赛,最终一定程度上导致了「中心化」矿池的出现。而使用需要抵押资产、有惩罚机制的 pos 共识则是另一种「隐形的中心化」。让我来问你,一个普通的用户能把多少钱抵押在链上并且保证 30 天内不动这笔钱?没多少钱。最终那些有能力锁定大额资产的人,就会形成新的中心化。”
看起来,没有激励机制和没有惩罚机制一样,似乎都是 micali 出于对 algorand 系统保持足够去中心化的一个考量。不过尽管如此,在前不久的杭州见面会上,当现场许多人提出激励机制的质疑时,micali 主动站起来回答了这个问题。他表示 algorand 并非完全没有激励机制,只是目前激励机制的 paper 还没有最终确定发布出来。
micali 透露 algorand 的激励机制会跟其他公链有所不同:“algorand 不会去奖励出块的节点,我们也不会奖励那 1000 个入选委员会的区块验证者。如果你去奖励最终胜出的冠军,奖励那些第一个冲破终点的赢家,人们就会开始想尽一切办法把自己训练成百米赛跑的运动员。他们会买更好的设备,用更好的算法,来获得出块或者验证区块的权利。相反地,alogrand 会去奖励那些一直保持在线状态的节点和用户。只要你持续在线,保持对网络数据的接受和监听,就有可能获得 algorand 代币的奖励。”
这是至今为止 algorand 对外公布的关于激励机制方面的所有信息了。看起来,激励机制在 algorand 项目的发展中也经历了新的变化。从原本的「不需要」,到后来出现的「新的设计理念」,这对algorand也许是一件好事。一个项目总是需要经过一些时间,不停地完善想法。
尽管如此,algorand 仍然留下了不少问题。
按照这套激励机制的假设,以及 algorand 希望采用的「纯 pos」的共识算法,初始代币的发放将会变得尤为关键。Alogrand希望通过拍卖的形式发放代币,由市场决定Algo代币的价格,但这一部分目前还没有太多的信息。
此外,如果假设系统中所有的节点都是一样的,那么用户有可能通过类似“轻节点”的方式进行访问吗?
在杭州分享会现场,有人问到了这个问题:在没有矿工的情况下,一个新节点加入网络需要如何开始同步历史数据?algorand 论文的联合作者陈婧回答称,他们将会开发一套专门的历史数据同步工具,并且新加入的节点也并不需要从创世块开始同步所有区块的数据。
algorand 留下的最后两个问题是:目前没有实际的代码和开发进程,以及,目前 algorand 仅有的测试结果仍然是跑在非常稳定可靠的亚马逊云服务器上的,这跟实际的公链运行场景可能会有所差别。
而从另一方面来说,无论是经济激励机制、代币发放,还是系统工程上的实现细节,这些疑问看起来似乎都不是一个密码学家最擅长的事情。
micali 说这座桥是一个美妙的基础设施。
一个去中心化、不可篡改、无法屏蔽的公共账本,同样也是人类梦寐以求的一个美妙的基础设施。
问题是,什么才是实现这种理想基础设施的最好方法?
是最早出现的比特币吗?
还是会有更好的?
algorand提出了一个很有趣的想法:尽可能多地依赖于密码学算法本身,而减少经济激励对人性可能产生的影响。
这种「随机抽取样本来达成网络共识」的办法,在 micali 眼里还有更大的用处。
当被问及 algorand 最大的不同点是什么的时候,micali 说,“algorand 的拜占庭算法能让网络对任何的话题和决定快速达成共识。这将给予 algorand 更大的可能性。我认为 algorand 最大的不同是它的进化能力。整个社区对 algorand 未来的发展如果有新的想法,有更好的主意,都可以通过这种方式快速达成共识。因此,algorand 能拥有更快的进化迭代速度。”
algorand的「进化能力」,让我想到了另外一些东西。
自古以来,在人类社会里,一群人做出决定的唯一方式是选举出一个管理机构。你不可能让10万人逐一举手投票。哪怕有了区块链这一种人类历史上首次拥有的、防篡改、可以让数百万人同时发声达成共识然后做出集体决定的技术,一人一票的“纯民主”也不现实——因为效率实在太慢了。所以 EOS 才会使用 21 个超级节点的设计。
但 algorand 提出了另一种思路:如果我们的社会,每做一次决定,是通过随机选取社会里 1000 个人作为样本进行投票的话,会怎样?这种方式会不会更好?
老实说我不知道答案。虽然从概率上来说,这可能会是一个更贴近于社会全部成员意志的投票方式。但如果真理通常只掌握在少数人手中呢?如果选出来的这 1000 个人都是笨蛋呢?如果这 1000 个笨蛋做了最糟糕的决定?
我不敢想象这种机制,但同时我又对这种想象感到兴奋。对我们来说,唯一能确定的是,这样的社会将在极大的“不确定性”中向前走。
在回去的路上,我想起了另一个密码学家 Bruce Schneier。Bruce Schneier 写过一本书叫《应用密码学》。几年后,他又写了另外一本书叫《Secrets & Lies》。在第二本书里,Bruce Schneier 写下了这样一段前言(选自LeanCloud创始人江宏翻译版本):
七年前我写了另一本书:《应用密码学》。我在其中描绘了一个数学的乌托邦:可以永远保守秘密的算法,以及能安全可靠地执行无监管的赌博、抗检测的认证、匿名货币等美妙的电子化交互的协议。在我眼中,密码学是带来平等的伟大技术;任何有廉价计算机的人都能拥有与最强大的政府同样的安全。在两年后写此书第二版时,我甚至说「仅靠法律保护自己是不够的,我们还需要靠数学保护自己。」
然而我错了。密码学做不到以上的任何一点。
这并不是因为 1994 年以后密码学变弱了;也不是因为书中的技术内容不再正确。而是因为密码学不存在于真空中。
密码学是数学的一个分支。和数学的其它部分一样,它是关于数字、等式、逻辑的。而对于你我来说在生活中能感受到的安全是关于人的:人知道的事、人之间的关系、人和机器的关系。信息安全是关于计算机的:复杂、不稳定、有缺陷的计算机。
数学是完美的;现实是主观的。数学是确定的;计算机是易怒的。数学是有逻辑的;人是不确定、易变和难以理解的。
《应用密码学》的错误在于我没有对上下文做任何讨论。我把密码学当作答案™来讲述。这是很幼稚的。
[…] 一个同事曾和我说,世界上充满了《应用密码学》的读者设计的糟糕的安全系统。[…]
几年前我听过一句话,在这里稍微改动一下:如果你认为技术能解决安全问题,那么你既不懂安全也不懂技术。algorand 最大的亮点是“密码学”的设计,但人们也将因为“密码学”不断对它产生质疑。
(完)
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:关注产品与技术
评论0条