APP下载

理论计算、密码学和区块链

2019-11-21希尔维奥米卡利

互联网天地 2019年9期
关键词:抽奖区块委员会

□ 文 希尔维奥·米卡利

SILVIOMICALI

希尔维奥·米卡利

本刊编辑部:希尔维奥·米卡利(Silvio Micali)是图灵奖(计算机科学)、哥德尔奖(理论计算机科学)和RSA奖(密码学)的获得者,是美国国家科学院、美国国家工程学院、美国艺术与科学学院院士,也是意大利最高学术研究机构“林琴科学院”院士。

希尔维奥·米卡利(Silvio Micali)院士,图灵奖(计算机科学)、哥德尔奖(理论计算机科学)和RSA奖(密码学)的获得者,麻省理工学院教授,Algorand公司创始人。

自1983年以来,希尔维奥·米卡利院士一直在麻省理工学院电子工程和计算机科学系任教,研究领域包括密码学、零知识、伪随机生成、拜占庭协议、安全协议、机制设计和分布式账本。他是概率加密、零知识证明、可验证随机函数等多种密码协议的共同发明人,这些协议是现代密码学的核心构件。

希尔维奥·米卡利院士也是Algorand公司的创始人。Algorand是一个全新的区块链系统平台,根据创新理念研发而成,同时实现真正的去中心化、可扩展性和安全性。

经希尔维奥·米卡利院士本人同意和授权,本刊登载他的近期演讲,以飨读者,全文如下。

一个巨大的机会!

今天,有一个巨大的机会重新启动世界金融系统。数据网络的速度比以往任何时候都要快:一条消息能够以可忽略的成本在不到一秒内传遍全球。然而,资金的流动却一点都没有加快。一个简单的金融交易可能需要几天时间才能完成。这个过程也很昂贵:每年有5万亿美元浪费在各类交易费用上。全世界有22亿人无法获得现代金融服务:他们的交易规模太小,银行无法盈利。

有了正确的技术,我们可以做得更好。

区块链承诺。近几年来,开发商和创新者已经预感到,正确的技术就是区块链;区块链是构建一个更高效、更具包容性的金融体系的关键。简单地说,区块链就是一个公共分类账。它是以区块为单位组织管理的一系列交易,保证了三个基本属性:

◆ 每个人都能读取每一个区块,所以区块成为了共享的知识;

◆ 每个人都可以在将来的区块中编写交易;

◆ 任何人都不能更改区块中的交易或者区块顺序。

因此,既不是让中央机构维护一个隐藏的数据库,就像银行那样,也不是让交易通过秘密数据库层以便清除,我们可以拥有一个可供所有人阅读的单一公共分类账,其中每个人都可以写入数据,但没有人可以改变已经写入的内容。有了这些特性,区块链的应用基本上是不受限制的。实际上,区块链技术可以带来更快、更便宜、更安全、无国界的经济。

明显的三元悖论。到目前为止,区块链在很大程度上仍然是渴望成功的。也许今天区块链抱负性的最好证据就是著名的区块链三元悖论。根据2000年的证据和迄今为止的区块链项目,三元悖论实质上表明,现有的区块链最多可以提供以下三种属性中的两种:安全性、可扩展性、分权。

事实上,在三元悖论中没有好的选择。如果没有分权,我们今天仍然停留在已经存在的金融体系中:排他性和隐秘性。没有安全性,交易区块可能会消失:提供货物或服务的人可能会发现已经收到的这些货物和服务的付款已经消失;债务可能会被抹去;公共分类账可能会被对手篡改以谋取自身利益。如果没有可扩展性,你将只能使用小型网络进行交易并且无法参与全球金融体系。任何用户都不应该考虑在这些基本属性上妥协。

成本、速度和安全。诚然,安全性、可扩展性和分权不是独立的变量,而是相互关联的变量。它们共同影响对个人和机构用户都很重要的标准:即速度、安全性和成本。

不快速的区块链是无法扩展的。但通过增加成本来保证速度并不是一个解决方案:一个运营成本过高的区块链无法扩展。事实上,如果成本由每个人承担,那么几乎没有人会加入区块链。如果成本仅限于几个实体,那么系统将是集中的。任何一个集中式系统都是不安全的,因为更少的目标比数百万个目标更容易受到攻击。

好消息。幸运的是,三元悖论仅仅是对过去的描述,同时也是对三个属性难以同时实现的建议。Algorand很高兴建立了一个能够提供所有三种属性的区块链。

区块链的挑战。区块链中有两种不同的需求。第一个是防止区块链被篡改。这一需求

