一种在区块链上生成随时数的方法和系统技术方案

技术编号:24120066 阅读:19 留言:0更新日期:2020-05-13 02:49
区块链是一个分布式的去中心化的公共账本,具有不可逆和不可篡改的特点。它采用智能合约和共识机制,将协议和数据保存在节点之中。它通过算法自我约束,建立一个可信、安全、中立、自治的去中心化平台。但区块链协议自身存在的局限性,使其上生成随机数并达成共识一直是一个难题。本发明专利技术通过在区块链引入一种新的随机数共识的方法,为区块链以及区块链智能合约获取随机数提供了一个快速有效的手段。

【技术实现步骤摘要】
一种在区块链上生成随时数的方法和系统
本专利技术涉及互联网
,特别是涉及区块链技术的实现方式。
技术介绍
区块链是一个分布式的去中心化的公共账本,具有不可逆和不可篡改的特点。它采用智能合约和共识机制,将协议和数据保存在节点之中。它通过算法自我约束,建立一个可信、安全、中立、自治的去中心化平台。但区块链协议自身存在的局限性,使其上生成随机数并达成共识一直是一个难题。本专利技术通过在区块链引入一种新的随机数共识的方法,为区块链以及区块链智能合约获取随机数提供了一个快速有效的手段。
技术实现思路
本专利技术实施例的第一个方面是提供一种在区块链上实现随机数的方法,包括:区块链网络内含随机数发生网络。随机数发生网络由所有节点投票产生。智能合约虚拟机支持随机数rand字节指令。智能合约虚拟机rand字节指令向随机数发生网络请求随机数。随机数发生网络内部维护一个随机数池,即使用同一索引的多次随机数请求都会返回相同的随机数值。随机数索引根据执行智能合约时当前的区块位置、交易所在区块的位置、智能合约虚拟机指令指针的位置三者进行哈希生成。随机数网络中的随机数根据熵池中的数据来生成。熵池的数据是根据随机数节点的内外部随机事件:网络输入数据、网络输入数据的速率、节点风扇的转速、CPU的温度数据多次哈希搅拌而成。随机数在传递过程中使用智能合约的公钥进行加密,以确保此随机数只能被请求的智能合约所解密。本专利技术实施例的第一个方面是提供一种在区块链上实现随机数的系统,包括和实现了第一个方面所描述的方法。与现有技术相比,本专利技术的有益效果:本专利技术实施例提供的区块链随机数产生方法及系统,通过快速建立的区块链共识,为区块链上产生可信的随机数提供了有效的方法,解决了区块链上产生随机数的疑难问题。附图说明此处的附图被并入说明书中并构成本说明书的一部分,展示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。图1是本专利技术实施例提供的区块链随机数产生方法流程图。图2是本专利技术实施例提供的区块链网络节点图。图3是本专利技术实施例提供的区块链随机数熵池结构图。图4是本专利技术实施例提供的区块链智能合约虚拟机示意图。图5是本专利技术实施例提供的区块链智能合约虚拟机内部结构图。图6是本专利技术实施例提供的区块链随机数rand字节码指令执行示意图。具体实施方式为使本专利技术的目的、内容和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例仅用于更加清楚地说明本专利技术的技术方案,而不能以此来限制本专利技术的保护范围。术语解释:区块链:区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。智能合约:一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。首先,解释本专利技术技术方案的关键特征在于:本区块链系统在区块链内部建立了一个随机数共识网络。此随机数网络的节点是由区块链网络上的所有节点投票产生的。得票最多的前N个节点组成此随机数发生子系统。此N个节点采用时间片轮询方式,分时获得此区块链网络的随机数发生权。图1表示了这种随机数系统产生随机数的方式。在随机数生成上,各随机数出块节点维护各自的熵池,并对其它节点的熵池贡献随机数据。如图2,熵池数据来源分为多个部分,它们包括来自其它出块节点的随机数据S201、收到网络数据包的间隔时间S202、CPU风扇转速S203,CPU的温度S204。这些熵池的数据再经过m次哈希搅拌形成最终的熵池数据。其熵池生成公式表示为:S=hash(hash(..(hash(S1,S2,S3,S4))))其中:S1为来自其它随机数节点的网络数据;S2为来自其它随机数节点的数据包的时间间隔序列;S3为来当前风扇的转速度;S4为当前CPU的温度。而随机数生成公式表示为:V=hash(X1,X2,X3)其中:X1为上一个随机数的值;X2为熵池数据的哈希;X3为智能合约传过来的随机数索引。随机数索引X3公式表示为:I=hash(P1,P2,P2)其中:P1为执行此交易时当前区块链的块号;P2为执行此交易时交易在块中的序号;P3为执行此交易时智能合约虚拟机指令指针的位置。随机数发生节点将此随机数生成后,将此随机数在随机数网络广播,并被各随机数节点保存到各自的随机数池中。图4展示了本实施例中区块链智能合约从开发到执行的信息流图。在开发阶段,智能合约被开发者使用高级智能开发语言301创建。通过智能合约编译器,高级语言编写的智能合约被编译成智能合约字节指令302。当用户提交请求执行智能合约时,智能合约字节指令302被装载到智能合约虚拟机303中执行。图5展示了本实施例中智能合约虚拟机的一种结构。它由指令存储空间403、堆存储空间401、栈存储空间404、指令执行单元组成402。其中,指令执行单元包含有指向当前指令位置的指令指针、指向当前栈顶位置的栈指针、和指向当前堆位置的堆指针。图6展示了本实施例中随机数字节指令rand指令执行时栈的情况。Rand指令是一个0操作数的字节指令,它的执行结果是在智能合约虚拟机栈存储空间的栈顶生成一个64位的随机数。在本专利技术实施例中,通过上述方法,不仅使随机随在整个区块链网络中得以快速生成,而且保证了智能合约得以正确执行。本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。最后应说明的是:以上各实施例仅用以说明本专利技术的技术方案,而非对其限制;尽管参照前述各实施例对本专利技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本专利技术各实施例技术方案的范围。本文档来自技高网...

