技术领域
[0001] 本发明涉及区块链技术领域,尤其涉及基于门限eddsa的链上随机数生成方法、装置、计算机设备及存储介质。
相关背景技术
[0002] 区块链,就是一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。这些服务器在区块链系统中被称为节点,它们为整个区块链系统提供存储空间和算力支持。如果要修改区块链中的信息,必须征得半数以上节点的同意并修改所有节点中的信息,而这些节点通常掌握在不同的主体手中,因此篡改区块链中的信息是一件极其困难的事。相比于传统的网络,区块链具有两大核心特点:一是数据难以篡改、二是去中心化。基于这两个特点,区块链所记录的信息更加真实可靠,可以帮助解决人们互不信任的问题。
[0003] 区块链上经常需要用到随机数(如抽奖),但区块链是要在节点间达成共识的技术,因此随机数的生成并不容易,普通的随机数方案很难规避出块节点操纵或预知随机数从而进行作恶。
具体实施方式
[0032] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033] 附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
[0034] 应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0035] 具体地,下面结合附图,对本发明实施例作进一步阐述。
[0036] 请参阅图1,图1是本发明实施例提供的一种基于门限eddsa的链上随机数生成方法的流程图,如图1所示,该基于门限eddsa的链上随机数生成方法包括步骤S10至步骤S40。本方法适用于共识算法,所述共识算法包括POA(权威证明算法)、PBFT(实用拜占庭容错算法)和POS(权益证明算法)。
[0037] S10、出块节点收集交易数据,并将所述交易数据打包成块;对所述块进行第一hash签名后并广播至多个共识节点。
[0038] S20、共识节点验证签名后的块的合法性,利用门限eddsa密钥碎片对块第二hash签名,获得签名数据;
[0039] 在本发明的实施例中,所述门限eddsa为爱德华兹曲线数字签名算法,是一种数字签名方案,它使用基于扭曲爱德华兹曲线的Schnorr签名变体。它被设计为比现有的数字签名方案更快而不牺牲安全性。
[0040] 在本发明的实施例中,所述hash签名为利用哈希算法进行签名验签。哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。
[0041] 在所述S20、共识节点验证签名后的块的合法性,利用门限eddsa密钥碎片对块第二hash签名,获得签名数据,步骤之前,还包括,
[0042] 多个共识接点之间通过数字签名系统生成了对应的门限eddsa密钥碎片。如此使得各个共识接点各自都拥有密钥碎片。
[0043] 所述数字签名系统可以为ED25519。
[0044] S30、出块节点收集签名数据,且所述签名数据超过设定阈值时,利用所述收集到的签名数据生成最终签名,并将所述块和最终签名广播至用户节点;
[0045] 所述设定阈值为预设的参数。
[0046] S40、用户节点交易时利用所述最终签名生成随机数。
[0047] 具体的,S40、用户节点交易时利用所述最终签名生成随机数,包括,[0048] 利用所述最终签名作为交易中的随机数生成源生成随机数。
[0049] 本发明共识节点间先对块进行共识之后才能恢复出该块随机数,有效的防止出块节点通过操作或预知随机数从而选择交易进行作恶。
[0050] 应该理解的是,上述虽然是按照某一顺序描述的,但是这些步骤并不是必然按照上述顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,本实施例的一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0051] 在一个实施例中,参见图3所示,在本发明的实施例中还提供了基于门限eddsa的链上随机数生成装置,该装置包括出块节点100、多个共识节点200和不少于一个的用户节点300。
[0052] 所述出块节点100,用于收集交易数据,并将所述交易数据打包成块;对所述块进行第一hash签名后并广播至多个共识节点200,收集签名数据,且所述签名数据超过设定阈值时,利用所述收集到的签名数据生成最终签名,并将所述块和最终签名广播至用户节点300。
[0053] 多个所述共识节点200,分别用于验证出块节点100签名后的块的合法性,利用门限eddsa密钥碎片对块第二hash签名,获得签名数据。
[0054] 在本发明的实施例中,所述门限eddsa为爱德华兹曲线数字签名算法,是一种数字签名方案,它使用基于扭曲爱德华兹曲线的Schnorr签名变体。它被设计为比现有的数字签名方案更快而不牺牲安全性。
[0055] 在本发明的实施例中,所述hash签名为利用哈希算法进行签名验签。哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。
[0056] 在所述S20、共识节点验证签名后的块的合法性,利用门限eddsa密钥碎片对块第二hash签名,获得签名数据,步骤之前,还包括,
[0057] 多个共识接点之间通过数字签名装置生成了对应的门限eddsa密钥碎片。如此使得各个共识接点各自都拥有密钥碎片。
[0058] 所述数字签名装置可以为ED25519。
[0059] 所述用户节点300,用于交易时利用所述最终签名生成随机数。
[0060] 本发明共识节点间先对块进行共识之后才能恢复出该块随机数,有效的防止出块节点通过操作或预知随机数从而选择交易进行作恶。
[0061] 在一个实施例中,参见图3所示,在本发明的实施例中还提供了一种计算机设备,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信。
[0062] 存储器403,用于存放计算机程序;
[0063] 处理器401,用于执行存储器403上所存放的计算机程序时,执行所述的基于门限eddsa的链上随机数生成方法,该处理器执行指令时实现上述方法实施例中的步骤:
[0064] S10、出块节点收集交易数据,并将所述交易数据打包成块;对所述块进行第一hash签名后并广播至多个共识节点。
[0065] S20、共识节点验证签名后的块的合法性,利用门限eddsa密钥碎片对块第二hash签名,获得签名数据;
[0066] S30、出块节点收集签名数据,且所述签名数据超过设定阈值时,利用所述收集到的签名数据生成最终签名,并将所述块和最终签名广播至用户节点;
[0067] S40、用户节点交易时利用所述最终签名生成随机数。
[0068] 上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0069] 通信接口用于上述终端与其他设备之间的通信。
[0070] 存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non‑volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0071] 上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0072] 所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
[0073] 还应当进理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0074] 在本发明的一个实施例中还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法实施例中的步骤:
[0075] S10、出块节点收集交易数据,并将所述交易数据打包成块;对所述块进行第一hash签名后并广播至多个共识节点。
[0076] S20、共识节点验证签名后的块的合法性,利用门限eddsa密钥碎片对块第二hash签名,获得签名数据;
[0077] S30、出块节点收集签名数据,且所述签名数据超过设定阈值时,利用所述收集到的签名数据生成最终签名,并将所述块和最终签名广播至用户节点;
[0078] S40、用户节点交易时利用所述最终签名生成随机数。
[0079] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。
[0080] 应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
[0081] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。