通过F&A,快速全面的了解DFINITY

通过F&A,快速全面的了解DFINITY_第1张图片

原文标题:DFINITY F&A

作者:Dominic Williams   

翻译:红军大叔&BlockPunk

社区:果壳宇宙(ID:DfinityFun)

添加微信:timesfriends,加入果壳宇宙,共建DFINITY生态,我们在招募开发者!


DFINITY是什么?


DFINITY是一个由客户端计算机组成的公共网络,它提供了一个“去中心化的世界计算云”。在上面可安装和运行程序,这些程序具备传统区块链上“智能合约”系统的所有优点,在设计时就考虑了,底层技术需要支持搭建高弹性的防篡改私有云。这些私有云还提供了托管软件服务,可以调用公共区块链云上的智能合约,这带来了许多额外的好处。

DFINITY引入了新的密码学技术和协议,旨在提供极致的性能、无限的可扩展性、互操作性。DFINITY也引入了一种,被称为区块链神经系统的去中心化的智能链上治理体系。


什么时候才可以用上DFINITY?


对于那些对去中心化技术感兴趣的人,DFINITY项目使用的技术组件正在一步步的公开发布(关键技术之一,“阈值签名接力”技术的相关代码已经发布)。 我们希望在2019年第二季度末,上线可供完整使用的测试网络,同时上线我们独特的软件框架,AI算法治理与其他功能,并于在2019年下半年上线主网


DFINITY的灵感来自哪里?


DFINITY最早可追溯到密码朋克精神和去中心化的理想上去。早在1999年,DFINITY的总裁兼首席科学家多米尼克•威廉姆斯(Dominic Williams),在使用戴维的crypto++库时,偶然发现了他的bMoney提案。2013年,多米尼克放弃过去的工作,专注于去中心化技术的研究,在2014年一直致力于理论研究。DFINITY这个名称是去中心化(decentralized)和无限(infinity)两个词的组合,旨在创建一个具有无限规模的去中心化应用程序平台。


DFINITY和学术界是否有紧密的关联?


DFINITY与学术保持着密切的联系。我们团队位于斯坦福大学附近,而多米尼克的设计在很大程度上是依赖BLS算法来创建随机性的,这个算法是由Dan Boneh教授和他手下的博士们共同设计的。DFINITY也是斯坦福区块链研究中心的赞助者。此外,我们非常想通过我们的奖学金计划,为愿意做分布式系统研究的学生提供支持。DFINITY项目欢迎广大的学者来为我们做贡献 , 感兴趣的话可以与我们联系。


为何DFINITY依赖于随机数?


到目前为止,任何一个能建立“虚拟计算机”的安全抗攻击网络中,让大量客户端节点共同协作的唯一方法,是借助密码学来生成随机数。当然,中本聪建立的工作量证明,实则是让矿工相互竞争,共同寻找符合条件的答案,解答的过程,只能通过暴击计算随机数的方式来实现。最后允许找到随机数的矿工,将交易区块添加到链上。

DFINITY需要更强大,实现过程操作更少的随机性方案,在固定时间内能更有效地产生随机性。随机性的重要性,不仅仅是在确保矿工共识权力、公平发放出块激励等事务中发挥着重要作用,像DFINITY这样的,图灵完备的区块链,需要更高级的随机性,因为智能合约可以自动的操作依赖任何条件(包括随机数)的大笔交易。因此通过操纵相关条件,谋取的潜在收益,可能是非常可观的。

我们找到的解决方案是“阈值签名接力”,它使用加密技术来创建随机性,按照几乎不可摧毁、不可操纵、不可预测的方式,按需选择相应的网络参与者。使用“阈值签名接力”,DFINITY网络的参与者会生成一个确定性的可验证随机函数(VRF),为整个区块链网络上的协作、运算提供支持。


随机数对区块链上的应用来说意味着什么?


在开放的区块链云平台上,安全稳定的随机源是必不可少的。多年来,随机性一直是软件系统的关键组成部分,许多应用的实现是依赖于随机数的。除了简单地实现公平抽奖和游戏系统这类应用,随机性更是 DFINITY 的关键目标,即确保那些将代码部署到 DFINITY 上的开发人员,能相信他们的代码会按预期运行(可信计算)。

在自治系统中,可以利用随机性来达成共识。


为什么不直接把区块哈希当作随机源呢?


区块哈希是可以被攻击者预测或操纵的,因此它不是安全可信的随机源。真正的随机性必须不受任何第三方的影响与预测。区块哈希实际上是可以被操纵并追踪预测的, 从而来攻击网络并盗取资产。

在工作量证明系统中,为了“蒙对”一个区块哈希,你需要创建很多个候选区块,这是需要付出大量成本的。而在没有涉及强力计算的权益证明系统中,验证者可以轻松地修改区块的内容,以得出其哈希值,使得区块哈希失去效用。在任何一种情况下,区块哈希都不足以满足我们需要的随机性。


