天天小说网

第五节 智能合约

机数产生做出贡献的人提供密钥的哈希值HASH(S)。

(2)在所有的HASH(S)已经公布之后,所有的参与者都要提供S。

(3)所有的参与者提供S之后,HASH(S[0…n])会被算出来当成选定的随机数。

任何担忧结果的随机性的人可以发布两次转账就可以参与这个过程。每个人都可以轻易地选择相信其他没有勾结的人们,只要整群人中只有一个人是诚实的,那么结果就会是随机的;如果全体董事会成员都参与其中,那么我们就可以很放心地假设至少其中有一个是诚实的。

让101位受托人担任RNG董事会成员十分平衡,而这也将提供可证明的安全的成本分摊到最在乎这件事情的人身上,这表示我们会让董事会成员负责抽签,因为他们有99%上线时间保证来进行RNG,并且大致上值得信赖,只要其中的一位是诚实的,那么结果就会是真正随机的。

“分布式”意味着一个区块的随机数是由前一轮101位受托人所提供的密钥产生的,只要至少其中一位是诚实的,结果就会是真正随机的。“可证明”表示他们需要在下一个回合发布密钥的哈希值到区块链,根据密钥所得出的哈希值必须和之前发布的哈希值相同。由于两者必须一致,因此受托人不可能通过公开不诚实的密钥来作弊。

因此在DPoS中,我们可以透过以下的伪代码(包含了固定数量的受托人)来阐述。

代码:

struct Block {

hash HASH(S[n])//wherenis the index of secrets generated by this delegate

hashS[n-1]

};

每个区块中的头部中包含一个HASH(S[n]),其中S[n]是这个受托人下一次生产区块时将揭晓的密钥,同时当前区块也包含上一个区块的密钥S[n-1]。

如此一来,我们就有了密钥的串流,每隔一个产块间隔(15~30秒)就会提供一组密钥。通过这个串流我们可以用以下方式产生区块的随机数R。

代码:

if(first_block_produced_by_delegate)then

Block[HEAD].revealed_secret=0ASSERT(HASH(Block[HEAD],revealed_secret)==

GetLastBlockProducedByDelegate(Block[HEAD].delegate_id).secret)

R=HASH(Block[HEAD].revealed_secret)

for(uint32_ti=1;i<100;++i){

R=HASH(Block[HEAD-i].revealed_secret+R)//where+is concat

其中,区块所产生的随机数以R表示,每个R都是经由100位受托人所提供的密钥得出的,如果当中至少有一位受托人是诚实的,那么产生的R就会是真正随机的。

实际上,“Block[HEAD].revealed_secret”就是上一轮HEAD的受托人所产生的S[n-1](每个回合会有100个受托人所产生的区块),如果我们需要至少“如果当中至少有一位受托人是诚实的,那么产生的R就会是真正随机的”这样的安全性,大奖就应该使用第100个区块的R来抽出,此时距离购买彩票的交易已经间隔了100个区块。

这样一来,每个人都可以简单地确认公平性,并接受其他人都可能是串通的风险。在涉及概率的游戏里,你可以让每个参与的游戏交易都有自己的密钥,一旦买票窗口关闭,每个人都可以显示他的密钥。所有密钥的哈希值就可以成为游戏结果(如中奖号码),由于没有任何有效的交易会被董事会排除在区块链之外一到两个回合,我们可以安全地假设没有人知道最后会产生出来的随机数是什么。但是这样一来随机算法的过程就会涉及太多的游戏过程,因此收集所有的密钥的时间可能会很长,可能无法保证所有的密钥会在游戏结束之前收集完成。

3.DPoS中的轮值洗牌

当101位受托人都签署了区块之后DPoS就会洗牌,受托人的顺序便根据随机数随机洗牌,这种方式可以让去中心化的共识过程避免恶意受托人攻击。每个受托人在轮到他的时候就只能选择是否要发布区块(也就是给出密钥)。如果没有洗牌的过程,恶意的受托人就可以借由不给出密钥进行攻击,影响随机结果,进而选择他想要的受托人排序,这个排序有可能是为了下一轮更严重的攻击做准备。

我们可以将上述总结为收集分布式随机因子的随机性不足,因此需要洗牌以在收集的过程中引入随机性。洗牌让101位现任受托人参与了收集随机性的过程,否则潜在的攻击可能会发生,例如:洗牌确保了每个受托人每回合只有一次发布的机会(假设没有遗失区块),因此他们无法透过引入新的密钥并预测新的受托人顺序来影响随机性,因为现在的顺序是由上个回合的随机性所决定的,而每个受托人只有一次机会来发布密钥。所有受托人发布的密钥会被用于下一轮受托人顺序的洗牌,这表示在至少有一名受托人是诚

更多内容加载中...请稍候...

若您看到此段落,代表章节内容加载失败,请关闭浏览器的阅读模式、畅读模式、小说模式,以及关闭广告屏蔽功能,或复制网址到其他浏览器阅读!

新书推荐

聊天群:智识令使想要开拓万界 我医武双绝,出狱后镇压全世界 精神病人下山,你管物理超度叫治病? 重生1993:我靠鉴宝养全家 你有天眼不去赌石,又在乱看 让你当炮灰,你手搓神明机甲? 穿成Omega恶毒公公后我躺平 九族同体,我为世间邪神 火影:苟在雨隐那些年 我一末世女配,杀几个男主不奇怪吧?