已经通过密码学中最简单古老的原语之一,即单向散列函数来解决。本质上,最新区块的散列值作为一部分被包含在下一个区块中。所有区块链都采用这种方法,因此在这方面都是平等的。

第二个需求是生成新区块:如何选择要附加到链上的新区块。这是真正的挑战,不同的区块链有不同的方法。

新的区块应该包含一组到目前为止尚未出现在区块链中的有效交易。问题是,在任何时间点,两个用户可能已经看到相同的区块序列,但可能看到不同的新交易。这种情况是因为,在分布式分类账中,每个交易不是通过网络即时传播的。通常,它从每个用户发送到其他几个用户,然后这些用户再将其发送到其他用户,直到交易到达所有用户。因此,在每个时间点,不同用户看到的新的有效交易集可能不同,即使它们具有显著的重叠。

总之,用户U可能认为新区块应该是BlockU,用户V则认为它应该是BlockV。那么,谁设想的区块应该附加到链上?

流行的现有方法及其致命缺陷。选择下一个区块的方法多种多样:特别是,工作证明(PoW)、委托权益证明(DPoS)和担保权益证明(BPoS)。然而,所有这些方法都有一个致命缺陷:整体经济受小部分经济的支配。

这一缺陷是致命的,因为它涉及安全性和分权。让整体经济的命运任由一小部分经济的摆布是一个定时炸弹。可以肯定的是,如果这些成员行为不端,他们会使经济中的所有资产贬值,包括他们自己的资产。但是,如果他们自己的资产只占整体经济的一小部分,他们可能很容易弥补自身的损失,增加一些利润,并对他人造成巨大的损害。一个经济体的小子集不应该能够控制整个经济。

让我解释一下这个缺陷是如何在以前的方法中产生的。

工作证明(PoW)。第一种方法是工作证明,被中本聪用于构建Bitcoin并由许多其他区块链继承。在该方法中,在很高的层次上,用户竞相解决一个非常复杂的密码难题。第一个解决谜题的人有权将下一个区块附加到链上。PoW有几个缺陷:

第一个缺陷:PoW不可扩展。PoW的过程很慢。比特币的密码难题被设置的难度较大,以保证每隔10分钟才找到一个解决方案,无论有多少矿工试图解决该难题。我们能够理解昂贵且快速。但是昂贵且缓慢却难以理解。世界很大,每10分钟仅有一笔交易肯定是不够的。

第二个缺陷:PoW导致事实上的集中化。PoW引起了极大的权力集中。这种集中化是PoW既昂贵又浪费的后果。矿工,即试图解决密码难题的用户,所执行的计算量令人惊叹。今天,采矿利用的是专用硬件,耗电量巨大。一个矿工赢得比赛并产生了新的区块,而其他所有人的努力都白费了。如果没有比特币目前提供的补贴,在比特币区块链上发布一笔交易的成本约为20美元。如果你想使用区块链进行日常交易,比如购买一块比萨饼,或者如果你想使用它为当前没有获得金融系统服务的那22亿人提供金融服务,那么这条路就走不通了。

如果普通用户试图用笔记本电脑解决密码难题,他肯定会赔钱的。无论输赢,他都必须为笔记本电脑运算所需电力支付费用。这个电量可能不大,但他获胜的概率很小,他会赔钱是预料之中的事。

只有已经花费了必要的资本支出来购买专业采矿设备的专业矿工才有希望赚取一点利润。因此,只有他们参与区块生成。此外,矿工们会在矿池中联合起来。

如今,比特币的区块链仅由三个矿池控制,以太坊仅由两个矿池控制。如果他们自主作恶或受贿作恶,这些矿池可以重写数据库:他们可以删除区块或更改区块顺序。PoW已经把分散的系统变成了一个极为集中的系统。

第三个缺陷:PoW是不安全的。正如我们所说,任何集中的区块链,无论是设计上还是事实上,都是不安全的。但PoW还有其他漏洞,并且它特别容易受到网络攻击。区块链最终是一种通信协议,任何此类协议都在底层通信网络上执行。因此,对手可以攻击协议(例如,通过发送不同于规定的消息)或通信网络本身(例如,通过干扰路由器、电缆等)。