【技术保护点】
1.一种区块链上生成随机数的方法,其特征在于,包括: 区块链内包含了一个共识随机数发生子系统;此随机数发生子系统是由委任权益证明共识产生的;区块链通过此共识随机数发生系统来获取随机数;随机数在传递过程中使用智能合约的公钥进行加密,以确保此随机数只能被请求的智能合约使用智能合约的私钥解密。/n

【技术特征摘要】
1.一种区块链上生成随机数的方法,其特征在于,包括:区块链内包含了一个共识随机数发生子系统;此随机数发生子系统是由委任权益证明共识产生的;区块链通过此共识随机数发生系统来获取随机数;随机数在传递过程中使用智能合约的公钥进行加密,以确保此随机数只能被请求的智能合约使用智能合约的私钥解密。


2.根据权利要求1所述的方法,其特征在于,区块链节点的智能合约虚拟实现随机数rand字节码指令,此随机数rand字节指令向随机数发生子系统请求随机数。


3.根据权利要求1或2所述的方法,其特征在于,随机数发生子系统内部维护一个随机数池,即使用同一索引的多次随机数请求都会返回相同的随机数值。


4.根据权利要求3所述的方法,其特征在于,随机数索引是根据执行智能合约时当前区块位置、交易所在区块的位置、智能合约虚拟机指令指针的位置三者进行哈希生成的。


5.根据权利要求1或2所述的方法,其特征在于,随机数网络中的随机数是根据熵池中的数据来生成的;熵池的数据是根据随机数节点的内外部随机事件:网络输入数据、网络输入数据的速率、节点风扇的转速、CPU的温度数据多次哈希处理而成。

【专利技术属性】
技术研发人员:梁朝东
申请(专利权)人:北京彩球世纪科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1