区块链中不同节点之间的通信方法及装置转让专利

申请号 : CN201710612562.5

文献号 : CN107294729B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田新雪马书惠

申请人 : 中国联合网络通信集团有限公司

摘要 :

本发明实施例提供一种区块链中不同节点之间的通信方法及装置。该方法包括:主节点接收用户控制点发送的申请奖励的签名消息;将申请奖励的签名消息作为生成区块的第一个消息,并将第一个消息发送给挖矿节点,以使挖矿节点对区块的第一个消息进行验证;从区块链P2P网络中获取区块的原始交易消息,并将原始交易消息发送给挖矿节点;接收挖矿节点发送的随机数,并根据随机数生成区块,并将区块发送到区块链P2P网络中。本发明实施例通过挖矿节点、主节点、用户控制点之间的通信,避免挖矿节点同时需要接收全区块链P2P网络的交易的广播消息和区块的更新,降低了挖矿节点的建设成本。

权利要求 :

1.一种区块链中不同节点之间的通信方法,其特征在于,包括:主节点接收用户控制点发送的申请奖励的签名消息;

所述主节点将所述申请奖励的签名消息作为生成区块的第一个消息,并将所述第一个消息发送给挖矿节点,以使所述挖矿节点对所述区块的第一个消息进行验证;

所述主节点从区块链P2P网络中获取所述区块的原始交易消息,并将所述原始交易消息发送给挖矿节点,以使所述挖矿节点在对所述区块的第一个消息验证成功后,根据所述区块的原始交易消息获取随机数;

所述主节点接收所述挖矿节点发送的随机数,并根据所述随机数生成所述区块,并将所述区块发送到所述区块链P2P网络中;

其中,所述主节点与所述区块链P2P网络连接,所述用户控制点与所述主节点连接,所述挖矿节点与互联网连接;

其中,所述主节点为所述用户控制点向区块链P2P网络申请的区块链节点;

所述方法还包括:

所述用户控制点根据挖矿节点的计算能力按照预设算法确定所需挖矿节点的数目,并向公有云申请免费的虚拟机或者优惠的计算资源作为挖矿节点。

2.根据权利要求1所述的方法,其特征在于,所述主节点接收用户控制点发送的申请奖励的签名消息之前,还包括:主节点接收用户控制点发送的用户的公钥;

所述主节点将所述用户的公钥发送给挖矿节点。

3.根据权利要求2所述的方法,其特征在于,所述签名消息是所述用户控制点采用用户的私钥对所述申请奖励进行签名后得到的消息。

4.根据权利要求3所述的方法,其特征在于,所述主节点接收用户控制点发送的用户的公钥之前,还包括:主节点接收用户控制点发送的所述挖矿节点的IP地址。

5.根据权利要求1-4任一项所述的方法,其特征在于,所述主节点接收所述挖矿节点发送的随机数,并根据所述随机数生成所述区块,包括:所述主节点接收所述挖矿节点发送的随机数,并根据所述随机数计算哈希值,所述哈希值小于预设哈希值;

所述主节点根据所述哈希值生成所述区块。

6.一种通信装置,其特征在于,基于主节点,包括:接收模块,用于接收用户控制点发送的申请奖励的签名消息;

发送模块,用于将所述申请奖励的签名消息作为生成区块的第一个消息,并将所述第一个消息发送给挖矿节点,以使所述挖矿节点对所述区块的第一个消息进行验证;

获取模块,用于从区块链P2P网络中获取所述区块的原始交易消息;

所述发送模块还用于将所述原始交易消息发送给挖矿节点,以使所述挖矿节点在对所述区块的第一个消息验证成功后,根据所述区块的原始交易消息获取随机数;

所述接收模块还用于接收所述挖矿节点发送的随机数;

生成模块,用于根据所述随机数生成所述区块;

所述发送模块还用于将所述区块发送到所述区块链P2P网络中;

其中,所述主节点为所述用户控制点向区块链P2P网络申请的区块链节点;

所述用户控制点根据挖矿节点的计算能力按照预设算法确定所需挖矿节点的数目,并向公有云申请免费的虚拟机或者优惠的计算资源作为挖矿节点。

7.根据权利要求6所述的通信装置,其特征在于,所述接收模块还用于接收用户控制点发送的用户的公钥;

