2019年03月15日,密码极客非常荣幸地邀请到了一位神秘的Algorand创始团队成员——首席科学家陈婧博士,来社群与大家一起畅聊了有关Algorand的进展和重要技术优点和特点,这一次活动可谓是一场知识与专业之间的碰撞,获得了业内区块链技术爱好者的广泛好评。全网超过10万人参与了此次线上分享,在本次活动之后,密码极客社群成员可谓是收获满满。部分密码极客社群成员因为时间原因错过了这次精彩的线上分享,因此密码极客特意对这次演讲进行了整理。分享嘉宾介绍:
陈婧,Algorand首席科学家,Algorand理论白皮书联合作者。清华大学计算机科学学士、硕士,麻省理工学院计算机科学博士,普林斯顿高等研究院博士后,2016年获得美国自然科学基金早期职业发展奖。曾任纽约州立大学石溪分校计算机系助理教授、经济系兼职助理教授,主要研究领域是分布式账本、博弈论、机制设计和算法。本次分享的主题:
1,区块链领域的现状2,Algorand主体的共识协议突破口,最核心的技术优势和技术特点3,Algorand的技术发展,ALGORAND2.0以下是陈婧博士的分享全文。
Algorand是一个跟现在很多的Project不太一样的区块链项目,首先,我们最大的特点是我们的技术是通过基于FirstPrinciple,用非常严格的数学方式,证明了它的可行性。而技术系统方面的可行性也通过原型验证已经实现了。另外,我们的Protocol在最初设计的时候就已经考虑到了长久的发展和进化,因为任何一个区块链设计在最初的时候是没有办法把将来所有可能的情况都预想清楚的,所以就应该在最初设计的时候给将来的进化留出足够的空间和可能性,这也是我们非常在意的。区块链领域的现状首先,Algorand的出发点是什么?我觉得应该是区块链领域目前一个公开的秘密,也就是在区块链领域,我们看到的大家的愿景和期望,跟目前区块链可以提供的技术中间还是有很大的距离。我们可以听到很多激动人心的前景和想法,但是这些想法在实现的时候,可能会遇到各种各样的可扩展性、安全性等方面的各种各样的问题。特别是,比如说之前有提到过的所谓的不可能三角,也就是很多人认为在区块链领域去中心化跟可拓展性、安全性,三者是不能兼得的,最多只能够三者取其二。可是这样的一个想法在我们看来是不可以接受的,因为这三者对于很多区块链方面的应用都是很重要的,特别是在一个公链的方面,既要有大规模的分布式用户群,需要大家容易访问,也需要给用户提供很高的安全性。不过好的一点是,Algorand已经同时实现了这三个方面,也就是说我们并不觉得它们是不兼容的。说到Algorand,我们首先说它是一个分布式的公共账本,我们先说一下对于公共账本的一些比较基本的要求:首先作为一个真正的去中心化的公共账本,它需要让所有人都可以访问,它上面的信息应是对于所有的用户都能够直接读取。第二,它可以被所有人去修改,也就是说不管是什么样的参与者,他都是有可能参与到这个系统中来,这个系统最后的共识会全部保留在这个区块上面。第三个方面的要求是,其安全性是有很高的保证,也就是说区块上面的数据不可以被任意篡改,数据的顺序、数据的内容没有模糊性。但是,如果大家只是在意这三点的话,只是想达到可读可写、不可修改的话,其实一个中心化的数据库系统也是可以这样实现的,但是为什么中心化的数据库系统现在对于很多人来说并不是一个很满意的解决方案?那是因为中心化的管理通常会变成整个系统的性能或者安全性的瓶颈,比如说可以被攻击,可以被拥塞,所有的权限都要由系统的中心管理员来生成,这样也就留下了被各种方式来影响的空间。那么一个去中心化的公共账本,它所要求的第四点,即是没有中心化的管理方式。它的共识的生成,数据的修改,区块的生成等等各种Transaction都是由区块链上所有的用户来共同完成的。关于分布式账本的好处,相信大家已经讨论的很多了,我在这里只是简单的列举一下,比如说可以做公证,可以做数据的存储,可以去除数据交易的不确定性,也可以作为一个去中心化的可信的第三方,可以在分布式的情况下,比如签署合同,达成协议,支付等等。大家将无需见面,无需任何信任关系就可以达成比较复杂的交易。区块链发展到现在,很多人都有一个想法,认为这是一个非常好的底层架构。在这个架构上面,我们有建立无数的应用场景,非常方便的应用的可能。但是最关键的问题是,我们怎么来实现这样一个底层架构?目前已经看到了很多已有的方法,比如说像工作量证明,比如说权益证明里面的权益托管证明、权益抵押证明等等。先说说工作量证明吧,虽然不是比特币最初提出来的,但是比特币把工作量证明应用提高到一个从来没有过的程度和高度,它的基本假设就是说在这个系统里面的计算能力是掌握在大多数人手里的。工作量证明虽然在Bitcoin方面有很好的应用,但是也已经反映出来了一些问题,比如说它有非常高的cost。另外,这种非常高的代价,以及越来越少的挖矿收益之间的平衡,导致了计算力逐渐的向不同的矿池的集中。同时,这也带来了一些可拓展性的问题,因为计算力是在不断的以很快的速度增加的,为了继续保证系统的安全性就需要不断提高挖矿的难度,进入一种恶性循环。而同时这种不断的分叉、不断的选择最长链的方式,也给系统里面的交易的最终性带来一个问题,也就是说大家必须要等一个交易,它不光要出现在链上,而且还要在链上有足够的时间才能够最终确认。这对于大额的交易尤其重要,因为可能会存在交易回滚等问题。当然另外一个大家比较有切身感受的,在工作量证明里面可能会带来比较长的交易的延迟,比如说要等10分钟出一个区块的话,假如需要六个区块才能够确认一笔交易的话,那么就要等上一个多小时以上,那么大额的交易可能需要等更长的时间。所以,回顾比特币和工作量证明的时候,我们应该说工作量证明是整个区块链领域的第一个非常好的想法。可以说,比特币让所有人,包括我自己和我们团队的很多人在内都重新认识了怎样在一个大规模的分布系统里面达成共识。它给了所有人很多的启发,但是也同时需要认识到工作量证明并不是一个在大规模的快速的去中心化系统里面,大家真正需要的。我们必须要找到另外一个更scalable的一些解决方式。那么这个时候很多人的目光就转向了POS,权益证明。权益证明方面,我们现在经常看到的基本上有两种,一种叫做托管权益证明(DelegatedProofofStake,DPOS),就是把某些投票或者是生成区块的权益委托给某些用户来进行。另外一种是抵押权益证明(BoundedProofofStake,BPOS)。用户需要通过押币的方式,在系统中才有投票权,所谓的抵押的stake将在很长时间不能使用。而且如果这个用户在系统中有作弊行为的话,这些stake也会被系统没收。应该说,这样的解决方式并不是一个真正的分布式的方式。而Algorand认为在我们的系统里面实现的POS,是一种非常纯粹的权益证明。为什么这么说呢?首先我们的系统不会没收用户的币,也不会对用户进行所谓的惩罚。我们会通过系统里面对安全机制的设置,来保证哪怕是恶意用户,也无法在系统里面造成破坏,而不是通过惩罚跟没收stake的方式来达到这一点。在我们的系统中,不需要大家押币或者是把自己的stake锁定在系统里,你的stake永远是你自己的可以随时使用。这个事情的基本假设也很简单,就像POW里面认为它挖矿的计算量是在诚实大多数人手里一样。而POS基本的假设就是这个系统里面的大多数的stake都是掌握在诚实的用户手里。这里有非常关键的一点,就是说在这个系统里面每一个token都是有同样的决策权,都是等价的。不管这个token是在哪个用户手里,也不管这个用户是否还有其它的任何账户,或者在其他账户里面有任何的stake。所以我们设计的初衷是始终使它是一个真正的分布式和去中心化的系统。而用技术的方式来解决,要实现这一点,中间要面对很多很多的问题。Algorand主体的共识协议突破口,最核心的技术优势和技术特点刚才介绍了一下区块链的大体情况,虽然相信大家都已经比较熟系了,但是简单的介绍,是为了使所有人都能有一个大体的了解,也为接下来的技术方面的介绍打一个背景基础。我们接下来将进入比较技术方面的讨论,就是Algorand主体的共识协议最核心的一些技术优势和技术特点。主要来说,我会给大家介绍三个方面,一个是我们的拜占庭协议,再一个是我们选择用户参与共识协议的时候所用到的,我们叫做隐秘的自选择过程,第三是我们共识协议非常独特的一个特点,我们叫做用户的可代替性。而这也是为什么我们的系统可以允许一个攻击者去动态的随时的攻击用户,我们仍然可以抵抗这种攻击的一个原因。在介绍完这三点之后,我会给大家介绍一下我们新的算法,也就是Algorand2.0,给大家讲一下它在抗网络分割攻击方面的一些优势和技术特点。1)拜占庭协议拜占庭协议其实在计算机科学方面是一个非常经典的概念了,在七八十年代的时候就已经有很多这方面的研究。当然传统的拜占庭协议的研究是在一个相对封闭的环境里面,它的计算机数量,所有用户的身份都是提前知道的,所以那个时候的拜占庭协议的工作方式和工作环境是比较简单的。在把它扩展到区块链之前,我们可以先简单的介绍一下拜占庭协议所能达到的两个最基本的特性。也就是因为这两个特性,使得区块链上能够保证我们的共识协议没有模糊性。首先,拜占庭协议可以达到的性质当然就是同一性,也就是说很多用户通过拜占庭协议进行交互以后,不管他们一开始的时候自己对于这个系统状态的认识是怎么样的,大家可以认为每个人在最初的时候都会看到一些发给自己的交易,然后每个人都会根据自己收到的这些交易组合出一个区块。可以认为每个人看到的系统状态是这个区块本身的值,或者是这个区块的哈希值。而通过在拜占庭协议里面的交流完成之后,所有的诚实的用户,都会最终输出同一个系统状态,也就是同一个区块的哈希值。那么就是一个区块链需要达到的结果,在基于上一个区块的情况下,下一个区块的内容是被所有人一致接受,是没有任何疑义的。而拜占庭协议的另外一个很有意思的特性,可能大家了解的不是很多,而这个特性恰恰是后面为什么我们可以很快达成共识的一个特点。也就是拜占庭协议可以达成的一致性。所谓一致性意思就是说,它在系统中交互达成共识的过程当中,如果系统是处于一种比较良好的状态,那么它不会浪费系统里面的交互,来做一些不必要的信息传递。换句话,也就是说如果这个系统里面所有的好的用户,大家在最开始的时候,大家看到的交易或者是大家自己组成的区块,已经是达成一个一致的状态了,那么拜占庭协议不会强迫大家去同意另外一个不一样的东西。这也就是为什么使用拜占庭协议的系统,在网络状况比较良好、在通常的情况下,它的速度是会比较快的。为什么我们不能够直接用已有的拜占庭协议,直接拿来在区块链上使用?所有人参与到一个拜占庭系统里面,它的输出就是接下来一个区块的内容,这正好就是一个区块链所要达到的,那么为什么不能够直接这样做?有两个最主要的原因,第一个原因,已有的拜占庭协议总的还是比较慢的,虽然我们在理论上可以说这个协议它是一个多项式时间的,比如运行时间和总的参与人数的平方或立方成正比,理论上的有效性是没有问题的,但是把一个所谓的多项式时间的拜占庭协议,应用到实际上这个是不可行的,因为哪怕是一个平方或立方时间的一个协议,如果要把它运行在一个有几百万用户的系统里面,大家可以自己想象,这个通讯量和计算量就是几百万的平方或立方,需要的消耗是系统里面没有办法承受的。而另一个很关键的原因,为什么拜占庭协议不能直接在区块链使用,因为拜占庭协议最初的设计是在一个比较封闭、比较良好的网络环境下,也就是这里面所有用户数量和身份都是已经提前确定的,也是所有人都知道的。而这两点在一个开放的互联网上都是不可能的。因为每一个人在互联网上都可以轻易的生成很多个身份,也没有人知道在网上的两个身份会不会是被同一个人来控制,大家也不知道这里面到底有多少用户,到底每一个账户,每一个公钥对应的用户都在哪都是谁。这个也就是我们很多人都熟悉的SybilAttack,就是通过生成多种多个身份,而在网上控制很多的权限这样的一种攻击,这种攻击对于原始的拜占庭协议是完全可行的。所以要把拜占庭协议用在区块链上面,就要解决以上两个问题,这也是Algorand共识系统所做到的事情。第一,我们自己设计的新的拜占庭协议协议是一个非常快非常高效的协议,首先来说在协议中的参与者,每一个、每一步只需要发送一个很短的消息就够了,而即便是在很坏的网络环境下,这个协议在期望状态下也只需要几步就可以完成一个共识。应该说这样的协议在理论上已经是非常快的了。但是即便是这样的协议,也不可能把它直接用在一个有比如说1000万用户的这样一个系统里面,为什么?因为1000万个用户,哪怕每个人发一个很短的消息,这个系统里面的网络也已经被完全阻塞掉了。而针对这种大量用户参与的解决方案,相信很多人都可以很容易的想到,既然用户这么多,那么我们就随机的选择一小组用户来参与这个协议就好了。一个最简单的方式就是我们可以公开的选择,这样所有人就都知道到底是谁被选中,而选中的用户就只要在自己之间来通讯就可以了。这样子就可以把拜占庭协议协议限制在一个很小的范围内。这怎么实现呢?其实很简单,比如说对于每一个用户的身份、ID或者是他的公钥,或者是其他的身份信息,做一个hash把它映射到一个比如说256位的一个随机的字符串,然后把这些所有用户的字符串从小到大做一个排序,这个时候就把所有的用户随机的变换了一下。那么如果我们需要这个系统里面有一千个用户来参与拜占庭协议协议,只要取这个随机变换的头一千个用户,就完全可以。这是一个非常高效的方式,也非常透明,也非常容易就可以实现。那么这种方式的问题是什么呢?如果我们公开随机的选举一小组用户的话,为什么是不行的呢?可能很多人已经想到过这个问题了。也就是说,不光好的用户这个时候能很容易知道,谁会负责生成下一个区块,谁会负责生成接下来的十个区块,恶意的用户也很容易发现这一点。而且是可以提前很长时间就发现,那么这个时候一个恶意的组织就可以提前去攻击这些被选中的用户,使这些用户在他们需要参与拜占庭协议协议的时候,没有办法上线,或者是发送错误的信息等等。我们已经看到在目前的区块链领域里面,是存在这样的协议的,这些协议最基本的一些假设是,任何一个恶意的个人或者是组织,如果要攻击一个用户的话,都需要花很长的时间,比如说需要一天的时间来攻击某一个用户,这些是远远长于一个区块生成所需要的时间的。这样的假设在我们看来是完全不能接受的,我们希望Algorand的系统可以抵抗非常强大的网络攻击,或者其它方式的攻击。所以在我们的系统里,我们在设计的时候,想象中的攻击者是可以立刻、任何的时间就可以拿掉任何用户,不管是DDOS或者是其他的方式也好,这些攻击者可以完全控制所有的这种被攻击的用户,不管是它们发送的消息也好,还是在什么时间点发送消息,甚至他们的消息在什么时间会被发送给好的用户,都是可以完全被攻击者控制。我们唯一对攻击者的假设,就是说它不能够破解密码里面最基本的元素,比如说哈希函数,比如说数字签名或者是加密等等,这些也是所有的数字系统所需要的一些基本假设。所以针对这样的一些攻击者,公开的选择参与拜占庭协议的用户就不太现实。Algorand创新的地方在于我们用隐秘的方式让用户自行选择,自己是不是应该参与到拜占庭协议里面,甚至是应该参与到这个拜占庭协议里面的哪一步。2)隐秘的自行选择所谓的隐秘的自行选择,听起来很抽象,我通常想象它的时候,喜欢用一个彩票系统来打比方,也就是说每个用户会生成他自己的彩票,对于一个彩票它是不是中奖,这个是彩票本身已经决定了的。没有中奖的时候,用户是不能够系统,不能够其他人说自己中奖了。而在用户已经中奖的情况下,它可以很容易地告诉大家,只要出示这张彩票就可以了。而这个的另外一点也就是说,当这个用户虽然知道自己中奖了,但是在没有公开的去所谓的兑奖之前,一个攻击者也完全不知道到底谁会中奖,也完全不知道到底该攻击谁。所以如果有这样的一个彩票系统的话,我们就可以使用户通过这种抽奖的方式,隐秘的确定谁会参与到下面的系统,谁会参与到下面的共识,然后他们也可以完全像其他的用户证明说自己确实有这个权限。当然这里面涉及到另外一个问题,我们在现实当中看到的彩票系统完全是中心化的,它是由某个发行方把所有的彩票印出来,然后分发给大家。这种方式就跟我们之前说的去中心化的系统是相违背了。而我们需要的其实是一个分布式的彩票生成系统,每一个用户都可以用他自己的私钥来生成他自己的彩票,达到既不能够作弊也同时可以证明自己中奖这样的结果。如果刚开始想这个问题的话,这两点听起来可能是有矛盾的,为什么?因为如果一个用户可以生成他自己的彩票的话,那么他可以秘密地生成很多。他可以生成一张,然后发现自己没有中奖,然后再生成另一张,可以一直生成下去,直到生成了一张中奖了的彩票。那么用这张彩票来告诉大家,他应该参与到这个系统中。这样的话,一个恶意的用户就完全可以自己生成很多张彩票,然后只把那张中奖的拿给大家看就可以了。这样的系统当然是完全没有办法运行的,因为那个时候恶意的用户就会永远告诉大家说我已经中奖了,然后我应该参与到这个系统中。这就是我们在做这种隐秘的自选择的时候一个很重要的点,也就是说在我们系统里面,每个用户只能生成唯一确定的一张彩票,即便是在彩票生成的阶段,它也是没有办法作弊的。这个就需要用到一些密码方面的知识,这个密码的结构叫做VRF,可验证随机函数。我们虽然不可能在今天的分享里面把一个VRF从头到尾给大家描述一遍,这个需要花太多的时间,但是可以给大家讲一讲,VRF最基本的结构是什么。它的基本结构,如果你想通了的话,其实是非常简单的。一个VRF你可以认为它里面有两个基本的构成结构,一个是数字签名,一个是哈希函数。当一个用户要生成自己的彩票的时候,他就用自己的密钥去签署比如说当前的这种系统状态,就会生成一个自己的签名,当然这个签名是只有他自己可以生成的,而其他人完全不知道是什么,他如果要给大家证明这个签名,只要用他的公钥,所有人都可以验证说这个签名是正确的。而有了这个签名之后,再生成一个随机的彩票就很容易了,你只要把这个签名作为一个哈希函数的输入,比如说,可以输出一个256位的随机数,那么这个随机数就成为这个用户的彩票的值。如果我们要在一个100万用户的系统里面选出一千个用户的话,那么每个人被选中的概率应该是1‰,这个时候你就可以定义说当这个哈希函数的输出它是小于0.001的时候,那么这个用户就被选中了,而如果大于的话,那么他就没有被选中。哈希函数的输出它是一个字符串,通常认为它是个整数,但是你可以在前面加一个小数点,可以很容易的把它作为一个实数来解释。所以看起来这是一个很简单的操作,只要让用户签下名,然后把这个签名在hash一下,那么最后的结果就可以是一个随机数了。因为一个攻击者不可能伪造用户的签名,所以他也就没有办法预测说某一个用户他最终通过哈奇函数输出的值会是什么,他是否被选中等等。但是在我刚才的这个描述里面,其实是隐藏了一个不太容易被发现的问题,可能对密码对VRF或者是数字签名比较熟悉的人已经认识到了,什么问题呢?也就是很多的数字签名系统,它是有随机数在里面的。通常需要生成一个随机的字符串,然后这个字符串会作为数字签名协议输入的一部分,然后再通过它来生成一个签名。也就是说签名过程是随机的,对于同样一个系统状态,用不同的随机数作为辅助输入的话,可以生成不同的签名,而这些签名都是有效的。这就回到了我们刚才说的关于彩票印刷的问题,这就等于给了一个用户可以自己印刷无数张彩票的可能。因为它可以完全用一个有随机数的签名方式,可以不停地换不同的随机数,直到换了一个随机数,它生成的签名在经过hash之后,拿到一个很小的哈希值,像刚才说的小于0.001,刚才已经提到了这种允许用户自己随意印刷无数张彩票的这种方式当然是不可以接受的。那么这个里面就要提到另外一个密码方面非常好的一个创新,也就是uniquesignature,唯一性签名。所谓的唯一性签名,顾名思义很好理解。也就是说对于同一个需要被签名的文档也好,系统状态也好,同一个用户用他自己的密钥,永远只能生成唯一确定的一个签名。这个时候这个用户就没有办法作弊了,因为系统状态是确定的,他自己的公钥,秘钥已经是提前生成的,他所能做的只能把这两个东西交给签名函数,而签名函数会输出唯一签名值,这个唯一签名值会对应唯一的一个hash输出,这个唯一hash输出也就是他唯一在这个系统可能被接受的值。所以一个VRF它的两个基本的结构其实很简单,一个是唯一性签名,再一个是哈希函数,基本上可以看到很多VRF的构造都是可以被分解成类似的这两个部分的。3)用户的可替换性。这就是隐秘的自选择方面一些比较有意思的技术,那么即便是用了隐秘的自选择方式之后,还有另外一个问题,也就是说当一个用户被选中之后,他在没有发出任何一个拜占庭协议的信息、或者是投票之前,一个恶意的用户当然是不知道这个人是谁,也不知道这个人是不是被选中了的。但是只要这个用户在系统里面发送了一个消息,他需要把这个签名告诉大家,那么这个时候恶意用户就会马上知道谁是被选中的人,谁是下一步接着负责的人,那么这个时候恶意的用户还可以在接下来的步骤里面马上把这些人屏蔽掉、攻击掉等等。我们就仍然回到了之前的状态,也就是说所有参与人都是恶意的,那么要解决这个问题,就要提到Algorand另外一个非常有意思的创新,也就是用户的可替换性。就是Algorand的共识协议里面,它有几步,比如说第一步第二步第三步等等,但是每一步跟每一步之间是完全不需要存储内部状态的。下一步的内容,完全可以通过当前公开的信息来决定出来。所以完全可以在第一步的时候选出一组用户让他们发了第一步的信息,第二步的时候是完全不同的另外一组用户被选中,那么他们也不需要知道第一组用户自己有什么样的内部结构,它完全可以通过网上发出来的公开的消息,然后就可以决定说第二步的信息应该是什么,然后决定发完自己的第二步的信息。以此类推,哪怕第二步的用户在发完信息之后,马上就已经被攻击掉了,协议的第三步又会有一个新的用户群被选出来,而这个用户群仍然根据网上的公开信息,来决定自己的消息是什么。所以攻击者永远都不知道下一步负责的会是什么人,会从哪些人里面被选出。这样也就保证了整个系统的安全性,哪怕这个攻击者可以随时把一个用户给takedown,也不会影响到系统接下来的协议的执行。而这种在每一步都会重新选择用户的方式,也就确保了整个的系统真的是一个去中心化的系统,没有哪个用户会长时间的Incharge,所有的用户,实际上是用户的每一个token,被选中的概率都是一样的。这才是一个真正分布式、真正基于权益证明的系统。所以在Algorand系统里面,它并没有基于工作量证明的方式,也不需要用户去解决什么很难的密码puzzle,它的计算量可以说是很少的,然后它的用户的选择方式也是一个真正的去中心化。而拜占庭协议本身,因为不会产生分歧,也不会产生分叉,所以任何一个交易,只要它进入到了这个区块链上的区块里面,就可以认为它已经是最终确认了的,而不需要等它在这个系统里面有很多的区块在它后面被生成才可以被确认。所以这个系统可以提供很高的可扩展性跟安全性。Algorand的技术发展,Algorand2.0我们接下来稍微地讲解一下Algorand2.0,也就是将要在我们主网里面使用的系统。这个系统除了继承了Algorand最初共识协议的特点以外,比如说仍然是用户可替代的,仍然是通过隐秘的自选择来选择参与拜占庭协议的用户,也仍然是非常高效的一个协议。但除此之外,2.0有一个非常强的性质,这个在目前来说是没有任何一个区块链系统是可以达到的,就是它可以完全抵抗对于网络分割的攻击并且很快的恢复。什么意思?也就是说在一个区块链的共识系统里面,我们通常都要假设一个交易或者是一个区块,它会被传播到全网。因为如果交易不能传播到全网的话,或者这个共识的信息或者是区块不能被传播到全网,那么显然肯定会有至少两部分的用户,他们看到的区块是不一样的,他们看到的交易状态也是不一样的。这就存在有Doublespent,也就是双花的可能。这种网络攻击通常在分析拜占庭协议的时候是不会被考虑的,而我们之所以考虑这一点,是因为要让整个系统变得更加的现实,我们就需要考虑所有的可能,现在有的,还有将来有可能遇到的攻击。分割网络的攻击这个代价确实是很大的。但是如果当Algorand变得很成功的时候,比如说上面资产有很多,整个系统价值很高的时候,可能就会有人愿意花很多投入,比如投入几百万美金,然后把一大部分用户跟另一大部分用户完全的割裂开来,完全控制他们之间的通讯,使得他们没有办法达成一个共识。在这个网络攻击之下,可以说没有任何一个区块链可以仍然保持安全,又可以继续生成区块。因为很简单的一个道理,任何一个系统它需要最终确认区块的时间,比如说是一分钟或者是一小时或者是一天,那么在系统被割裂的情况下,如果这个割裂时间长于一分钟或者是一小时或者一天,那么这个系统就完全没有办法生成一个有效的共识了。但是Algorand2.0的系统协议里面,即便是在这个网络被攻击的情况下,也可以仍然保证这个系统是安全的,不会分叉,也就是说不会产生两个在同一个高度被确认了的区块。而一旦这个系统里面的网络攻击结束了,这个网络恢复了之前的连通状态,那么共识协议就可以很容易地恢复,然后重新产生新的区块。而这两大特性,一个是在网络分割的情况下,也就是说即便在这个网络进入到完全异步状态情况下,攻击者可以完全控制其中消息的传递,任何消息都可能被任意延迟,Algorand2.0的协议也仍然不会产生分叉。另一个,也就是说当网络从这种完全被分割的状态回归到一个好的连通状态的情况下,这个系统可以很容易的Recover,可以接着生成区块。对于这两个性质的实现,是通过一个新的拜占庭协议来实现的,因为时间的关系,这里不可能给大家介绍系统的细节了。这个新的系统现在已经在我们的测试网里面实现,测试网到目前为止是byinvitation,需要大家提交申请,由我们的开发人员通过。已经比较稳定的运行了很长时间,因为是通过申请来加入的,里面的节点数还不多,但是节点的分布非常广,从美国到澳大利亚到亚洲到欧洲等等都会有节点分布,而且也很清晰地验证了整个系统的稳定性和可扩展性。我们很快就会把整个测试网开放给所有人,欢迎大家关注一下。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。