由于目前分析区块链安全性的方法存在缺陷,因此PoW的不安全性可能被低估了。这种分析通常只关注协议攻击而忽略了网络攻击,特别是在PoW的环境中,这些攻击可能是致命的。例如,在一个PoW区块链中,一个能够将通信网络分区长达一个或两个小时的敌手可以双重花费而不受惩罚。在成功的分区攻击中,敌手阻止属于用户组A的用户发送的消息到达另一用户组B中的用户,反之亦然。网络分区并没有引起太多的注意,因为它被认为过于昂贵而不实用。但是,一旦收益足够高,网络攻击的成本可能是合理的。一个真正的无国界经济体的价值可能高达数万亿美元。如果对手想非法获得数十亿美元,他可能愿意“投资”数百万美元。

第四个缺陷:分叉。PoW的另一个缺陷是不可避免地存在分叉。每当两个或多个用户几乎同时(互相只差几秒钟)解决密码难题时,区块链就会分叉,因为用户现在可能看到下一个块的多个候选者。分叉可能会持续存在一段时间,它的所有分支甚至可以通过添加新的区块来增长。但最终,除了一条主链以外的其他所有链条都会失去有效性,这些链条里的所有区块都会消失。

分叉是不确定性和延迟的不受欢迎的结果。如果支付给你的款项出现在添加到链上的最新区块中,你不能认为自己已收到款项并发货。这是因为某些分支可能会战胜当前主链,而你的交易所在的区块可能最终会变成一个无效分支,从而消失。在考虑你自身的支付之前,你需要等待一系列的区块被添加到你的区块之后,以便尽可能减少软分叉出现并且包含你的支付交易的区块最终消失的可能性。

那么你应该等多久呢?有些人建议在你的区块之后等待添加六个区块,以确保你的区块仍在链上。其他人建议,如果支付给你的款项是可观的,等待时间甚至需要更长。因此,并非等上十分钟就可以对交易的最终结果有合理的信心,实际上你得等上几个小时。

一些人建议,为了加快这个过程,可以将密码难题设置得更容易,例如,使每1分钟,而不是每10分钟,找到一个解决方案成为可能。然而,这样做会使得在两个解几乎同时出现的概率大大增加。系统可以处理偶尔出现的软分叉,但是无法处理非常频繁的分叉。

费用、缓慢和不确定性确实是PoW方法的主要缺陷,但与其致命缺陷相比,这些缺陷显得苍白无力。

PoW中的致命缺陷。回想一下已经讨论过的致命缺陷:整体经济受小部分经济的支配。在PoW中,这一小部分经济是由矿工拥有的。由于矿工在PoW区块链中只拥有一小部分资金,因此区块链并不安全。

委托权益证明(DPoS)。另一种方法是委托权益证明(DPoS)。这是一个非常简单的想法。社区授权一些特殊用户和代表在一段时间内去选择下一个要上链的区块。(例如,在EOS中,代表的数量是21位。)

因此,DPOS从一开始就是集中化的。选出的代表一开始就是诚实的是有希望的。然而,依赖代表们长期保持诚实是有风险的。

我们再一次看到,整体经济受一小部分经济的支配。事实上,在一个DPOS区块链中,代表可能拥有系统中总资金的一小部分,但是,当且仅当大多数代表是诚实的,整个区块链才是安全的。

其他的安全问题。即使假设有一个坚固的保证,所有代表将永远保持诚实,他们也很容易受到攻击。特别是,拒绝服务(DoS)攻击可能会使它们失效。在这样的攻击中,一个敌手用无数的垃圾信息轰炸他选择的任一用户,导致该用户的缓冲区溢出。如果一个代表被如此攻击,他将无法执行他的工作,即将新的有效交易打包到下一个区块中。区块链将逐渐停止。

DoS攻击非常便宜,可以立即对21人甚至1000人发起攻击。既然代表是已知的,即使他们只掌权一天、一小时或一分钟,一个有决心的敌手可以通过DoS攻击来击溃所有代表。

担保权益证明(BPoS)。担保POS允许20个,200个,甚至尽可能多的用户,把一些钱,一个担保放在一个他再也不触碰的地方,如桌子上。这些人是代表我们所有人选择下一个块的用户。如果他们行为不端,他们的钱就会被没收。

这种方法有效吗?让我问一个更简单的问题:你的可支配收入中,有多少可以用来担保?答案是很少。因此,BPOS不仅使其成为可能,而且实际上也使有钱的大盗通过将不成比例的资金放在桌子上来更容易地控制区块链。

但那又怎样?如果他们行为不端,就会损失他们的保证金。然而,一个真正去中心化、可扩展和安全的区块链应该能确保数万亿美元的资产。而通过行为不端,一个恶意用户可以赚到几十亿美元。既然如此,你认为他会害怕被没收几百万美元吗?这只是做生意的代价,而且代价很小。