所述发送模块还用于将所述用户的公钥发送给挖矿节点。

8.根据权利要求7所述的通信装置,其特征在于,所述签名消息是所述用户控制点采用用户的私钥对所述申请奖励进行签名后得到的消息。

9.根据权利要求8所述的通信装置,其特征在于,所述接收模块还用于接收用户控制点发送的所述挖矿节点的IP地址。

10.根据权利要求6-9任一项所述的通信装置,其特征在于,还包括:计算模块;

所述计算模块用于根据所述随机数计算哈希值,所述哈希值小于预设哈希值;

所述生成模块具体用于根据所述哈希值生成所述区块。

说明书 :

区块链中不同节点之间的通信方法及装置

技术领域

[0001] 本发明实施例涉及通信技术领域,尤其涉及一种区块链中不同节点之间的通信方法及装置。

背景技术

[0002] 比特币网络中,数据以文件的形式被永久记录,我们称之为区块。一个区块是一些或所有最新比特币交易的记录集,且未被其他先前的区块记录。每个区块包括一些或所有近期交易、前一个区块的引用、以及其他数据。
[0003] 比特币“挖矿”的实质是不断重复计算随机字符串的哈希值(一种字符串变换运算,常用于加密和数字签名)并检查结果是否满足特定的需求。比特币“挖矿”硬件走过了CPU->GPU->FPGA->ASIC四个发展阶段。目前比特币产业使用ASIC芯片完成挖矿计算。
[0004] 每个区块链中的节点都可以作为挖矿节点,但是如果挖矿节点单独行动,挖矿的效率相对很低,比如区块链中的某挖矿节点同时需要接收全区块链P2P网络的交易的广播消息和区块的更新,若挖矿节点的性能有限,那么频繁的更新就会使得计算的需求频繁的被中断,而且挖矿节点不能专心的挖矿,节点的功能设计起来又相当的复杂,造成了挖矿节点的建设成本高的问题。

发明内容

[0005] 本发明实施例提供一种区块链中不同节点之间的通信方法及装置,以降低挖矿节点的建设成本。
[0006] 本发明实施例的一个方面是提供一种区块链中不同节点之间的通信方法,包括:
[0007] 主节点接收用户控制点发送的申请奖励的签名消息;
[0008] 所述主节点将所述申请奖励的签名消息作为生成区块的第一个消息,并将所述第一个消息发送给挖矿节点,以使所述挖矿节点对所述区块的第一个消息进行验证;
[0009] 所述主节点从区块链P2P网络中获取所述区块的原始交易消息,并将所述原始交易消息发送给挖矿节点,以使所述挖矿节点在对所述区块的第一个消息验证成功后,根据所述区块的原始交易消息获取随机数;
[0010] 所述主节点接收所述挖矿节点发送的随机数,并根据所述随机数生成所述区块,并将所述区块发送到所述区块链P2P网络中;
[0011] 其中,所述主节点与所述区块链P2P网络连接,所述用户控制点与所述主节点连接,所述挖矿节点与互联网连接。
[0012] 本发明实施例的另一个方面是提供一种通信装置,包括:
[0013] 接收模块,用于接收用户控制点发送的申请奖励的签名消息;
[0014] 发送模块,用于将所述申请奖励的签名消息作为生成区块的第一个消息,并将所述第一个消息发送给挖矿节点,以使所述挖矿节点对所述区块的第一个消息进行验证;
[0015] 获取模块,用于从区块链P2P网络中获取所述区块的原始交易消息;
[0016] 所述发送模块还用于将所述原始交易消息发送给挖矿节点,以使所述挖矿节点在对所述区块的第一个消息验证成功后,根据所述区块的原始交易消息获取随机数;
[0017] 所述接收模块还用于接收所述挖矿节点发送的随机数;
[0018] 生成模块,用于根据所述随机数生成所述区块;
[0019] 所述发送模块还用于将所述区块发送到所述区块链P2P网络中。
[0020] 本发明实施例提供的区块链中不同节点之间的通信方法及装置,通过主节点接收用户控制点发送的申请奖励的签名消息,将申请奖励的签名消息作为生成区块的第一个消息,并将第一个消息发送给挖矿节点,主节点接收挖矿节点发送的随机数,并根据随机数生成区块,并将区块发送到区块链P2P网络中,通过挖矿节点、主节点、用户控制点之间的通信,避免挖矿节点同时需要接收全区块链P2P网络的交易的广播消息和区块的更新,降低了挖矿节点的建设成本。

