System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及区块链,尤其涉及一种区块链中基于vdf生成、验证随机数的方法及装置。
技术介绍
1、生成随机数是区块链上的一类常见需求,一般是从外部数据源获取随机数并聚合上链,但是,在将随机数进行聚合并上链的过程中,存在矿工恶意干预打包出块结果的问题,导致链上的随机数的随机性较低。
2、目前,一般会先由共识发起方收集所有数据源提供的随机数,当全部收集完毕之后,对随机数进行聚合,并通过可延迟验证函数(verifiable delay function,vdf)算法对随机数进行计算并提供结果和证明,然后再将随机数进行上链。但是这样会导致外部数据源提供的随机数进行聚合并上链所需的时长较长。
3、综上,如何降低外部数据源提供的随机数进行聚合并上链所需的时间,是当前亟需解决的技术问题。
技术实现思路
1、本专利技术实施例提供的一种区块链中基于vdf生成、验证随机数的方法及装置,用以解决现有技术中外部数据源提供的随机数聚合并上链耗时较长的问题。
2、第一方面,一种区块链中基于vdf生成随机数的方法,vdf的时间参数被分为多个子阶段的子时间参数,方法适用于申请者,包括:在通过k个外部数据源收集完第一子阶段的k个随机数后,同步进行第二子阶段的随机数收集及第一子阶段在vdf下的子输出值和子证明值的生成;第二子阶段为第一子阶段之后的首个子阶段;在第一子阶段为最后一个子阶段时,将第一子阶段的子输出值作为目标随机数;其中,通过如下方式进行子输出值和子证明值的生成:根据第一
3、上述技术方案中,将耗时长的外部数据源采集的拆解成多个子阶段的子时间参数,通过这种分段机制设计,vdf计算可以在第一阶段数据源采集完成即开始,有效地缩减了整体时长。
4、可选的,进行第二子阶段的随机数收集,包括:向m个外部数据源发送数据请求;接收m个外部数据源中任一外部数据源反馈的随机数;随机数是外部数据源在确认前序子阶段中未提供过随机数后发送的。
5、上述技术方案中,随机数是外部数据源在确认前序子阶段中未提供过随机数后发送的,从而可以保证提供数据的随机性不因单一数据源重复提交而降低的问题。
6、可选的,根据第一子阶段的k个随机数和聚合方式,确定第一子阶段在vdf下的子入参值,包括:根据第一子阶段的k个随机数和聚合方式,确定第一子阶段的聚合值并上链;根据第一子阶段的聚合值和第三子阶段在vdf下的子输出值,确定第一子阶段在vdf下的子入参值;第三子阶段为第一子阶段之前的首个子阶段。
7、上述技术方案中,在计算流程中,子阶段的vdf的子入参值是通过该子阶段的默克尔树根和该子阶段的上一个子节点的子输出值进行拼接得到的,从而可以保证总计算时长并不会减少,因此整个流程的计算时长没有减少,攻击者无法在少于总计算时长内反推最后一步得到的总拼接结果,从而不会影响聚合随机数的安全性。
8、可选的,聚合方式为以随机数为叶子节点生成默克尔树;根据第一子阶段的k个随机数和聚合方式,确定第一子阶段的聚合值,包括:根据第一子阶段的k个随机数和聚合方式,得到第一子阶段的默克尔树根;根据第一子阶段的聚合值和第三子阶段在vdf下的子输出值,确定第一子阶段在vdf下的子入参值,包括:将第一子阶段的默克尔树根和第三子阶段在vdf下的子输出值拼接为第一子阶段在vdf下的子入参值;确定针对每个外部数据源的子验证值,包括:针对每个外部数据源,得到基于外部数据源的随机数在第一子阶段的默克尔树下的子验证值。
9、可选的,同步进行第二子阶段的随机数收集之前,还包括:确定子阶段数量s及每个子阶段的外部数据源的数量k并上链;将vdf的时间参数均分为s个子时间参数。
10、第二方面,本专利技术实施例提供的一种区块链中基于vdf验证随机数的方法,vdf的时间参数被分为多个子阶段的子时间参数,方法适用于作为验证者的外部数据源,包括:针对任一外部数据源,从区块链获取外部数据源在所属子阶段对应的子验证值、各子阶段对应的子入参值、各阶段对应的子输出值和各子阶段的子证明值;根据外部数据源在所属子阶段反馈的随机数和所属子阶段对应的子验证值,生成待比较验证值;在待比较验证值验证通过后,根据各子阶段的子入参值和各子阶段的子证明值对各子阶段的子输出值进行验证。
11、上述技术方案中,在验证流程中,除了对默克尔树根的hash计算及字符串拼接以外不需要其他任何新增的计算内容,从而可以简单高效快速的进行验证,得到验证结果。
12、可选的,所属子阶段对应的子验证值是针对外部数据源的随机数在所属子阶段的默克尔树下的子验证值;通过如下方式对待比较验证值进行验证,包括:确定待比较验证值与所属子阶段对应的默克尔树根是否一致。
13、可选的,每一子阶段的子入参值是根据前序阶段的子入参值和所属子阶段的默克尔树根确定的;根据各子阶段的子入参值和各子阶段的子证明值对各子阶段的子输出值进行验证,包括:按照各子阶段的倒序关系,依序对各子阶段的子入参值和各子阶段的子证明值对各子阶段的子输出值进行验证。
14、第三方面,本专利技术实施例提供的一种区块链中基于vdf生成随机数的装置,vdf的时间参数被分为多个子阶段的子时间参数,包括:第一获取单元,用于在通过k个外部数据源收集完第一子阶段的k个随机数后,同步进行第二子阶段的随机数收集及第一子阶段在vdf下的子输出值和子证明值的生成;第二子阶段为第一子阶段之后的首个子阶段;在第一子阶段为最后一个子阶段时,将第一子阶段的子输出值作为目标随机数;第一处理单元,用于通过如下方式进行子输出值和子证明值的生成:根据第一子阶段的k个随机数和聚合方式,确定第一子阶段在vdf下的子入参值及针对每个外部数据源的子验证值;根据第一子阶段的子入参值及第一子阶段的子时间参数,确定第一子阶段在vdf下的子输出值和子证明值;将第一子阶段的子入参值、针对每个外部数据源的子验证值、第一子阶段的子输出值和第一子阶段的子证明值进行上链。
15、可选的,第一获取单元具体用于:向m个外部数据源发送数据请求;接收m个外部数据源中任一外部数据源反馈的随机数;随机数是外部数据源在确认前序子阶段中未提供过随机数后发送的。
16、可选的,第一处理单元具体用于:根据第一子阶段的k个随机数和聚合方式,确定第一子阶段的聚合值并上链;根据第一子阶段的聚合值和第三子阶段在vdf下的子输出值,确定第一子阶段在vdf下的子入参值;第三子阶段为第一子阶段之前的首个子阶段。
17、可选的,聚合方式为以随机数为叶子节点生成默克尔树;第一处理单元具体用于:根据第一子阶段的k个随机数和聚合方式,得到第一子阶段本文档来自技高网...
【技术保护点】
1.一种区块链中基于可验证延迟函数VDF生成随机数的方法,其特征在于,所述VDF的时间参数被分为多个子阶段的子时间参数,所述方法适用于申请者,包括:
2.如权利要求1所述的方法,其特征在于,进行第二子阶段的随机数收集,包括:
3.如权利要求1所述的方法,其特征在于,根据所述第一子阶段的K个随机数和聚合方式,确定所述第一子阶段在所述VDF下的子入参值,包括:
4.如权利要求3所述的方法,其特征在于,所述聚合方式为以随机数为叶子节点生成默克尔树;
5.如权利要求1至4任一项所述的方法,其特征在于,同步进行第二子阶段的随机数收集之前,还包括:
6.一种区块链中基于VDF验证随机数的方法,其特征在于,所述VDF的时间参数被分为多个子阶段的子时间参数,所述方法适用于作为验证者的外部数据源,包括:
7.如权利要求6所述的方法,其特征在于,所属子阶段对应的子验证值是针对所述外部数据源的随机数在所属子阶段的默克尔树下的子验证值;
8.如权利要求7所述的方法,其特征在于,每一子阶段的子入参值是根据前序阶段的子入参值
9.一种区块链中基于VDF生成随机数的装置,其特征在于,所述VDF的时间参数被分为多个子阶段的子时间参数,包括:
10.一种区块链中基于VDF验证随机数的装置,其特征在于,所述VDF的时间参数被分为多个子阶段的子时间参数,包括:
...【技术特征摘要】
1.一种区块链中基于可验证延迟函数vdf生成随机数的方法,其特征在于,所述vdf的时间参数被分为多个子阶段的子时间参数,所述方法适用于申请者,包括:
2.如权利要求1所述的方法,其特征在于,进行第二子阶段的随机数收集,包括:
3.如权利要求1所述的方法,其特征在于,根据所述第一子阶段的k个随机数和聚合方式,确定所述第一子阶段在所述vdf下的子入参值,包括:
4.如权利要求3所述的方法,其特征在于,所述聚合方式为以随机数为叶子节点生成默克尔树;
5.如权利要求1至4任一项所述的方法,其特征在于,同步进行第二子阶段的随机数收集之前,还包括:
6.一种区块链中基于vdf验证随机数...
【专利技术属性】
技术研发人员:胡朝新,张俊麒,苏小康,张开翔,范瑞彬,
申请(专利权)人:深圳前海微众银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。