1.本发明涉及一种节点确定区块链中背书节点的技术,尤其涉及一种节点确定方法、装置、电子设备及存储介质。
背景技术:
2.以超级账本,以太坊为代表的区块链技术,在数据共享同步等技术领域发挥了重要作用,数据共享同步的过程主要包括:背书、排序、验证、及提交交易。其中,背书过程基于背书节点,背书节点通过运行链码模拟执行交易,生成读写集,并对读写集进行签名,附加自己的身份,即为该交易进行背书。背书节点可以根据交易的模拟情况判断交易是否有效,并证明该交易已经过背书节点处理,以此可以保证交易的安全性,因此,关于背书节点的选取十分重要。
3.在数据共享同步过程中,一般设定有固定身份的背书节点,则交易的安全性高度依赖于固定节点的验证功能,但是当固定节点被攻击为恶意节点时,该固定节点可能会为无效的交易进行背书,使得交易的安全性无法得到有效保证。因此,如何对区块链中的背书节点进行选取,使数据共享同步过程中交易的安全性得到有效保证是亟待解决的技术问题。
技术实现要素:
4.本发明实施例提供了一种节点确定方法、装置、电子设备、及计算机存储介质。
5.本发明实施例提供了一种节点确定方法,所述方法应用于目标候选背书节点,所述目标候选背书节点为候选背书节点中的一个节点,所述候选背书节点为区块链中预设的背书节点;所述方法包括:
6.获取初始信息和签名信息,所述初始信息为客户端生成的交易提案和生成的第一随机数组成的信息,所述签名信息为客户端采用所述客户端的私钥对所述初始信息进行签名后的信息;
7.对所述签名信息进行验证,在所述签名信息验证通过的情况下,确定第二随机数;
8.对所述第二随机数进行哈希运算,确定所述第二随机数的哈希值;
9.确定所述哈希值中预设的数字出现的频率,在所述预设的数字出现的频率满足预设条件时,确定所述目标候选背书节点为目标背书节点。
10.上述方案中,所述预设的数字为0至9中的一个整数;所述预设条件包括:在所述预设的数字出现的频率大于预设的阈值。
11.上述方案中,所述对所述签名信息进行验证,包括:
12.获取与所述客户端的私钥对应的公钥,采用所述与所述客户端的私钥对应的公钥对所述签名信息进行解密,得到解密后的签名信息;
13.在所述解密后的签名信息与所述初始信息相同的情况下,所述签名信息验证通过。
14.上述方案中,所述在所述签名信息验证通过的情况下,确定第二随机数,包括:
15.在所述签名信息验证通过的情况下,向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证,所述其它节点包括区块链中除所述目标候选背书节点外的其它节点;
16.在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数。
17.上述方案中,所述向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证,包括:
18.根据所述第一随机数和所述目标候选背书节点的私钥,生成初始第二随机数和目标候选背书节点的证明信息;所述证明信息用于表征所述第一随机数与所述初始第二随机数的关系;
19.向其它节点发送所述目标候选背书节点的证明信息、与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,使所述其它节点根据与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,对所述目标候选背书节点的证明信息进行验证。
20.上述方案中,所述在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数,包括:
21.在接收到所述目标候选背书节点的证明信息验证通过的信息后,将所述初始第二随机数确定为第二随机数。
22.本发明实施例还提供了一种节点确定装置,所述装置应用于目标候选背书节点,所述目标候选背书节点为候选背书节点中的一个节点,所述候选背书节点为区块链中预设的背书节点;所述装置至少包括:
23.获取模块、用于获取初始信息和签名信息,所述初始信息为客户端生成的交易提案和生成的第一随机数组成的信息,所述签名信息为客户端采用所述客户端的私钥对所述初始信息进行签名后的信息;
24.验证模块,用于对所述签名信息进行验证,在所述签名信息验证通过的情况下,确定第二随机数;
25.第一确定模块、用于对所述第二随机数进行哈希运算,确定所述第二随机数的哈希值;
26.第二确定模块、用于确定所述哈希值中预设的数字出现的频率,在所述预设的数字出现的频率满足预设条件时,确定所述目标候选背书节点为目标背书节点。
27.在一种实现方式中,所述预设的数字为0至9中的一个整数;所述预设条件包括:在所述预设的数字出现的频率大于预设的阈值。
28.在一种实现方式中,所述验证模块用于对所述签名信息进行验证;其中,
29.用于获取与所述客户端的私钥对应的公钥,采用所述与所述客户端的私钥对应的公钥对所述签名信息进行解密,得到解密后的签名信息;
30.在所述解密后的签名信息与所述初始信息相同的情况下,所述签名信息验证通过。
31.在一种实现方式中,所述验证模块用于在所述签名信息验证通过的情况下,确定
第二随机数;其中,
32.用于在所述签名信息验证通过的情况下,向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证,所述其它节点包括区块链中除所述目标候选背书节点外的其它节点;
33.用于在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数。
34.在一种实现方式中,所述验证模块用于向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证;其中:
35.用于根据所述第一随机数和所述目标候选背书节点的私钥,生成初始第二随机数和目标候选背书节点的证明信息;所述证明信息用于表征所述第一随机数与所述初始第二随机数的关系;
36.用于向其它节点发送所述目标候选背书节点的证明信息、与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,使所述其它节点根据与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,对所述目标候选背书节点的证明信息进行验证。
37.在一种实现方式中,所述验证模块用于在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数;其中:
38.在接收到所述目标候选背书节点的证明信息验证通过的信息后,将所述初始第二随机数确定为第二随机数。
39.本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意一种节点确定方法。
40.本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种节点确定方法。
41.基于本发明实施例提供的一种节点确定方法、装置、电子设备、及计算机存储介质中,获取初始信息和签名信息,所述初始信息为客户端生成的交易提案和生成的第一随机数组成的信息,所述签名信息为客户端采用所述客户端的私钥对所述初始信息进行签名后的信息;对所述签名信息进行验证,在所述签名信息验证通过的情况下,确定第二随机数;对所述第二随机数进行哈希运算,确定所述第二随机数的哈希值;确定所述哈希值中预设的数字出现的频率,在所述预设的数字出现的频率满足预设条件时,确定所述目标候选背书节点为目标背书节点。可以看出,本发明实施例通过对签名信息和目标候选背书节点的证明信息的验证,生成第二随机数,根据第二随机数确定目标背书节点,能够保证区块链中背书节点选取的随机性,使得攻击者无法识别攻击的节点是否为背书节点,可以有效降低目标背书节点被攻击为恶意节点的可能性,从而提高交易过程的安全性。
42.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本技术。
附图说明
43.此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本发
明的实施例,并与说明书一起用于说明本发明的技术方案。
44.图1为本发明实施例提供的一种节点确定方法的流程示意图;
45.图2为本发明实施例提供的一种节点确定方法的一个具体实现的流程示意图;
46.图3为本发明实施例提供的一种节点确定装置的示意图;
47.图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
48.在相关技术中,在数据共享同步等技术领域可以通过共识算法,确保分布式系统中数据的一致性和安全性,在进行数据共享同步的过程中,一般包括背书、排序、验证、及提交交易等流程。其中,背书流程是基于背书节点对交易进行背书,即背书节点会验证客户端的签名信息,判断交易提案是否是由对应的客户端发出的。同时,背书节点根据链码模拟执行交易提案,生成读写集。在背书节点确定交易有效的情况下,以及对交易进行签名,保证交易的安全性。之后,排序节点对交易执行顺序进行排序,确保交易能够按照一定的顺序执行。
49.但由于在数据共享同步的过程中,交易的安全性高度依赖于部分节点的验证功能,如固定身份的背书节点,若固定身份的背书节点被攻击为恶意节点,则该节点可能会对无效的交易进行背书,这使得交易的安全性无从保证。在这种情况下,如何对区块链中的背书节点进行选取,使数据共享同步过程中交易的安全性得到有效保证,是亟待解决的技术问题。
50.针对上述技术问题,提出本公开实施例的技术方案。以下结合附图及实施例,对本发明实施例进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。
51.需要说明的是,在本发明实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
52.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
53.例如,本发明实施例提供的一种节点确定方法包含了一系列的步骤,但是本发明实施例提供的一种节点确定方法不限于所记载的步骤,同样地,本发明实施例提供的一种节点确定装置包括了一系列模块,但是本发明实施例提供的一种节点确定装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的模块。
54.本发明实施例可以基于终端和/或服务器实现,这里,终端可以是瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统,等等。服务器可以是小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
55.服务器等电子设备可以包括执行计算机指令的程序模块。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
56.本发明实施例提出了一种确定区块链中背书节点的技术方案,可以应用于针对区块链中背书节点的确定场景。
57.本发明实施例中,背书节点是指在区块链中执行背书任务的节点,即背书节点可以用于对区块链中的交易提案信息进行验证,并对验证通过的交易提案进行有效的签名,以此来证明交易提案的合法性。
58.本发明实施例中,可以根据终端和/或服务器的算力及安全性进行筛选,得到区块链中预设的背书节点,需要说明的是,预设的背书节点是指可以用于执行背书任务的节点。进一步地,将预设的背书节点作为候选背书节点,可以从候选背书节点中确定出目标背书节点,这里,目标背书节点是指在确定执行背书任务的节点。
59.本发明实施例中,目标候选背书节点是候选背书节点中的一个节点,通过对目标候选背书节点进行运算,从而确定是否将目标候选背书节点作为目标背书节点。
60.图1为本发明实施例提供的一种节点确定方法的流程示意图,如图1所示,该流程可以包括:
61.步骤101:获取初始信息和签名信息,所述初始信息为客户端生成的交易提案和生成的第一随机数组成的信息,所述签名信息为客户端采用所述客户端的私钥对所述初始信息进行签名后的信息。
62.本发明实施例中,客户端是指与服务器相对应,为客户提供服务的程序或设备。交易提案包括区块链在数据共享同步过程中,数据更新的状态,即交易数据,还包括客户端执行交易提案需要调用的方法,如查询方法、交易方法等。
63.本发明实施例中,私钥和公钥是指互相对应的一种密钥对,其中,密钥是指一种参数,具体地,是对信息进行加密或解密的过程中输入的参数。公钥为向外界公开的密钥,私钥为节点自己保留的密钥。
64.本发明实施例中,私钥和公钥是具有一一对应关系的两种不同的密钥,即在对信息进行加密和解密的过程中采用的是不同的密钥,示例性地,采用公钥加密的信息,只能通过对应的私钥进行解密,而采用私钥加密的信息,也只能通过对应的公钥进行解密。进一步地,若信息可以采用公钥进行解密,则必然是对应的私钥对信息进行加密的,同样的,若信息可以采用私钥进行解密,则必然是对应的公钥对信息进行加密的。
65.本发明实施例中,客户端采用私钥对初始信息进行加密,即对初始信息进行签名,得到签名信息。客户端将初始信息和签名信息发送至目标候选背书节点,同时,客户端启动一个计时器,可以根据已有的经验设定时间,则交易提案需要在预设的时间内完成执行任
务,若超过预设的时间,则终止交易提案。
66.步骤102:对所述签名信息进行验证,在所述签名信息验证通过的情况下,确定第二随机数。
67.本发明实施例中,目标候选背书节点获取初始信息和签名信息,以及附带的客户端的公钥。签名信息为客户端采用客户端的私钥对初始信息进行加密后得到的信息,基于私钥与公钥的对应关系,则目标候选背书节点可以根据客户端的公钥对签名信息进行解密,从而可以对签名信息进行验证。
68.本发明实施例中,目标候选背书节点根据客户端的私钥对应的公钥,对签名信息进行解密,得到解密后的签名信息。将解密后的签名信息与初始信息进行比较,在解密后的签名信息与初始信息相同的情况下,签名信息验证通过。
69.本发明实施例中,在签名信息验证通过的情况下,其它节点对目标候选背书节点的证明信息进行验证,需要说明的是,其它节点包括区块链中除目标候选背书节点外的其它节点;在签名信息验证不通过的情况下,终止交易提案。
70.本发明实施例中,目标候选背书节点在接收到目标候选背书节点的证明信息验证通过的情况下,确定第二随机数;在接收到目标候选背书节点的证明信息验证不通过的情况下,终止交易提案。
71.步骤103:对所述第二随机数进行哈希运算,确定所述第二随机数的哈希值。
72.本发明实施例中,对第二随机数进行哈希运算,即将任意长度的字符串变换为固定长度的字符串,可以得到固定长度位数的第二随机数的哈希值。其中,哈希运算可以包括sha256,sha256是对任意长度的字符串进行运算,都可以产生一个256位数的哈希值,通常以一个长度为64位的十六进制字符串来表示。
73.示例性地,一个字符串为:blockchain,对该字符串进行sha256运算,得到的哈希值为:3a6fed5fc11392b3ee9f81caf017b48640d748766a8eb0382899a605b41f2b9。
74.步骤104:确定所述哈希值中预设的数字出现的频率,在所述预设的数字出现的频率满足预设条件时,确定所述目标候选背书节点为目标背书节点。
75.本发明实施例中,可以根据已有的经验确定预设的数字,其中,预设的数字为0至9中的一个整数。
76.本发明实施例中,预设条件包括预设的数字在第二随机数的哈希值中出现的频率大于预设的阈值,其中,阈值可以根据已有的经验确定,阈值越小,目标候选背书节点确定为目标背书节点的可能性越大。
77.本发明实施例中,计算预设的数字在第二随机数的哈希值中出现的频率,在预设的数字出现的频率大于预设的阈值时,确定目标候选背书节点为目标背书节点,在预设的数字出现的频率小于或等于预设的阈值时,则目标候选背书节点不作为目标背书节点。
78.示例性地,第二随机数的哈希值为256位数的固定字符串,预设的数字为0,确定数字0在第二随机数的哈希值中出现的次数为n次,则数字0在第二随机数的哈希值中出现的频率为n/256,将n/256与预设的阈值进行比较,在n/256大于预设的阈值时,确定目标候选背书节点为目标背书节点。
79.在实际应用中,步骤101至步骤104以基于电子设备的处理器实现,上述处理器可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处
理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。
80.可以看出,本发明实施例中,基于初始信息和签名信息,采用客户端的公钥对目标候选背书节点的签名信息进行验证,在签名信息验证通过的情况下,可以确定签名信息是由客户端发出的,以及签名信息在传输的过程中没有被篡改,从而保证了初始信息的完整性,防止恶意节点伪造信息。在签名信息验证通过的情况下,对目标候选背书节点的证明信息进行验证,在目标候选背书节点的证明信息验证通过的情况下,生成第二随机数,可以有效保证第二随机数的随机性和可验证性。通过对第二随机数进行哈希运算,确定第二随机数的哈希值,在哈希值中预设数字出现的频率大于预设的阈值时,确定目标候选背书节点为目标背书节点。可以看出,本发明实施例通过对签名信息和目标候选背书节点的证明信息的验证,生成第二随机数,根据第二随机数确定目标背书节点,可以保证目标背书节点选取过程中的随机性,能够有效避免目标背书节点被攻击为恶意节点,从而提高交易过程的安全性。
81.在一些实施方式中,在所述签名信息验证通过的情况下,确定第二随机数,包括:
82.在所述签名信息验证通过的情况下,向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证,所述其它节点包括区块链中除所述目标候选背书节点外的其它节点;
83.在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数。
84.在一些实施例中,在签名信息验证通过的情况下,目标候选背书节点可以根据第一随机数和目标候选背书节点的私钥,生成初始第二随机数和目标候选背书节点的证明信息,并将生成的初始第二随机数、目标候选背书节点的证明信息、及与目标候选背书节点的私钥对应的公钥发送给其它节点。
85.在一些实施例中,其它节点可以根据初始第二随机数、目标候选背书节点的证明信息、及与目标候选背书节点的私钥对应的公钥,对目标候选背书节点的证明信息进行验证,并将验证结果发送至目标候选背书节点。
86.在一些实施例中,目标候选背书节点在接收到目标候选背书节点的证明信息验证通过的信息后,确定第二随机数;在接收到目标候选背书节点的证明信息验证不通过的信息后,终止交易提案。
87.在一些实施方式中,所述向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证,包括:
88.根据所述第一随机数和所述目标候选背书节点的私钥,生成初始第二随机数和目标候选背书节点的证明信息;所述证明信息用于表征所述第一随机数与所述初始第二随机数的关系;
89.向其它节点发送所述目标候选背书节点的证明信息、与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,使所述其它节点根据与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,对所述目标
候选背书节点的证明信息进行验证。
90.在一些实施例中,目标候选背书节点可以基于可验证随机函数(verifiable random function,vrf)算法生成第二随机数和目标候选背书节点的证明信息,同时,其它节点也可以基于vrf算法验证目标候选背书节点的证明信息。
91.需要说明的是,vrf算法是一种可以将输入的随机数映射为可验证的输出随机数的方案。对于一个特定的输入随机数,以及输入者的私钥,基于vrf算法可以生成一个输出随机数,以及一个证明信息,这里,证明信息用于表示输出随机数是根据输入随机数生成的。vrf算法具有三个函数,包括:计算输入随机数的哈希值的函数(vrf_hash)、计算证明信息的函数(vrf_proof)、以及验证函数(vrf_verify),需要说明的是,vrf_hash函数用于生成输出随机数;vrf_proof函数用于生成证明信息;vrf_verify函数用于验证输出随机数是否由输入随机数生成。
92.进一步地,vrf算法具有随机性、唯一性、及可验证性。在同一节点上,首先,对于不同的输入随机数,生成的输出随机数是随机的,且均匀分布在值域范围内,即具有随机性;其次,对于相同的输入随机数,生成的输出随机数是固定的,输出随机数与输入随机数具有唯一的对应关系,即唯一性;最后,输出随机数是根据输入随机数和输入者的私钥生成的,则可以根据输入者的公钥,验证输出随机数是否由输入随机数生成。
93.在一些实施例中,第一随机数是由客户端生成的一个随机数,目标候选背书节点将第一随机数作为vrf算法中的输入随机数,则基于vrf算法,目标候选背书节点根据第一随机数和目标候选背书节点的私钥,可以生成初始第二随机数和目标候选背书节点的证明信息。
94.示例性地,目标候选背书节点获取第一随机数input,目标候选背书节点的私钥secret key(sk),则基于vrf算法,目标候选背书节点根据input和sk,可以生成初始第二随机数output、以及目标候选背书节点的证明信息proof。具体如下所示,
95.output=vrf_hash(input,sk);
96.proof=vrf_proof(input,sk)。
97.在一些实施例中,其它节点可以基于vrf算法中的验证函数,根据与所述目标候选背书节点的私钥对应的公钥、第一随机数、及初始第二随机数,对目标候选背书节点的证明信息进行验证。
98.示例性地,其它节点获取目标候选背书节点的证明信息proof、与所述目标候选背书节点的私钥对应的公钥public key(pk)、第一随机数input、以及初始第二随机数output。则基于vrf算法中的验证函数,其它节点可以验证初始第二随机数是否由第一随机数生成。具体如下所示,
99.true/false=vrf_verify(proof,pk,input,output)
100.在vrf_verify函数返回true的情况下,表示对目标候选背书节点的证明信息的验证通过;在vrf_verify函数返回false的情况下,表示对目标候选背书节点的证明信息的验证不通过。
101.在一些实施方式中,在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数,包括:
102.在一些实施例中,目标候选背书节点接收来自其它节点对目标候选背书节点的证
明信息的验证信息,在接收到目标候选背书节点的证明信息验证通过的信息时,将初始第二随机数确定为第二随机数,需要说明的是,第二随机数是用于确定目标背书节点的随机数。
103.在一些实施例中,在确定目标候选背书节点为目标背书节点的情况下,目标背书节点执行交易提案,并执行背书任务,生成交易提案的读写集。客户端在接收到多个节点的读写集后,比较多个读写集是否一致,在一致的情况下,生成交易,并发送至排序节点,需要说明的是,读写集是背书节点根据客户端发送的交易提案,模拟该交易提案得到结果。
104.在一些实施例中,排序节点使用kafka对交易进行排序,得到排序好的交易,并将排序好的交易发送至验证节点,验证节点根据读写集验证交易的有效性,从而完成数据共享同步过程。需要说明的是,kafka用于在交易数据的规模较大时,对交易数据划分为多个分区,在每一个分区内对交易进行排序。
105.图2为本发明实施例提供的一种节点确定方法的一个具体实现的流程示意图,如图2所示,该流程可以包括:
106.步骤201:获取初始信息和签名信息。
107.本发明实施例中,初始信息为客户端生成的交易提案和生成的第一随机数组成的信息,签名信息为客户端采用客户端的私钥对初始信息进行签名得到的信息。
108.步骤202:对签名信息进行验证。
109.本发明实施例中,目标候选背书节点获取初始信息、签名信息、及与客户端的私钥对应的公钥,根据与客户端的私钥对应的公钥对签名信息进行解密,得到解密后的签名信息,从而对签名信息进行验证。在解密后的签名信息与初始信息相同的情况下,签名信息验证通过。
110.步骤203:对目标候选背书节点的证明信息进行验证,确定第二随机数。
111.本发明实施例中,在签名信息验证通过的情况下,目标候选背书节点基于vrf算法,根据第一随机数和目标候选背书节点的私钥,生成初始第二随机数和证明信息,并将生成的初始第二随机数和目标候选背书节点的证明信息,以及第一随机数和与目标候选背书节点的私钥对应的公钥发送给其它节点,使其它节点基于vrf算法中的验证函数,对目标候选背书节点的证明信息进行验证,在目标候选背书节点的证明信息进行验证通过的情况下,将初始第二随机数确定为第二随机数。
112.步骤204:根据第二随机数,确定目标背书节点。
113.本发明实施例中,对第二随机数进行哈希运算,得到第二随机数的哈希值,计算预设的数字在第二随机数的哈希值中出现的频率,这里,预设的数字为0至9中的一个整数。在所述预设的数字出现的频率大于预设的阈值时,确定目标候选背书节点为目标背书节点。
114.本发明实施例中,在确定目标候选背书节点为目标背书节点的情况下,目标背书节点完成后续数据共享同步流程,包括排序、验证、及提交交易。
115.实施例相同的技术构思,参见图3,本发明实施例提供的一种节点确定装置,所述装置应用于目标候选背书节点,所述目标候选背书节点为候选背书节点中的一个节点,所述候选背书节点为区块链中预设的背书节点;所述装置至少包括:
116.获取模块301、用于获取初始信息和签名信息,所述初始信息为客户端生成的交易提案和生成的第一随机数组成的信息,所述签名信息为客户端采用所述客户端的私钥对所
述初始信息进行签名后的信息;
117.验证模块302,用于对所述签名信息进行验证,在所述签名信息验证通过的情况下,确定第二随机数;
118.第一确定模块303、用于对所述第二随机数进行哈希运算,确定所述第二随机数的哈希值;
119.第二确定模块304、用于确定所述哈希值中预设的数字出现的频率,在所述预设的数字出现的频率满足预设条件时,确定所述目标候选背书节点为目标背书节点。
120.在一种实现方式中,所述预设的数字为0至9中的一个整数;所述预设条件包括:在所述预设的数字出现的频率大于预设的阈值。
121.在一种实现方式中,所述验证模块302,用于对所述签名信息进行验证;其中,
122.用于获取与所述客户端的私钥对应的公钥,采用所述与所述客户端的私钥对应的公钥对所述签名信息进行解密,得到解密后的签名信息;
123.在所述解密后的签名信息与所述初始信息相同的情况下,所述签名信息验证通过。
124.在一种实现方式中,所述验证模块302,用于在所述签名信息验证通过的情况下,确定第二随机数;其中,
125.用于在所述签名信息验证通过的情况下,向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证,所述其它节点包括区块链中除所述目标候选背书节点外的其它节点;
126.用于在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数。
127.在一种实现方式中,所述验证模块302,用于向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证;其中:
128.用于根据所述第一随机数和所述目标候选背书节点的私钥,生成初始第二随机数和目标候选背书节点的证明信息;所述证明信息用于表征所述第一随机数与所述初始第二随机数的关系;
129.用于向其它节点发送所述目标候选背书节点的证明信息、与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,使所述其它节点根据与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,对所述目标候选背书节点的证明信息进行验证。
130.在一种实现方式中,所述验证模块302,用于在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数;其中:
131.在接收到所述目标候选背书节点的证明信息验证通过的信息后,将所述初始第二随机数确定为第二随机数。
132.在实际应用中,获取模块301、验证模块302、第一确定模块303、第二确定模块304均可以采用主控芯片的处理器实现,上述处理器可以是asic、dsp、dspd、pld、fpga、cpu、控制器、微控制器、微处理器中的至少一种,本发明实施例对此不作限制。
133.需要说明的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本申
请方法实施例的描述而理解。
134.需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端、服务器等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制于任何特定的硬件和软件结合。
135.对应地,本发明实施例再提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令用于实现本发明实施例提供的任意一种节点确定方法。
136.相应的,本发明实施例再提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,该计算机可执行指令用于实现上述实施例提供的任意一种节点确定方法。
137.在一些实施例中,本发明实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
138.基于前述实施例相同的技术构思,参见图4本发明实施例提供的电子设备400,可以包括:存储器410和处理器420;其中,
139.存储器410,用于存储计算机程序和数据;
140.处理器420,用于执行存储器中存储的计算机程序,以实现前述实施例中的任意一种节点确定方法。
141.上文对各个实施例的描述倾向于强调各个实施例间的不同处,其相同或相似处可以互相参考,为了简洁,本文不再赘述。
142.本技术所提供的各方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
143.本技术所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
144.本技术所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
145.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,示例性地,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
146.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网格单元上;可以根据实际的可以选择其中的部分或全部单元来实现本实施例方案的目的。
147.另外,在本技术各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
148.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤。
149.以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种节点确定方法,其特征在于,应用于目标候选背书节点,所述目标候选背书节点为候选背书节点中的一个节点,所述候选背书节点为区块链中预设的背书节点;所述方法包括:获取初始信息和签名信息,所述初始信息为客户端生成的交易提案和生成的第一随机数组成的信息,所述签名信息为客户端采用所述客户端的私钥对所述初始信息进行签名后的信息;对所述签名信息进行验证,在所述签名信息验证通过的情况下,确定第二随机数;对所述第二随机数进行哈希运算,确定所述第二随机数的哈希值;确定所述哈希值中预设的数字出现的频率,在所述预设的数字出现的频率满足预设条件时,确定所述目标候选背书节点为目标背书节点。2.根据权利要求1所述的方法,其特征在于,所述预设的数字为0至9中的一个整数;所述预设条件包括:在所述预设的数字出现的频率大于预设的阈值。3.根据权利要求1所述的方法,其特征在于,所述对所述签名信息进行验证,包括:获取与所述客户端的私钥对应的公钥,采用所述与所述客户端的私钥对应的公钥对所述签名信息进行解密,得到解密后的签名信息;在所述解密后的签名信息与所述初始信息相同的情况下,所述签名信息验证通过。4.根据权利要求1所述的方法,其特征在于,所述在所述签名信息验证通过的情况下,确定第二随机数,包括:在所述签名信息验证通过的情况下,向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证,所述其它节点包括区块链中除所述目标候选背书节点外的其它节点;在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数。5.根据权利要求4所述的方法,其特征在于,所述向其它节点发送所述目标候选背书节点的证明信息,使其它节点对所述目标候选背书节点的证明信息进行验证,包括:根据所述第一随机数和所述目标候选背书节点的私钥,生成初始第二随机数和目标候选背书节点的证明信息;所述证明信息用于表征所述第一随机数与所述初始第二随机数的关系;向其它节点发送所述目标候选背书节点的证明信息、与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,使所述其它节点根据与所述目标候选背书节点的私钥对应的公钥、所述第一随机数、及所述初始第二随机数,对所述目标候选背书节点的证明信息进行验证。6.根据权利要求5所述的方法,其特征在于,所述在接收到所述目标候选背书节点的证明信息验证通过的信息后,确定第二随机数,包括:在接收到所述目标候选背书节点的证明信息验证通过的信息后,将所述初始第二随机数确定为第二随机数。7.一种节点确定装置,其特征在于,应用于目标候选背书节点,所述目标候选背书节点为候选背书节点中的一个节点,所述候选背书节点为区块链中预设的背书节点;所述装置至少包括:获取模块、用于获取初始信息和签名信息,所述初始信息为客户端生成的交易提案和
生成的第一随机数组成的信息,所述签名信息为客户端采用所述客户端的私钥对所述初始信息进行签名后的信息;验证模块,用于对所述签名信息进行验证,在所述签名信息验证通过的情况下,确定第二随机数;第一确定模块、用于对所述第二随机数进行哈希运算,确定所述第二随机数的哈希值;第二确定模块、用于确定所述哈希值中预设的数字出现的频率,在所述预设的数字出现的频率满足预设条件时,确定所述目标候选背书节点为目标背书节点。8.根据权利要求7所述的装置,其特征在于,所述预设的数字为0至9中的一个整数;所述预设条件包括:在所述预设的数字出现的频率大于预设的阈值。9.一种电子设备,其特征在于,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1-6中任一项所述的节点确定方法。10.一种存储介质,所述存储介质存储有计算机程序;其特征在于,所述计算机程序被执行后能够实现权利要求1-6中任一项所述的节点确定方法。
技术总结
本发明实施例提供了一种节点确定方法、装置、电子设备及存储介质,该方法包括:获取初始信息和签名信息,所述初始信息为客户端生成的交易提案和生成的第一随机数组成的信息,所述签名信息为客户端采用所述客户端的私钥对所述初始信息进行签名后的信息;对所述签名信息进行验证,在所述签名信息验证通过的情况下,确定第二随机数;对所述第二随机数进行哈希运算,确定所述第二随机数的哈希值;确定所述哈希值中预设的数字出现的频率,在所述预设的数字出现的频率满足预设条件时,确定所述目标候选背书节点为目标背书节点。选背书节点为目标背书节点。选背书节点为目标背书节点。
技术研发人员:向舜
受保护的技术使用者:卓尔智联(武汉)研究院有限公司
技术研发日:2021.11.10
技术公布日:2022/3/8