DFINITY网络是如何构建的?


DFINITY是一个分布式的操作系统。它是由“客户端”共同组成的网络,通常在P2P的网络中被称为“节点”。 每个“客户端”必须用自己的身份对广播消息进行签名,这些消息会被记录在全局维护的网络状态中。每个“客户端”都应该提供一些标准化的计算资源,即数据处理能力、网络带宽和存储。计算资源部分使用诸如USCID之类的机制, 在后面的FAQ中我们会继续解释它们。


阈值签名接力如何工作?


客户端组成的网络按照上述FAQ描述的方式协作。阈值签名接力会产生内部的随机数灯塔,每一个输出的随机数的值,都定义了多个节点(节点也可以自发地形成“阈值组网”)的随机组网。

每个组网的构成完全是随机的,因此组网间存在交叉,一个节点可在多个组网中存在。 在DFINITY里每个组网由400个节点组成。当建立一个组网时,组网内的成员会自发的使用分布式密钥生成协议来设置BLS阈值签名协议。

如果这些节点在有限的几个区块时间内组网成功,节点们就会发送一个特殊的交易,在全网范围里,为自己的组网注册公钥并创建身份,以便成为一个在线组网,参与到接下来的进程中。

“创世网络”会包含一些预设好的组网,其中一个组会被提名,来创建一些包含默认值的签名。这样的签名必须是随机的,如果不是,则组里的消息签名就有被伪造的可能,且阈值签名接力系统也会变得不安全———因为会使用随机值来选择下一轮运作的组网。

然后,有上一组选出的当前组,会在之前产生的随机值上签名,产生一个新的随机值,然后选另外一个组网。通过小组网之间的无限接力,产生一系列的随机值。在加密阈值签名系统中,组网可以通过组网节点在最小阈值的协作下产生消息,然后为消息签名,DFINITY网络中设置的阈值为51%

为了产生阈值签名,组成员会单独对消息签名(这里是前面组的阈值签名),创建“共享签名”,然后广播给其他组成员。

足够多的共享签名,就可以组合为改组的阈值签名,例如,如果组大小为400,且阈值设置为201,则收集足够多的节点的消息,将能够构建该组的签名。

每一条“共享签名”都可以由其他组网的节点验证,且客户端利用组的公钥,可以验证每一个组的阈值签名。

BLS方案的神奇之处在于它的“唯一性和确定性”,这意味从同一组网的任何一个子集中,只要收集到了足够多的共享签名,那么创建出的本组阈值签名,始终都是相同的,并且是唯一的确定的值。

因此,生成的随机值序列,是完全确定的和不可操纵的,组间接力签名的过程就产生了一个可验证随机函数,即VRF。

虽然随机值的序列,是通过给定一组参与组来预先确定的,但每个新的随机数,只能在当前组网达成最低限度的一致性(即51%确认)的情况下产生。

相反,为了使接力过程不会因为没有产生随机数而停止,非正常运行的节点数目必须低于阈值。阈值的设置,使得这种情况几乎不可能发生。

例如,如果组大小设置为400,并且阈值为201,则必须有200个或更多的进程出错才会停止产生随机数。如果网络中有10000个进程,其中3000个是错误的,那么接力中止的概率小于10e-17。

这种系统不仅具有难以置信的鲁棒性,且非常高效。在广播gossip协议的网络中,一个有400个节点的组网,只需转发大约20KB的通信数据,即可产生阈值签名。

同时,借助DFINITY的BLS阈值加密库,在现代的硬件条件下,可以在不到一毫秒的时间内完成所有操作的计算。

你可以通过阅读DFINITY共识白皮书了解有关阈值签名接力的更多信息。


唯一的副本状态ID(USCID)是什么?是如何运作的?


DFINITY的网络被设计为在使用时,能存储无限量的状态,因此一个节点不可能维护所有数据的副本——毕竟,这个数据量可能是以EB做单位的(1EB大约等于10亿GB)。

因此,有必要对跨节点的状态存储进行分区(切分),这自然会引发一些问题,即需要什么样的副本因子,才能保证足够的安全、。

为了提供有关数据安全性的实际保证,DFINITY等网络需要在确定所涉及的底层副本因子上做更多工作。

这也能确保节点复制的文件不会太大——毕竟,在1M大小的客户端节点上,复制一个超大的副本是荒谬的。

USCIDs为解决方案,它要求每一个客户端,维护分配给他们的唯一的状态数据的副本——因此缩写为“Unique State Copy ID”。要求每个客户端存储那些被自身派生密钥加密过的全部数据,所有其他客户端都的身份必须是可见的。

使用一种特别调优过的对称加密算法,使得加密相对较慢,解密相对很快。这个算法是这么设计的:虽然可以在数据更新和写入时对其进行加密,但是在有限的时间内,对所有的数据分切状态进行加密是不现实的。

USCID系统要求客户端在协议通信期间,对其唯一加密状态进行认证。

