《读懂区块链PoS共识》第十章 PoS项目例子-Dfinity

  • 时间:
  • 浏览:69

  项目介绍

  官网对Dfinity的定义是:Dfinity(Decentralized INFINITY)称作为下一代互联网的超级计算机,旨在创建一个开放性的,去中心化的云服务器,为下一代的软件和服务提供基础架构。

  Dfinity is a Internet Computer——A public decentralized cloud designed to host the next generation of software and services.

  以太坊也称之为是世界性的计算机,Dfinity与之不同的是,在性能和扩容上,要优于以太坊。除此之外,在以太坊巨人身上建立起来的Dfinity,做得更多的仍然是基本架构的重建。Dfinity声称为云3.0,对标的是中心化世界里面的亚马逊云服务商,所以Dfinity更注重于云的基础架构,而以太坊注重于智能合约。本质上,这两者其实并没有太大的区别,也不是说注重底层架构的Dfinity不做智能合约了,更不是说注重智能合约的以太坊不关注底层性能优化,两者虽有不同,但Dfinity和以太坊的目标其实很相似,连Dfinity的首席科学家Dominic Williams都在博客里面说,Dfinity是以太坊的姐妹链,是Pro版本的以太坊,两者兼容,跑在以太坊上的Dapp也可以跑在Dfinity上。

  同为世界性的超级计算机,在宣传上,Dfinity还是会竭力让自己打出差异化:与以太坊合作,取代AWS,谷歌云。Dfinity没有半点要取代以太坊的意思(虽然Dfinity相对以太坊有非常大的性能提升),对外宣传的口号一直都很明确——第三代云服务商。Dfinity要做的就是利用区块链技术,尝试用分散在世界各地的硬件资源,打造一个分布式的世界性的超级计算机,来打破现有阶段由互联网巨人所铸造的中心机房模式。

  Dfinity的起源可以追溯到2014年,实际开始在2015年,直到2017年才开始受到关注。潜伏多年,“逮住”了牛市时以太坊交易拥堵的时机,Dfinity针对以太坊性能瓶颈提出来了优化建议,正正好迎合了众多投资人的目光,结果一炮而红。之前一再推迟的第二轮募资也开始筹划,加上团队不断吸引来新的科技牛人,Dfinity项目立马成为了投资人眼中的香饽饽,这为2018年Presale众筹打下了良好的基础。

  Dfinity团队中有多知名的科学家和数学家参与,其中包括密码学圈子里面著名的BLS签名发明人Ben Lynn(一个满头蓬松爆炸头,像极了爱因斯坦的亚洲面孔)。首席科学家Williams也是非常早期就参与到加密货币圈子来的牛人。据说团队扩大之前,Dfinity的共识是由Williams一个人完成的。

  项目热度起来,加上团队规模扩大,Dfinity在技术上的能力开始显现,提出来的阈值接力技术,BLS签名技术,分层设计等一整套技术,让Dfinity在性能上对以太坊有50倍的提升,这种理论数值的公开,让众人咋舌。而Dfinity作为一个随机数强依赖的项目,使用了VRF(Verified Random Function)算法所产生的随机性不仅让整体网络的安全收益,而且能让Dfinity在Dapp的生态开展上受益。Dfinity对以太坊的优势也比较明显了,想象一下,运行在以太坊上的Dapp如果跑在Dfinity上,那么获得性能上的提升是明显的。

  随机数可作用系统内,如验证人/出块人的挑选,提议出块组的选择,组内验证人的随机排序等等;也可以作用于系统外,如Dapp的一些功能,投注,无记名投票,匿名随机应用等等,这些应用中到处都有随机数的身影。安全,无偏差,不能被预测,不能被操纵的随机数,是区块链里面非常重要的功能。

  Dfinity还是一个对中国网络非常友好的公有链,为了避免中国式"防火墙"的问题,Dfinity融资的一部分钱将用于建立一个特殊的Dfinity的网络,叫龙蒂芙尼(Dragon Dfinity),这个相当于一个私有网络,仅对中国市场开放,而且符合政府合规要求。可见Dfinity算是很懂中国市场,很重视中国国情的公链项目了。

  代币情况

  Dfinity,中文名称蒂芙尼,代币符号是DFN。DFN总量469,213,710DFN,单个DFN的价格为0.25元人民币(数据来源)。2017年开始进行了募资,募资一共进行了2轮,一轮种子(Seed)轮,一轮预售(Presale)轮,预售轮硬顶6.1亿人民币。预售轮可以理解是私募轮,并没有对外公开。除这两轮融资外,DFN并没有对外进行大规模的ICO,为了合规,也是团队的良心表现(因为团队觉得ICO容易使项目腐败,筹码集中)。

  募资额情况

  · 种子轮:2017年2月12~2017年2月13,总募资额0.26亿人民币

  · 私募轮:2018年5月30~2018年8月29,总募资额6.12亿人民币

  种子轮和预售轮完成后,Williams在博客表示,之后不会再有新的募资(本来有3轮,种子轮Preseed,预售轮Seed和众筹轮Main)。所以在主网上线时,DFN的分配基本确定:

  · 9.5% :分配给早期参与者,投资者

  · 24.72% :分配给种子轮投资人

  · 6.85% :分配给策略轮的投资人(分3年归属)

  · 4.75% :分配给预售轮投资人(6.1亿人民币)

  · 1.25% :社区空投

  · 52.93% :基金会保留,资助后续开发

  从官方宣传的口吻来看,Dfinity是一个比较注重去中心化的团队,而且团队认为,钱够用就行了,不需要ICO来筹多余的钱。最重要的一点是,ICO容易让筹码变得集中。PoS网络启动初期,需要有足够分散的筹码进行Stake保护网络,去中心化的分散是十分有必要的,为此,Dfinity还决定向社区空投1.25%的DFN来表达分散筹码的决心,将其给到支持社区的用户。(开发团队说这部分空投总共价值1.7亿人民币,但我并不知道这个价钱怎么计算出来的)。

  Dfinity在以太坊上发起众筹的智能合约地址:https://github.com/dfinity/STIFTUNG-DFN-donations

  代币作用

  DFN的作用和ETH在以太坊中的作用类似,最主要的作用就是充当燃烧的燃料(Gas)。每当交易发生时,需要使用Dfinity的网络资源来工作,这部分消耗的成本需要使用者来承担,然后给到提供资源的节点,这个使用费用可以理解为燃料。除了交易,云网络Dfinity还会提供存储服务,在上面运行智能合约的开发者和公司,除了缴纳Gas之外,还需要缴纳运行和存储费用。当然,这些费用不会到Dfinity基金会的口袋,而是进入提供计算能力,带宽和硬盘的节点,也就是Dfinity的矿工。

  下面对列举DFN在Dfinity中,4个比较重用的作用:

  · 安装和运行智能合约(充当燃料——Gas的角色)

  · 抵押DFN来成为Dfinity的矿工

  · 抵押DFN来成为Dfinity里面“神经元”(Dfinity链上治理里的角色)

  · 抵押DFN来使用Dfinity里面的私有云服务

  相对于以太坊,2、3、4是PoS共识里面需要的场景。因为以太坊现在还是PoW共识,所以没有抵押出块一说,转Casper FFG后,以太坊也会有第2个场景,而第3和第4位Dfinity里面独有的场景。

  发展路线

  Dfinity没有具体的发展路线图,我从网络中搜寻出一些足迹,拼凑出来Dfinity的发展里程碑,但并非真正意义上的发展路线图。目前来看,开发团队并没有给出未来上线具体的时间点。不过社区里面传播最广的是Dfinity2018年底上主网,但实际上并没有发生,后延期到2019年5月,但Williams在博客里面说得延期到Q2后期了。我对主网上线的准确时间点已经不抱希望,公链90%都有跳票情况发生,特别是主网上线时间,跳票1次都算正常,跳2、3次也司空见惯了。

  

  2014年1月,Pebble项目(BFT共识)

  2015年1月,Dfinity立项(随机种子想法的第一次浮现)

  2016年7月,成立Dfinity Stiftung(一个建立在瑞士的非盈利性基金会)

  2017年2月,种子轮融资

  2017年8月,Dfinity测试网(Copper)

  2017年10月,发布Dfinity白皮书

  2018年6月,预售轮融资

  2019年Q1,Dfinity SDK发布

  2019年Q2,Dfinity MVP发布

  设计哲学

  Dfinity的设计哲学是建立在以太坊之上的,基于对以太坊碰到问题的思考,重新设计的Dfinity具有更好的性能,更大的可扩展性。在以太坊的PoS算法Casper FFG实现之前,Dfinity完全不需要考虑以太坊的PoW的过渡阶段,而是重点考虑在解决以太坊的性能和扩展问题上。

  同时,Dfinity对以太坊兼容,特别在Dapp的运行上。Dfinity的EVM和以太坊的EVM兼容,但明显,同样的Dapp运行在Dfinity上有更大的优势,同时Dfinity宣传自己的技术可以被应用到以太坊中,也希望以太坊通过运用自己的技术来获得提升。

  性能上,通过特有的阈值接力的方案,保证验证人的选举安全,具有无偏差性随机的同时,还能让共识在阈值范围内快速达成共识。共识的最终确定性可以在不需要运行共识算法的验证组快速完成验证,保证交易几乎可以实现立即的生效。

  Dfinity为了加快出块和验证出块的速度,把验证人随机分组,组合组之间接连出块和验证,阈值接力就是通过算法把各组之间验证做上连接,来保证安全。和区块链原理类似,这样接力的验证情况,攻击者很难进行协调攻击。

  另外,阈值是一个数值,比如设置为验证组里验证人的51%,那么400个人的验证组里面,只有201个人签名就可以得到验证(Dfinity使用了BLS算法保证任何201个人签名都是同样值)。

  扩展性上,Dfinity将架构进行分层设计,共识,验证,存储分开设计,来获得更大的扩展性。这里引用一段话:

  DFINITY通过将共识、验证和存储分层来实现“几乎无限”的可扩展能力。共识层不涉及交易数据。存储层被分成多个子链,每个子链负责处理更新交易的分片。验证层负责将所有分片的散列组合成类Merkle树结构,将根状态哈希存储在母链上的区块中。这种架构在实践中仍然存在一些重大问题需要解决,例如涉及跨分片状态数据的交易。

  以太坊的路线图中也包括状态分片,但还需要几年时间部署到主网络上。以太坊必须要从全局复制切换到分片的状态,而DFINITY有机会从一开始就使用分片技术,这是巨大的可扩展性优势。然而,DFINITY第一个支持状态分片的版本- 钨,也还需要一段时间才能发布。

  共识层里,分层设计同样可见,见下图。

  

  第一层是ID注册层,主要用于用户注册成为验证人,抵押金惩罚问题追溯。第二层是随机数灯塔,该随机数通过注册层的所有ID通过VRF算法得出一个随机值,用于下个周期的验证人选举和排序,这一层部署了Dfinity的关键技术,阈值签名(BLS),用以保证可以动态完成随机值的生成。第三层是区块链层,这一层部署了Dfinity另外一项关键技术,概率插槽技术(PSP),这项技术用于解决区块链分叉问题。第四层是公证层,解决块数据的最终确定性。公证是验证人共同 创建的某个区块下的一个阈值签名,只有经过公证的区块才可以包含在链中。Dfinity可以实现2个区块,约7.5s就确认交易。

  Dfinity PoS

  参与到Dfinity的运行中来,需要抵押DFN来获得注册成为验证人的资格(目前还不清楚需要抵押多少DFN才能成为验证人)。和大部分PoS公有链节点一样,Dfinity里的验证人也是完全匿名的,注册成功后会获得一个ID,这个ID会伴随着该验证人参与网络运行。

  参与网络,验证人需要运行一个节点程序,程序会规定验证人在指定时间做操作,比如提议出块,对块进行签名等。为了提高效率,每个验证人ID会被分成组,每个组通过随机数选择轮候出块。每个高度,Dfinity算法通过随机排序,按照DFN数量权重,对验证人ID规定出块的优先级,块被提议出来后,被选中的组中所有验证人对其进行验证,并签名,签名数量需要大于等于阈值才会被广播,广播后的数据被公证人公证后即为最终确定性的块。

  如果一个高度上,非最高优先级的人也进行了出块,验证人会对得分最高的块进行签名,也就是说如果第一高优先级的验证人提议的块是会被大部分诚实的验证人签名的,而次优先级的块可能不会得到签名,如果次优先级得到了超过阈值的签名,那么Dfinity也有策略选择高得分(高优先级)的块来得到最长链,这就是Dfinity的另外一个技术点,概率插槽(Slot)技术。

  另外,验证人在参与运行的过程中,需要保持在线,否则可能无法获得激励。如果你被选择为出块人,但是你却不在线,那么你的权利将会被剥夺,转而由其他验证人代替你来出块。这点和Tezos给验证人排优先级(priority)的方式是一致的,用来保证该高度上始终有一个块能打包交易。

  同一个验证人ID可能会出现在多个组中,每个组目前并没与定义数量,看到有过举例,网络中有1000个验证人,一个组400人,阈值为201,即51%的概率签名为通过。

  

  性能

  从目前的测试网中看,Dfinity的性能可以秒杀当前的以太坊的。以下是官网给出的对比数据:

  

  可以看出Dfinity的理论值对以太坊的优势还是很明显的。但以上仅限于测试值,真实的数据还得得主网上线后,并确定阈值后才可能确定。阈值的确定很关键,阈值设置的小,肯定达成共识就更快,但安全就成问题;相反,阈值越大,达成共识就越慢,但更安全。

  阈值的定值除了安全,还有中心化这点比较有争议,阈值定得小,容易引起中心化诟病。比如100人的组,阈值定位21,那么实际上一个块的验证人只有21个,这和EOS就很类似了,所以Dfinity容易被认为是加大版的EOS,虽然21个验证人是随机从100个人中选出来的,和EOS的21个节点通过投票选出不同,但不得不说,但从数量上看,Dfinity如果阈值定的足够小的话,那极有可能陷入中心化的诟病当中。

  另外,如果Dfinity整体的验证人就很少,那么阈值不管定多少,都有可能引起这样或者那样的问题。阈值确定和参与Dfinity的验证人人数有关系,如果验证人人数比较少,那么无论怎么随机,选出的来人都是那些人。所以会有人说,Dfinity的阈值签名只不过是用随机方式取代了人为选举的方式而已,如果人数真的很少,做出来的随机顶多是一个加大版本的EOS而已,关键一个更尴尬的问题是,如果真的是加大版本的EOS,性能又比不上EOS,目前tps还是差蛮多的,是蛮尴尬的。不过现在Dfinity还是测试网,一切等到主网上线才能确定最终答案。

  按照现在的Tezos,Cosmos上运行的节点数,100个节点数就已经很了不起了。这个数字放到Dfinity上,阈值应该是51,每个组都是51个人,那么基本上只要存在多个组的情况,大部分都分布在几乎全部的组里面,所以阈值签名技术看似美好,但现在市场明显缺少验证人的情况下,是否必要呢?颇有点杀鸡在用宰牛刀的感觉。

  除了新的签名和共识能保证出块速度和确认速度,Dfinity整个系统也是非常高效的。这个高效体现在数据传输上,我们来看一组测试网的数据:

  

  在一个400个人的验证组里面,阈值是201,完成一个阈值签名所需要的通信开销预期是22kb的数据,这个数据是非常小的,在即将到来的5G时代里面,这样数量级的通信大小完成传输几乎是毫秒级的。

  出块人

  Dfinity的出块人,也是验证人。验证人运行节点程序主要执行3个操作,

  · 参与去中心化的随机数灯塔

  · 参与去中心化的 公证

  · 提议区块

  每个操作是否有奖励目前还不清楚,但不需要验证人操作,只需要保证运行节点程序,7x24小时不断网不断电即可。任何持币人都可以成为验证人,只需要抵押DFN并注册成为验证人就可以了。除了验证人,持币人还可以参与到Dfinity的神经网络BNS的治理中来,同样,需要抵押DFN,为提议投票。

  因为有抵押金,验证人不能做恶,一旦作恶,抵押金会被没收。系统做了很多容错处理,所以Dfinity对验证人的严苛程度,并没有像Cosmos那么严厉。不要求长期在线,不要求必须对提议进行投票,开放参与,开放退出,所以在Dfinity上做验证人,体验要比Cosmos好很多。

  但Dfinity对验证人的服务器要求会高,作为云服务网络的节点,要随时能根据系统需要提高自己的服务器配置,带宽,计算和存储,特别是前期对存储的需求,中期对Dapp计算能力的需求上。

  持币人

  持币人通过抵押DFN,可以参与到Dfinity的网络中来。在10.5.3里面列举了DFN的作用,其中第2、3、4点都是持币人可以参与的功能。但参与这些功能对持币人的要求比较高,会减少较多的参与性。

  目前还没有看到Dfinity网络里面,允许用户将DFN委托给验证人的功能,这意味着持币人只能自己来使用DFN所赋予自己的功能。

  激励

  Dfinity对两种行为会有比较明确的激励,第一是充当验证人工作,第二是参与到神经元系统中的投票治理。前者需要持币人抵押DFN成为验证人并运行节点程序,后者同样需要持币人抵押DFN来参与投票,如果投票结果被采纳,会得到一定的奖励。

  奖励的程度目前尚未明确,至于奖励来源来自于剩余基金会的持有量,还是通过增发?目前也尚未得知。一定程度反应出来,关于社区自治这块,Dfinity团队还是偏向于技术,很多经济模型的激励的优先级并不高。

  目前较为清楚的就是,增发以及激励的方案会根据Dfinity的神经网络系统动态调节,比如当DFN的市场价格下降的时候,神经网络系统BNS会将抵押DFN的数量增加,用以防止网络的低成本攻击问题;又或者当DFN的价格上升时,BNS会动态的调整DFN的增发速率,来保证合理的通胀率等。

  惩罚

  Dfinity中对于惩罚也并没有明确的太清晰,白皮书当中只提到了一嘴,就是做出对系统不利行为的验证人,其抵押金会被扣除。但白皮书中并没有明确哪些属于不良行为,一般PoS公有链上Slash的行为,如双签,双块,Dfinity的系统都做了比较大的系统容错,理论上来说这些行为下,系统不会出问题,所以也没有明确这些双签双块行为到底会不会被惩罚。

  同理,Dfinity的惩罚机制和数量也会根据神经网络系统BNS动态调整。

  链上治理

  Dfinity非常关注链上治理。但凡关注链上治理的项目都会做出属于自己的一套投票方案,像Tezos的Futarchy,Cardano的流行性民主,Cosmos的投票-Slash系统等,而Dfinity也有一套方案叫区块链神经网络系统(Blockchain Nervous System 简称BNS)。

  BNS首次提出了AI就是法律(AI is law)的概念,相对的是以太坊上代码即法律(Code is law)的概念。这里的AI并不是我们现在说的机器智能学习,而是需要依赖人类输入源影响的一类判断输出,这种分布式的智能被集成到了Dfinity的网络当中,使得整个网络可以在没有人类的参与下,能解决一些比较棘手的问题。

  Code is law在现实中会碰到很多问题,因为人情总是在一些情况下难以避免被碰到,代码的无情,无法解决这种争端,著名的DAO分裂其实就是感情派和Code is law派较量的恶果。WIlliams在介绍BNS的文章中,提及了5个比较重要的点,来说明BNS的好处:

  · 偷盗行为:盗币行为在区块链世界里面时有发生,著名的Mt.Gox交易所就曾遭遇过浩劫,超过100M+的比特币被盗,数千名投资人血本无归。Code is law无法解决此类问题,盗了也就盗了,被盗人只能眼睁睁的看着自己的资产在链上却束手无措,而带权限的BNS系统,可以冻结被盗资金,来归还给投资人。

  · DAO事件:DAO组织筹集了市面上超过14%的ETH,却因为筹集ETH的智能合约被攻击,而导致DAO组织的去中心化自治梦想流产,Code is law是承认代码而不承认攻击,代码需要承担过错,人们需要承担代码的过错。而BNS可以使用最高权限来冻结,或者改变分裂状况,使得情况转机变得可能。

  · 加速进化:传统软件的升级需要各种监控,当性能跟不上或者出问题时,需要人为进行干预,这种干预的反应往往是滞后的,人们对此付出的代价则是低效的生产力代价。BNS可以帮助监控,在需要的时候自动升级并给出最理想的反馈速度。

  · 更安全,更经济:BNS会随着供需波动,给出合理的增发速率,来解决因为币价波动导致的系统安全漏洞。还可以在合适的时机提高供给,以满足大量的运行需要,使Dfinity朝向一个更安全更经济的方向发展。

  · 杀死不良交易:暗网中往往充斥着众多不良信息,商品的交易市场,BNS可以通过监控或治理,将这些运行在Dfinity上的智能合约关闭,从而直接杀死不良交易。

  从这些点可以看出,权限型的BNS的权利很大,它可以冻结资产,甚至回滚交易,颇有点EOS治理的影子,不同的是,AI和人为的较量,相当给Dfinity的网络安插了一个智能机器人,这个机器人会听从人们的命令,来处理各种高级别的事务,解决当下区块链里头一些比较棘手的问题。

  BNS怎么参与?

  持币人可以通过运行“神经元”客户端来参与到BNS的工作中来,完全匿名,任何人都可以通过提议来获得DFN的奖励,同时投票人可以抵押DFN对提议进行投票表决,来决定提议是否被采纳。整个投票的过程其实和Cardano的治理流程很像,持币人可以直接投票,但是如果你对投票的内容并没有足够的判断依据,你可以将你的投票权代理给“专家”,让“专家”代替你来投票。

  为了激励投票,Dfinity会奖励投票人以奖励,具体数量和抵押的DFN数量成正比。

  问题

  Dfinity的负面新闻比较少,公关也比较出色,但在开发者关系,投资者关系上处理的不是太好。虽然有对用户的空投行为,但是很多人并没有能很好的接触到这个项目中来,总觉得这个项目很神秘,神秘到除了知道Dfinity融了很多钱之外,就再也不知道什么信息了 ,目前测试网并不开放,也不知道到底做到什么层度了,这个情况下,按照公链开发的尿性,估计很难如期上线。下面,我把研究Dfinity的过程中,发现的问题和大家说一下:

  · 项目信息纰漏不完善:官网披露的信息较少,文档也不够完善。估计还是处于测试网的早期,无法参与,

  · 奖罚规则不明确:对于激励,惩罚等方面的方案不够明确,很多都是一个框架,并没有具体的细则。

  · 团队偏技术,和社区交流较少,几乎很少有交流。有一个开发者社群,但是活跃度很低。

  · 开发延期,MVP拖延

  未来

  去中心化的云服务器如果发展壮大,的确是被需要的。但前提是性能比肩当今的AWS,谷歌云,如果做不到旗鼓相当的等级,那么谈去中心化云架构所带来的好处还为时尚早。

  以太坊也正在奔向PoS共识的道路上,Casper FFG对于PoW的提升也是显著的。Dfinity虽说是以太坊的姐妹链,但是并不能摆脱两者之间的竞争关系。同样是超级计算机提供基础功能,Dapp开发者肯定希望运行在一个比较高性能的公链上,所以两者的竞争在2019年会是一个看点,当然,这依赖于Dfinity和Casper FFG的顺利上线。

  另外一个点,就是Dfinity是否能够吸引到足够多的节点。节点能为网络提供硬件,节点数量的多少除了了代表去中心化的程度外,还能表现网络处理能力的强弱。目前Dfinity的节点激励计划并没有出来,如果是通过BNS系统来动态调节激励模型参数的话,那么初期的激励必须足够大,才能吸引足够多的节点参与。

  而最后,也是最重要的一点,就是网络采用(adoption),网络采用意味着Dfinity的实际价值,只有更多的网络采用,Dapp运行,才能体现网络本身的价值,要不然就是空中楼阁,犹如外表华丽,内心丑陋的人,好在Dfinity做了兼容以太坊的EVM,那意味着以太坊Dapp挪过来是好使的,只要性能安全俱佳,那么剩下就是公关的事情了。