再一次,在BPOS中,我们有着同样致命的缺陷:整体经济受一小部分经济的支配。事实上,在一个BPOS上,这一小部分经济由“放在桌上的钱”(的拥有者)组成。

总之,以前的方法有几个缺陷。我们需要更好的设计。

Algorand的逻辑和纯粹权益证明(PPoS)。Algorand的逻辑很简单:它将整体经济的安全与大多数经济体的诚实联系在一起,使一小部分经济体不可能控制整个经济体的命运。

Algorand基于一个新的权益证明:纯粹PoS(PPoS)。本质上,PPoS不会因为害怕罚款而试图让用户保持诚实。相反,它使得利用少量的钱作弊变得不可能,而利用大量的钱作弊则是愚蠢的。

在Algorand,没有钱被质押。所有的钱总是在它应该在的地方:在你的钱包里,在你的指尖准备花费,或者在Algorand区块链提供给你的各种金融工具里。当你考虑到系统中的所有资金时,不管它在哪里,当大部分资金都在诚实者的手中时,系统就是安全的。

正如我们所说的,一小部分钱的拥有者不可能损害整个系统,而对于大多数钱的拥有者,试图作弊从而使自己的财产贬值是愚蠢的。

例如,在PoW或BPOS中,少数用户可以阻止其他用户进行交易。在Algorand,只有拥有大部分资金的人才能阻止其他用户进行交易。但如果他们这样做,货币的声誉将受到极大损害,货币将不再被普遍接受,其购买力也将大打折扣。对拥有大部分资金的人来说,这不是一个好结果。

实现PPoS。现在让我们来看看Algorand是如何使用PPoS来选择下一个区块的。还记得三元悖论吗?我们希望区块生成可以同时具有可扩展性、安全性和分权。

在很高的层次上,在Algorand中,一个新的区块是分两个阶段构造的。在第一阶段中,随机选择单个令牌,其所有者是提出下一个区块的用户。在第二阶段,在系统中当前的所有令牌中选择1000个令牌。这1000个令牌的所有者被选为第二阶段“委员会”的一部分,该委员会负责批准第一个用户提出的块。委员会的某些成员可以被选中两次或更多,一般是k次,在这种情况下,该成员将在委员会中拥有k票批准下一个区块。

为什么第二阶段是必要的?在任何一个社会,区块链也不例外,总会有一小部分不良行为者被发现;比如说1%,也可能是2%。如果一个人不幸地生活在一个非常危险的社会,其中,10%可能是不良行为者。甚至可能是20%!但是,在任何社会中,不良行为者都不会占多数;否则,就不会存在一个社会。只要社会的大多数成员遵守规定的规则,社会就存在。

假设Algorand的代币中有10%属于不诚实的人。然后,每十次中就有一次,在阶段1中被选中来提出区块的用户可能是不良行为者。因此,他可能会告诉一些用户该块是X,而告诉其他用户该块是Y等等,从而产生关于什么是主链的分歧。

第二阶段消除了这个问题。事实上,如果你在不诚实一方的手中最多有10%的代币的情况下随机选择1000个代币,那么所选硬币中的大多数属于不良行为者的概率,也就是说,委员会大多数选票由不良行为者投下的概率很低,可以忽略不计。

假设这一轮,你没有被选中提出一个区块。你也没有被选为委员会的一员来参与批准所提议的区块。但是你看到一个给定的区块B已经被批准,例如,委员会700票通过。那么,你知道B确实会是下一个区块。

关键问题。在这种高层次的描述中,自然会出现几个问题。让我们从最明显的一个开始:谁随机选择委员会?假设我告诉你是由我来操作,你可能会说“这是有史以来最集中的系统,你就是它的中心!”假设我告诉你,所有用户都会参与选择讨论,直到他们就1000名委员会成员达成一致意见。那么你可能会告诉我,人性就是这样,一辈子都不足以选出我们所需要的1000名委员会成员。

Algorand采取了一种非传统的做法:委员会成员自行选择。你可能会想“什么?那是个可怕的主意!因为如果我是一个不良行为者,我会一致选择自己成为这个委员会的成员,周而复始。”但并非那么快。

要加入这个委员会,你的一枚硬币必须赢得一个你在自己的电脑中以隔离的方式独立运行(即,不与任何人交谈)的单独的,密码公平的抽奖。由于抽奖是密码公平的,你无法改变被选中的机率(即使是一个拥有巨大计算资源的国家也无法提高被选中的概率)。