附图说明

[0021] 图1为本发明实施例提供的区块链中不同节点之间的通信方法流程图;
[0022] 图2为为本发明实施例提供的区块链中不同节点之间的通信方法适用的网络结构图;
[0023] 图3为本发明另一实施例提供的区块链中不同节点之间的通信方法流程图;
[0024] 图4为本发明实施例提供的通信装置的结构图;
[0025] 图5为本发明另一实施例提供的通信装置的结构图。

具体实施方式

[0026] 图1为本发明实施例提供的区块链中不同节点之间的通信方法流程图。本发明实施例针对挖矿节点的建设成本高的问题,提供了区块链中不同节点之间的通信方法,该方法具体步骤如下:
[0027] 步骤S101、主节点接收用户控制点发送的申请奖励的签名消息。
[0028] 其中,所述主节点与所述区块链P2P网络连接,所述用户控制点与所述主节点连接,所述挖矿节点与互联网连接。
[0029] 如图2所示,主节点与区块链P2P网络连接,用户控制点与主节点连接,多个挖矿节点例如挖矿节点1、挖矿节点2……挖矿节点n分别与互联网INTERNET连接。
[0030] 对于同一个用户的所有挖矿节点,我们设置一个用户控制点来进行控制,同时规定一个主节点作为该用户接入区块链P2P网络的唯一的节点,其他的挖矿节点,例如挖矿节点1、挖矿节点2……挖矿节点n接入INTERNET网。下面分别介绍主节点、挖矿节点、用户控制点的功能。
[0031] 用户控制点的功能包括如下:
[0032] 1)存储用户的私钥;
[0033] 2)生成用户的公钥和私钥,然后将公钥发送给和自己同一个用户的主节点和挖矿节点;
[0034] 3)用户控制点生成申请奖励的签名消息,并将该申请奖励的签名消息发送给主节点,以供主节点收到该申请奖励的签名消息后,将该申请奖励的签名消息作为生成区块的第一个消息,然后将该区块广播到区块链P2P网络中。可选的,主节点每生成一个新区块时,用户控制点都生成一个新的申请奖励的签名消息,作为该新区块的第一个消息。
[0035] 主节点的功能包括如下:
[0036] 1)存储用户的公钥;
[0037] 2)与区块链P2P网络中的其他节点通信;
[0038] 3)与INTERNET中的本用户的所有挖矿节点通信;
[0039] 4)与用户控制点通信;
[0040] 5)根据挖矿节点发送的随机数来计算出哈希值,并生成区块(区块内容和正常的区块链的区块的格式和内容一致),然后将区块广播到区块链P2P网络中,用于抢夺记账权,该区块的第一个消息为用户控制点生成的申请奖励的签名消息;
[0041] 6)主节点负责记录账本;
[0042] 7)存储并实时更新一个挖矿节点的IP地址列表。
[0043] 挖矿节点的功能包括如下:
[0044] 1)存储用户的公钥;
[0045] 2)计算寻找合适的能够计算出低于预设哈希值的哈希值的随机数,若找到后,将该随机数发送给与自己同一个用户的主节点;
[0046] 3)从主节点获得待找到随机数的区块,该区块中交易消息是主节点从区块链P2P网络中获得的,该区块中的第一个消息是用户控制点生成的申请奖励的签名消息;
[0047] 4)存储主节点的IP地址。
[0048] 在本实施例中,用户控制点为了提升挖矿节点的效率,用户控制点可以随时根据挖矿的进展或者计算需求来选择在公有云中申请免费的虚拟机或者优惠的计算资源作为自己的挖矿节点,用户控制点根据挖矿节点的计算能力采用预先约定的算法确定出所需的挖矿节点的数目,并记录下来挖矿节点的IP地址。
[0049] 用户控制点在区块链P2P网络中申请一个自己的主节点,并记录下来主节点的IP地址。用户控制点申请到挖矿节点后,用户控制点将挖矿节点的IP地址发送给主节点,由主节点主动联系挖矿节点,也可以将主节点的IP地址发送给挖矿节点,由挖矿节点主动联系主节点。用户控制点生成用户的公钥和私钥,然后将公钥发送给和自己同一个用户的主节点和挖矿节点,用户的私钥只存储在用户控制点上。
[0050] 用户控制点生成申请奖励的签名消息,所述签名消息是所述用户控制点采用用户的私钥对所述申请奖励进行签名后得到的消息,该用户控制点将其生成的申请奖励的签名消息发送给主节点。
[0051] 步骤S102、所述主节点将所述申请奖励的签名消息作为生成区块的第一个消息,并将所述第一个消息发送给挖矿节点,以使所述挖矿节点对所述区块的第一个消息进行验证。
[0052] 所述挖矿节点对所述区块的第一个消息进行验证的具体方法为:所述挖矿节点利用本地预先存储的用户的公钥,对该第一个消息进行解密,若第一个消息是利用本用户的私钥进行加密的,那么所述挖矿节点可以利用公钥解密后的内容与未加密的部分进行对比,如果利用公钥解密后的内容与未加密的部分的内容一致,则说明该签名消息确实是由本用户的用户控制点发送的,则验证通过。
[0053] 步骤S103、所述主节点从区块链P2P网络中获取所述区块的原始交易消息,并将所述原始交易消息发送给挖矿节点,以使所述挖矿节点在对所述区块的第一个消息验证成功后,根据所述区块的原始交易消息获取随机数。
[0054] 主节点在区块链P2P网络中作为正常的区块链节点,当开始挖矿的时候,将从区块链P2P网络中获得的该区块的原始交易消息通过INTERNET网发送给挖矿节点。如果挖矿节点对所述区块的第一个消息验证成功,则根据所述区块的原始交易消息获取随机数。具体的,挖矿节点计算寻找合适的能够计算出低于预设哈希值的哈希值的随机数,若找到后,将该随机数发送给与自己同一个用户的主节点
[0055] 步骤S104、所述主节点接收所述挖矿节点发送的随机数,并根据所述随机数生成所述区块,并将所述区块发送到所述区块链P2P网络中。
[0056] 主节点在收到该随机数后,生成区块并将该区块广播在P2P网络中,并开始下一个区块的记帐权的争取。同时,将上一个区块的随机数已经被找到的消息发送给其他的挖矿节点以供他们停止目前的计算,并同时发送新的区块的原始交易消息发送给挖矿节点让他们开始寻找下一个随机数。
[0057] 本发明实施例通过主节点接收用户控制点发送的申请奖励的签名消息,将申请奖励的签名消息作为生成区块的第一个消息,并将第一个消息发送给挖矿节点,主节点接收挖矿节点发送的随机数,并根据随机数生成区块,并将区块发送到区块链P2P网络中,通过挖矿节点、主节点、用户控制点之间的通信,避免挖矿节点同时需要接收全区块链P2P网络的交易的广播消息和区块的更新,降低了挖矿节点的建设成本。
[0058] 图3为本发明另一实施例提供的区块链中不同节点之间的通信方法流程图。在上述实施例的基础上,本实施例提供的区块链中不同节点之间的通信方法的具体步骤如下:
[0059] 步骤S301、主节点接收用户控制点发送的所述挖矿节点的IP地址。
[0060] 步骤S302、主节点接收用户控制点发送的用户的公钥。
[0061] 步骤S303、所述主节点将所述用户的公钥发送给挖矿节点。
[0062] 步骤S304、主节点接收用户控制点发送的申请奖励的签名消息。
[0063] 步骤S305、所述主节点将所述申请奖励的签名消息作为生成区块的第一个消息,并将所述第一个消息发送给挖矿节点,以使所述挖矿节点对所述区块的第一个消息进行验证。
[0064] 步骤S306、所述主节点从区块链P2P网络中获取所述区块的原始交易消息,并将所述原始交易消息发送给挖矿节点,以使所述挖矿节点在对所述区块的第一个消息验证成功后,根据所述区块的原始交易消息获取随机数。
[0065] 步骤S307、所述主节点接收所述挖矿节点发送的随机数,并根据所述随机数计算哈希值,所述哈希值小于预设哈希值。
[0066] 步骤S308、所述主节点根据所述哈希值生成所述区块,并将所述区块发送到所述区块链P2P网络中。
[0067] 步骤S301-步骤S308的具体过程和上述实施例一致,此处不再赘述。
[0068] 本发明实施例通过主节点接收用户控制点发送的申请奖励的签名消息,将申请奖励的签名消息作为生成区块的第一个消息,并将第一个消息发送给挖矿节点,主节点接收挖矿节点发送的随机数,并根据随机数生成区块,并将区块发送到区块链P2P网络中,通过挖矿节点、主节点、用户控制点之间的通信,避免挖矿节点同时需要接收全区块链P2P网络的交易的广播消息和区块的更新,降低了挖矿节点的建设成本。
[0069] 图4为本发明实施例提供的通信装置的结构图。本发明实施例提供的通信装置可以执行区块链中不同节点之间的通信方法实施例提供的处理流程,该通信装置具体可以是上述实施例中的主节点。如图4所示,通信装置40包括:接收模块41、发送模块42、获取模块43、生成模块44,其中,接收模块41用于接收用户控制点发送的申请奖励的签名消息;发送模块42用于将所述申请奖励的签名消息作为生成区块的第一个消息,并将所述第一个消息发送给挖矿节点,以使所述挖矿节点对所述区块的第一个消息进行验证;获取模块43用于从区块链P2P网络中获取所述区块的原始交易消息;发送模块42还用于将所述原始交易消息发送给挖矿节点,以使所述挖矿节点在对所述区块的第一个消息验证成功后,根据所述区块的原始交易消息获取随机数;接收模块41还用于接收所述挖矿节点发送的随机数;生成模块44用于根据所述随机数生成所述区块;发送模块42还用于将所述区块发送到所述区块链P2P网络中。
[0070] 本发明实施例提供的通信装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。
[0071] 本发明实施例通过主节点接收用户控制点发送的申请奖励的签名消息,将申请奖励的签名消息作为生成区块的第一个消息,并将第一个消息发送给挖矿节点,主节点接收挖矿节点发送的随机数,并根据随机数生成区块,并将区块发送到区块链P2P网络中,通过挖矿节点、主节点、用户控制点之间的通信,避免挖矿节点同时需要接收全区块链P2P网络的交易的广播消息和区块的更新,降低了挖矿节点的建设成本。
[0072] 图5为本发明另一实施例提供的通信装置的结构图。在上述实施例的基础上,接收模块41还用于接收用户控制点发送的用户的公钥;发送模块42还用于将所述用户的公钥发送给挖矿节点。
[0073] 所述签名消息是所述用户控制点采用用户的私钥对所述申请奖励进行签名后得到的消息。
[0074] 接收模块41还用于接收用户控制点发送的所述挖矿节点的IP地址。
[0075] 通信装置40还包括:计算模块45,计算模块45用于根据所述随机数计算哈希值,所述哈希值小于预设哈希值;生成模块44具体用于根据所述哈希值生成所述区块。
[0076] 本发明实施例提供的通信装置可以具体用于执行上述图3所提供的方法实施例,具体功能此处不再赘述。
[0077] 本发明实施例通过主节点接收用户控制点发送的申请奖励的签名消息,将申请奖励的签名消息作为生成区块的第一个消息,并将第一个消息发送给挖矿节点,主节点接收挖矿节点发送的随机数,并根据随机数生成区块,并将区块发送到区块链P2P网络中,通过挖矿节点、主节点、用户控制点之间的通信,避免挖矿节点同时需要接收全区块链P2P网络的交易的广播消息和区块的更新,降低了挖矿节点的建设成本。
[0078] 综上所述,本发明实施例通过主节点接收用户控制点发送的申请奖励的签名消息,将申请奖励的签名消息作为生成区块的第一个消息,并将第一个消息发送给挖矿节点,主节点接收挖矿节点发送的随机数,并根据随机数生成区块,并将区块发送到区块链P2P网络中,通过挖矿节点、主节点、用户控制点之间的通信,避免挖矿节点同时需要接收全区块链P2P网络的交易的广播消息和区块的更新,降低了挖矿节点的建设成本。
[0079] 在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0080] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0081] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0082] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0083] 本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0084] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。