例如,当节点在阈值接力链PSP上产生一个候选块时,它必须包含这样的证明。为了让这个块有机会被包含在链上,并让节点获得回报,区块必须在几秒钟的有限时间内被广播,这时,恶意节点就会出现问题。

认证过程,是在节点特定的加密状态上,进行随机漫步,产生的哈希链的输出——从接力网络中随机数灯塔指的某个随机块开始,将该区块添加到哈希摘要中,然后选择另一个随机区块,如此继续,直到一个所需长度的随机链中的所有块的数据都添加到摘要中。


区块链神经系统是如何控制网络的?


区块链神经系统(BNS)可以访问虚拟机中的特殊操作码。这允许BNS冻结、解冻和修改其他独立的软件对象(智能合约)。

它还可以配置用户运行的DFINITY客户端软件,比如将网络协议升级到最新版本。


BNS是什么意义上的人工智能(AI)?


Dfinity的BNS不是像神经网络或贝叶斯分类器那样的传统AI。一方面,它需要借助来自人类控制的"神经元"的输入,对提案做出决策,但另一部分决策,是从神经元与非确定性计算进程之间的去中心化"追随"关系中产生的。

BNS提高了神经元的决策能力,因为当新信息出现并接收到反馈时,神经元就会被所有者重新配置。 决策背后的实际过程是不可知的: 神经元追随关系,只存在于所有者在自己的计算机上,运行的神经元客户端软件之中,而神经元客户端软件的分布状态是无法被获知的。

这个过程是不确定的,因为时间会影响神经元通过互相追随,传递决策的方式。BNS的目的是利用大众的智慧和知识来明智地裁定复杂的问题。


BNS是如何运行的?


神经元的投票权重与锁定在其中的token(DFINITIES)来成正比。每个神经元可以在其拥有者的指导下投票,或者自动追随其拥有者配置的地址上其他神经元的投票。

这类似于"流动民主"的概念。在BNS中,“跟随”关系只存在于客户端计算机上,并且是不可知的,这就是为什么该系统可能更好地被描述为"不透明的"流动民主。

Bns 使用一个名为"静候"的系统来收集足够的输入,然后做出决定。


神经元能帮我挣到DFINITIES吗?


是的,创建和运行神经元将获得参与奖励。你可以通过锁定dfinity的token(DFINITIES)来创建一个神经元。神经元的权重与持有的DFINITIES成比例。

在每一个DFINITY轮次结束时,你将获得与你锁定在神经元内的DFINITIES数量成比例的奖励。投票越对奖励越多。


我如何在DFINITIES上运行一个节点?


你可以通过运行客户端软件,在DFINITY上创建节点,每个客户端软件都必须具有“节点标识”。DFINITY节点客户端应该为网络提供相对较小但稳定的计算和存储容量。


我如何获取这些奖励?


在DFINITY上运行节点与PoW解谜题挖矿的方式非常不同。在DFINITY网络中,客户端扮演处理数据的角色,并根据表现获得奖励。

因此,没有必要将你的客户端添加到某种矿池系统中(这甚至是不可能的),你运行的每个客户端都将收到定期的奖励,因为它将以各种方式参与支持网络。


神经元能帮我挣到DFINITIES吗?


你必须向网络中抵押DFINITIES,如果你的客户端不能正常运行或尝试欺诈行为,你的押金可能会被罚没。区块链神经系统调整当前规模的安全押金数额,具体是多少,会考虑到价格波动和其他因素。


什么是"DEFINITIES"?


Dfinities是参与网络运行的token。

在当前设计中,在网络中存在四个明确的用处:

1、在区块链云上运行(和安装)智能合约的燃料。

2、“节点标识”的押金,缴纳押金后才会允许客户端软件加入网络。

3、通过区块链神经系统,创建可以参与去中心化治理的“神经元”的押金。

4、允许私有DFINITY云网络连接到公共网络的押金。


DEFINITY网络里用什么作为货币?


虽然dfinities是有价值的,并可以进行交易,但团队内部的普遍认为,货币需要保持稳定,应该由现有金融机构使用彩色币模型创建(比如,

银行为其系统下发行的代币提供支持),或由下一代的加密协议支持,这些加密协议会支持使用这些稳定币的经济体,例如PHI(PHI在2020年前不太可能上线)。


DEFINITY网络是通货膨胀?


在DFINITY中,所有的经济政策,都受到区块链神经系统的影响,包括通货膨胀。开始阶段,它将发行新的dfinities作为运行节点或使用神经元投票的奖励。

发行的具体数额将与dfinities价值的波动有关,也与BNS是否希望更多节点加入网络有关,还有一些其他因素。

不过,BNS最终可能会决定使用稳定币来支付奖励,比如PHI或其他一些系统。因为这样可以有效地停止dfinities的通胀。


通过F&A,快速全面的了解DFINITY_第2张图片

你可能感兴趣的:(通过F&A,快速全面的了解DFINITY)