例如,为了从10,000,000,000个令牌中选择1,000个随机令牌,每个令牌被选中的概率为1,000 / 10,000,000,000,即以1000万分之一的概率选择。

因此,一旦用户看到一个区块被提出,她就会问自己:我能被选中成为负责批准该区块的委员会的成员吗?我有多少票?

为了回答这些问题,她在笔记本电脑上对自己拥有的每一个代币进行加密抽奖。(如果一个用户有n个代币,附加技术基本上允许她运行1个抽奖,而不是n个单独的抽奖!)

一旦用户运行了她的抽奖,就会发生以下两种情况之一:1)她的任何代币都无法赢得抽奖,在这种情况下,她对区块的任何看法都将被忽略;2)有k>1的代币赢得彩票,在这种情况下,她获得了中奖彩票,即每个人都可以轻松验证她在委员会中拥有k票的简短证明。在后一种情况下,她通过网络传播(i)证明她拥有k票的中奖彩票,以及(ii)对区块的看法。

解决三元悖论。我要说的是,这种粗略的方法,最终!达成了同时实现可扩展性、安全性和分权。

可扩展性。用户运行自己的抽奖需要多长时间?无论她有多少令牌,大约有1微秒。这确实是十分快速的。(此外,所有的抽奖都是彼此独立运行的,因此用户无需等待其他用户完成其抽奖的运行。)

一旦选定,每个成员都将向网络传播一条简短的即时计算的消息。因此,无论系统中有多少用户,需要传播的最大消息数是1000条短消息。这是可伸缩的吗?是的!

安全性。现在我们来谈谈安全性。假设我是一个非常强大的对手,能够在任何时候极其迅速地破坏用户。显然,我很想破坏委员会的成员,但是我有一个问题:我不知道他们是谁。

之所以如此,是因为委员会成员是通过秘密运行的,密码学公平的个人抽奖挑选出来的。因此,只有当这些成员通过网络广播各自的中奖彩票和对当前区块的意见时,我才能知道谁是委员会成员。只有那时,我才能了解委员会的成员是谁。由于我的超级权力,我可以立即破坏整个委员会。但是那又怎样呢?此时破坏它们为时已晚。无论委员会成员怎么说,他们已经说过了,他们的中奖彩票和对该区块的上或下的意见(up-ordown)正在整个网络中传播。我没有能力将他们的信息放回瓶中,就像政府有权利把维基解密病毒传播的信息放回瓶中一样。

换言之,algorand方法是安全的,因为在这之前,对手不知道该破坏谁,而当他破坏的时候,这已经无用了。

与此形成对比的是,有一个固定的1000人的委员会。如前所述,即使委员会掌权1分钟,它也很容易受到拒绝服务攻击。如果委员会掌权的时间更长,比如说一周,那么这些成员甚至可能通过贿赂等传统手段在物质世界中腐败。然而,在Algorand的案例中,人们不知道对谁发起DoS攻击,一旦委员会发言,DoS攻击就毫无用处。

分权。最后,我们讨论一下分权。有几个用户负责选择下一个区块吗?不,没有。也没有一个固定的1000人委员会负责批准这个区块。某一次,一个委员会被随机(秘密)地挑选出来。下一次,将会随机(秘密)选出一个不同的委员会。每个人都有机会参与一个新区块的建设。

分权Algorand的非分叉链。Algorand技术的另一个优势是它的链永远不会分叉。之所以如此,是因为只有一个区块可以具有所需的委员会投票的门限值。因此,在Algorand,所有交易都是最终的。一旦出现一个区块,您就可以相信它永远是链的一部分。并且,如果新区块包含对于你的一项支付交易,则你可以认为自己已经收到付款并立即发送货物。

金融界有自己的风险,没有必要再为“区块消失”的不确定性增加负担。顺便说一句,当我说Algorand的链永远不会分叉时,我有些撒谎。确实,在Algorand中可能会出现分叉,但它们非常罕见。根据设计,在Algorand中分叉的概率为10-18。这种可能性似乎是一个奇怪的选择,但实际上有一个自然的解释。物理学家告诉我们,1018正好是从大爆炸到现在的秒数。换句话说,如果您每秒产生一个块,则可能会看到一个软分叉,但您必须等待整个宇宙的生命周期才能看到它。■

猜你喜欢

抽奖区块委员会
《红楼梦》的数字化述评——兼及区块链的启示
跟踪导练(五)(2)
美国国会参众两院有多少委员会(答读者问)
一场区块链引发的全民狂欢
区块链助力企业创新
区块链投机者
大抽奖
抽奖
幸运大抽奖
[指导委员会]