首页 > 世链号 > 【bocoin交易所】DFINITY首席发言人用阈值中继为你指引VRF之路
区块链观察室  

【bocoin交易所】DFINITY首席发言人用阈值中继为你指引VRF之路

摘要:我们会定期邀请世界各地的资深技术大咖在线解构区块链技术,旨在为Geekhub技术社区输送前沿高质量的区块链技术内容;同时社区成员也可以参与直播互动,共同探讨区块链的技术发展与未来。
巴比特加速器技术公开课是一款全球化的线上区块链技术栏目(Geekhub Global Online),包含深度对话及课程。我们会定期邀请世界各地的资深技术大咖在线解构区块链技术,旨在为Geekhub技术社区输送前沿高质量的区块链技术内容;同时社区成员也可以参与直播互动,共同探讨区块链的技术发展与未来。
随着越来越多的区块链采用PoS共识机制,作为一种低能耗、高效率的随机数算法,VRF(可验证随机函数)算法近年来得到了越来越多人的关注。可以帮助区块链扩容,还可以提高安全性,很多人认为,基于VRF的共识机制或许可以改善“不可能三角”问题。本周,Geekhub Global Online第四期“VRF——安全的桥梁”特别邀请了去中心化云计算平台DFINITY创始团队成员兼首席发言人Arthur Falls为你详解《通往随机之路:DFINITY共识机制》。

 

WX20190116-132123@2x

早在2016年,DFINITY已经意识到区块链网络遭遇的核心性能问题就是随机性生成问题。随后DFINITY使用了其独有的阈值中继可验证随机函数,实现了高效的区块确认,在性能上有很大提升。本期课程,Arthur将以DFINITY共识机制为切入点,详细介绍可验证随机函数在区块链中的应用及实际应用效果。

 

背景介绍

 

 

DFINITY使用PoS共识机制。参与网络需要一定数量的stake(即DFINITY代币)作为押金(deposit)。所有节点都是平等的,增加回报的唯一方法是向网络添加更多节点。强调一点,所有的DFINITY节点的押金都是一样多的,多付押金不会有任何额外的好处。

PoS的部分优势在于,所有节点对于平台来说都是已知的,因此平台可以调用节点来执行某些功能,也会预期这些节点是在线的。如果被调用的节点是离线状态的,该节点可能会损失部分押金。

正因为我们知道谁参与了网络,并假设几乎所有节点都在线,我们可以随机将任务分配给节点,并比较确信这些任务将会完成。这也是DFINITY的基础。

 

阈值组(Committee)

 

 

阈值组是DFINITY整个共识产生过程中非常重要的概念。阈值组让我们避免了只有单一决策者的情况,是DFINITY的核心。在任何时候,网络中都有一个活跃的阈值组池。 每个阈值组从连接到网络的全部节点中随机抽样组成, 一个节点可能被同时包含在多个阈值组中。阈值组的所有节点一同工作以创建随机性;每一轮都要从阈值组池中选择新的阈值组。

WX20190116-143501@2x

阈值组提前随机选择出来并放入池中的。正如下图所示, 在时间段1期间,时间段2的阈值组被选择出来。 在时间段1结束时,该时间段的阈值组解散,时间段2的阈值组开始运作。同样的过程无限重复。

WX20190116-144018@2x

 

阈值中继(Threshold Relay)

 

 

DFINITY的随机性是由阈值中继可验证随机函数产生的。想象一下你在玩扑克游戏——你需要能够验证发牌人无法预测或操纵从牌组中出来的牌。 这也是你要在公众视野中洗牌的原因。 洗牌就是一种可验证随机函数,适用于不信任的节点网络——扑克玩家。

为了创建阈值中继,我们使用了阈值加密。不过,首先我们先来了解下公钥加密。想象一下,你家的门有两把钥匙,一把锁门的钥匙,一把开门的钥匙。你可以把锁门的钥匙给任何人,谁会在乎别人可以锁上你的门呢?重要的是,只有你才能开门。公钥加密中的数字签名基本就是这样,但更抽象。你有两个密钥,一个可以签署一个数据,另一个可以用来验证签名。如果其他人可以在一个数据上验证你的签名,这是一件好事,前提是你是唯一可以创建这个签名的人。这就是“公钥私钥密码学”的来源。签名密钥必须是私有的。

阈值加密基本是一样的原理,除了一个区别:在阈值加密中,私钥或签名密钥被分成多份(share),每份都可以用于创建签名。一旦聚合了阈值比例的签名份,它们就会创建一个完整的数字签名,可以使用公钥进行验证。如果没有足够比例的share来创建一个完整的数字签名,就无法被验证。在DFINITY的实际实施中,我们只需要让聚合比例达到多数(51%)。这里我们要知道:每个阈值组有一个公钥,每个组成员有一个私钥的share

WX20190116-150126@2x

下面是阈值签名的流程。阈值签名有一个非常棒的特点,那就是,无论聚合哪些签名份来创建一个完整的签名,最后得到的签名是相同的。然后我们就会得到一大堆的数字签名,如果没有人事先知道其中的内容,那么这就是一个很好的随机性来源。后面我们会把这个签名作为随机信标(Random Beacon)使用。

WX20190116-150232@2x

那么随机信标是怎么产生的呢?我们从随机源开始,用随机源来选择一个阈值组,阈值组成员签署随机性(用于选择阈值组)。那个阈值签名(记住我们只需要51%的阈值,并且这里任何阈值组成员都无法对签名产生影响),用于选择下一个阈值组。这个过程无限持续下去。

WX20190116-150942@2x

 

随机排序——概率卡槽共识(Probabilistic Slot Consensus)

 

 

因为协议有全部连接到网络的节点的列表,所以它可以将这个列表和随机信标作为输入,输出一个随机排序的列表。 而这个随机排序就需要通过概率卡槽共识进行。顶部的节点被认为有更高的优先级(rank)。优先级会影响一个节点将区块添加到链上的概率,优先级越高,概率越大

WX20190116-151907@2x

节点可以自己完成此操作并在创建和广播区块之前确定其优先级。 这节省了计算和网络资源,因为在实践中可能只有少数(例如五个)节点必须创建和广播区块。

 

区块签署

 

 

在DFINITY网络中,创建随机性的阈值组还有签署区块的作用。

每个阈值组成员要遵循相同的规则:他们收到一个区块,如果该区块无效,则将其丢弃。 如果有效,则检查其优先级。 如果优先级低于他们之前收到的一个区块,他们就会丢弃它。 如果优先级更高,他们会使用私钥share对其进行签名,然后广播区块和签名share。

WX20190116-154016@2x

一旦一个区块收集了必要数量的签名share来生成一个完整的、可验证的签名,则将其视为“经过公证的”,然后将这个区块添加到链中。

以下就是整个出块的过程:

WX20190116-152638@2x

 

DNIFITY的高效区块确认

 

 

基于阈值中继可验证随机函数的使用,DNIFITY网络的区块确认时间仅为两个区块,确认时间可低至2.5秒,每秒的交易处理量约为50笔。总的来说,在区块确认方面速度的确是很快,我们也必须看到VRF在其中发挥的巨大作用。

 

社区提问

 

 

1. 时间段2的阈值组在时间段1期间选出,这样的话,时间段2的阈值组成员会不会容易遭受DDOS攻击?

Arthur:答案是不会。因为在DFINITY里面,这些成员是隐藏的,平台选择了这些成员,但是没人知道他们是谁。

2.创建BLS密钥时,通信问题是瓶颈。DFINITY一个阈值组里有多少节点?如何改善这个问题?

Arthur:一个阈值组里有400个节点。通信很昂贵,但还不足以成为我们需要解决的问题。

3.一个阈值组成员公开了他的私钥怎么办?

Arthur:因为我们需要一定阈值(51%)的私钥share来达成共识,一个share的泄露是没有关系的。

4.有多少节点被选择用于发起区块?

Arthur:答案是0。每个节点可以可能被选择用于发起区块,具体的概率由前面的随机排序算法决定,优先级高的概率高。发起区块的话,实际实施的大概5个节点。


来源:Apatheticco 

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:msy2134。