区块链数据上传方法、系统、计算机系统及存储介质
技术领域
本发明涉及计算机技术领域,特别是涉及一种区块链数据上传方法、系统、计算机系统及存储介质。
背景技术
在区块链数据权限分项系统中,只能提供到一级机构,即主机构的上传和授权读取数据。例如银行只允许总行向区块链中传输数据,不允许分行直接向区块链传输数据。传统技术中分行的数据需要先汇总到总行,然后总行通过总行所对应的二级节点将数据上传至区块链。这样导致所有的数据都汇总到总行,总行上传数据的压力较大。
发明内容
基于此,有必要针对上述主机构上传数据压力大的问题,提供一种区块链数据上传方法、系统、计算机系统及存储介质。
一种区块链数据上传方法,所述方法包括:
子机构节点群接收子机构发送的数据上传请求;
所述子机构节点群根据所述数据上传请求查找所述子机构节点群中的处于空闲状态的节点;
所述子机构节点群通过所述处于空闲状态的节点接收所述子机构上传的数据,并将所接收的数据上传至区块链临时存储区;
与所述子机构对应的主机构的主机构节点从所述临时存储区下载所述子机构上传的数据后,将所下载的数据上传至区块链数据存储区。
在其中一个实施例中,所述子机构节点群根据所述数据上传请求查找所述子机构节点群中的处于空闲状态的节点的步骤,包括:
所述子机构节点群根据所述数据上传请求查找所述子机构节点群中的处于正常工作状态的节点;
所述子机构节点群按照预设顺序遍历所获取的处于正常工作状态的节点;
若当前所遍历的处于正常工作状态的节点正在数据上传,则所述子机构节点群按照预设顺序继续遍历下一处于正常工作状态的节点,直至所遍历的处于正常工作状态的节点处于空闲状态,则获取处于空闲状态的节点。
在其中一个实施例中,所述将所接收的数据上传至区块链临时存储区的步骤之前,还包括:
所述子机构节点群通过第一密钥对所述子机构上传的数据进行加密,所述第一密钥是根据所述主机构节点提供的第一密钥关键码所生成。
在其中一个实施例中,所述方法还包括:
所述子机构节点群生成第一随机数;
所述子机构节点群向与所述子机构对应的主机构的主机构节点发送密钥计算请求;
所述子机构节点群接收所述主机构节点根据所述密钥计算请求按照预先约定的基点生成的第一密钥关键码;
所述子机构节点群通过所述第一随机数以及所述第一密钥关键码生成第一密钥。
在其中一个实施例中,所述与所述子机构对应的主机构的主机构节点从所述临时存储区下载所述子机构上传的数据后,将所下载的数据上传至区块链数据存储区的步骤,包括:
与所述子机构对应的主机构的主机构节点检测区块链临时存储区是否存在子机构节点群上传的新增数据;
当所述区块链临时存储区存在新增数据时,则所述主机构节点从所述区块链临时存储区下载所述新增数据;
所述主机构节点将所述新增数据上传至区块链数据存储区。
在其中一个实施例中,所述主机构节点将所述新增数据上传至区块链数据存储区的步骤之前,还包括:
所述主机构节点通过第二密钥对所述新增数据进行解密,所述第二密钥是根据子机构节点群所提供的第二密钥关键码所生成。
在其中一个实施例中,所述方法还包括:
所述主机构节点接收所述节点群发送的密钥计算请求,所述密钥计算请求中携带有所述子机构节点群根据预先约定的基点生成的第二密钥关键码;
所述主机构节点生成第二随机数;
所述主机构节点根据所述第二密钥关键码以及所述第二随机数生成第二密钥。
一种区块链数据上传系统,所述系统包括:
子机构节点群,用于接收子机构发送的数据上传请求;根据所述数据上传请求查找所述子机构节点群中的处于空闲状态的节点;通过所述处于空闲状态的节点接收所述子机构上传的数据,并将所接收的数据上传至区块链临时存储区;
与所述子机构对应的主机构的主机构节点,用于从所述临时存储区下载所述子机构上传的数据后,将所下载的数据上传至区块链数据存储区。
一种计算机系统,包括子机构节点群和与子机构对应的主机构的主机构节点;
所述子机构节点群包括多个节点,所述多个节点包括第一存储器、第一处理器以及存储在所述第一存储器上并可在所述第一处理器上运行的计算机程序,所述第一处理器执行所述计算机程序时实现以下步骤:接收子机构发送的数据上传请求;根据所述数据上传请求查找所述子机构节点群中的处于空闲状态的节点;通过所述处于空闲状态的节点接收所述子机构上传的数据,并将所接收的数据上传至区块链临时存储区;
与子机构对应的主机构的主机构节点包括第二处理器、第二存储器以及存储在所述第二存储器上并可在所述第二处理器上运行的计算机程序,所述第二处理器执行所述计算机程序时实现以下步骤:从所述临时存储区下载所述子机构上传的数据后,将所下载的数据上传至区块链数据存储区。
一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。
上述的区块链数据上传方法、系统、计算机系统及存储介质,通过所部署节点群中的节点来接收子机构上传的数据,并将子机构上传的数据存储在区块链临时存储区,以便于与子机构对应的主机构的主机构节点可以将存储在临时存储区中的数据上传至区块链数据存储区,完成数据的上传,不需要人工将数据全部汇总的主机构,减少了主机构的压力。
附图说明
图1为一实施例中区块链数据上传方法的应用环境图;
图2为一实施例中区块链数据上传方法的流程图;
图3为一实施例中数据加密步骤的流程图;
图4为图2所示实施例中的步骤S208的流程图;
图5为一实施例中计算机系统的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
在详细说明根据本发明的实施例前,应该注意到的是,所述的实施例主要在于区块链数据上传方法、装置、计算机设备及可读存储介质相关的步骤和系统组件的组合。因此,所述的系统组件和方法步骤已经在附图中通过常规符号在适当的位置表示出来了,并且只示出了与理解本发明的实施例有关的细节,以免因对于得益于本发明的本领域普通技术人员而言显而易见的那些细节模糊了本发明的公开内容。
在本文中,诸如左和右,上和下,前和后,第一和第二之类的关系术语仅仅用来区分一个实体或动作与另一个实体或动作,而不一定要求或暗示这种实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包含”或任何其他变体旨在涵盖非排他性的包含,由此使得包括一系列要素的过程、方法、物品或者设备不仅包含这些要素,而且还包含没有明确列出的其他要素,或者为这种过程、方法、物品或者设备所固有的要素。
参阅图1,图1为一实施例中区块链数据上传方法的应用环境图,其中包括子机构、与子机构对应的子机构节点群、主机构、与主机构对应的主机构节点以及区块链。其中区块链被划分为区块链临时存储区和区块链数据存储区,区块链临时存储区用于存储子机构通过节点群上传的数据,区块链数据存储区用于存储通过节点上传的数据,包括主机构节点从区块链临时存储区下载后再上传至区块链数据存储区的数据,以及主机构通过主机构节点上传的数据。
具体地,主机构为公司等组织的主机构,子机构为公司等组织的分支机构。例如银行的总行为主机构,则分行即为子机构。公司的总公司为主机构,则分公司或子公司为子机构等。其中子机构的数据可以通过子机构节点群上传至区块链临时存储区,而不再需要人工将数据汇集到主机构后,由主机构通过主机构节点上传至区块链,这样可以减少主机构的压力,以及线下人工的操作,提高数据上传至区块链的效率。
子机构节点群包括若干个服务器,该若干个服务器可以是分布式部署或集中部署,通过该若干服务器可以实现子机构的数据上传,主机构节点即为一服务器,通过该主机构节点,主机构可以将数据上传至区块链数据存储区。
请参阅图2,在其中一个实施例中,提供一种区块链数据上传方法,该方法具体包括如下步骤:
S202:子机构节点群接收子机构发送的数据上传请求。
具体地,子机构在经营过程中会产生各种数据,需要上传至区块链,以便于对数据进行统一的管理。例如子机构可以定时向区块链上传数据,例如每天、每周或每月向区块链上传一次数据。或者子机构可以根据数据量定量向区块链上传数据,例如当数据量达到预设数量条时,例如一千条、两千条、五百条等,则向区块链上传数据。子机构在上传数据时,首先向子机构节点群发送数据上传请求,以便于子机构节点群为该子机构分配相应的节点完成数据上传。
S204:子机构节点群根据数据上传请求查找子机构节点群中的处于空闲状态的节点。
具体地,子机构节点群接收到该数据上传请求后,查询子机构节点群中处于空闲状态的节点。其中节点群中可以预设一分配节点,用于根据子机构节点群中各个节点的状态以及数据上传请求,为子机构本次数据上传分配节点。空闲状态的节点是指当前未进行数据上传的节点。
S206:子机构节点群通过处于空闲状态的节点接收子机构上传的数据,并将所接收的数据上传至区块链临时存储区。
具体地,子机构节点群获取到处于空闲状态的节点后,则通过该处于空闲状态的节点接收子机构上传的数据。其中子机构可以与子机构节点群预先约定数据加密的方式,子机构在上传数据之前可以对数据进行加密,当子机构节点群中处于空闲状态的节点接收到该加密的数据时,则可以根据与预先约定的加密方式对应的解密方式进行解密,以获取子机构上传的数据的明文,然后将该明文上传至区块链临时存储区。
S208:与子机构对应的主机构的主机构节点从临时存储区下载子机构上传的数据后,将所下载的数据上传至区块链数据存储区。
具体地,子机构将数据上传到子机构节点群后,子机构节点群将该子机构上传的数据再上传到区块链临时存储区,这样与子机构对应的主机构的主机构节点可以从该临时存储区获取到数据,并上传至区块链数据存储区,以完成子机构的数据的上传。
上述的区块链数据上传方法,通过所部署节点群中的节点来接收子机构上传的数据,并将子机构上传的数据存储在区块链临时存储区,以便于与子机构对应的主机构的主机构节点可以将存储在临时存储区中的数据上传至区块链数据存储区,完成数据的上传,不需要人工将数据全部汇总的主机构,减少了主机构的压力。
在其中一个实施例中,子机构节点群根据数据上传请求查找子机构节点群中的处于空闲状态的节点的步骤,包括子机构节点群根据数据上传请求查找子机构节点群中的处于正常工作状态的节点;子机构节点群按照预设顺序遍历所查找的处于正常工作状态的节点;若当前所遍历的处于正常工作状态的节点正在数据上传,则子机构节点群按照预设顺序继续遍历下一处于正常工作状态的节点,直至所遍历的处于正常工作状态的节点处于空闲状态,则获取处于空闲状态的节点。
具体地,当子机构节点群接收到子机构的数据上传请求时,可以根据负载均衡算法获取到处于空闲状态的节点,该负载均衡算法可以是依序round robin轮询算法。子机构节点群中的节点根据自身的状态设置权值来判断节点是否处于正常工作状态,例如当节点开机时,则权值不为0,表示节点处于正常工作状态,并通知节点群中的分配节点;当节点关机时,则权值置0,表示节点未处于正常工作状态,并通知节点群中的分配节点;或者根据节点的种类来设置节点的权值,例如分配节点其权值一直为0,表示其不参与子机构数据的直接上传,而节点群中的其他节点则根据是否关机来设置自身的权值;再或者可以根据节点群中的节点是否故障来设置节点群中的节点的权值,例如节点群中的节点可以检测各个硬件和软件是否正常运行来判断节点群中的节点自身是否故障,若节点群中的节点故障则其权值置0,并通知分配节点,否则其权值可以根据是否关机来进行设置。例如当节点群中的节点的权值为0时,则表示节点群中的节点不可用也不可被调度,即节点群中的节点不处于正常工作状态,当节点群中的节点的权值不为0时,则表示节点群中的节点处于正常工作状态,可以被使用或被调度。这样可以首先根据节点群中的节点的权值来将节点群中的故障节点或维护系统的节点切出服务。
当获取到子机构节点群中处于正常工作状态的节点后,则需要遍历该正常工作状态的节点是否处于空闲状态。例如可以预先设置节点的顺序,假设节点群中存在节点A、节点B、节点C以及节点D四个节点,则可以首先将该四个节点进行排序为节点A、节点B、节点C以及节点D;然后按照该顺序依次遍历该节点A、节点B、节点C以及节点D,假设节点A不处于空闲状态,即节点A正在上传数据,则需要继续遍历节点B,当节点B处于空闲状态时,则直接通过节点B来接收子机构上传的数据,并将该子机构上传的数据上传至区块链临时存储区。或者假设节点B故障,则分配节点直接按照原先顺序遍历节点A、节点C以及节点D,直至所遍历的节点处于空闲状态,则通过该处于空闲状态的节点接收子机构上传的数据,并将该子机构上传的数据上传至区块链临时存储区。
上述实施例中,当接收到子机构发送的数据上传请求后,根据该上传请求获取到节点群中处于空闲状态的节点,使得子机构上传数据可以及时地进行,且节点群中涉及多个节点,这样不会形成数据上传中心,使得数据上传分散进行,提高数据上传的流利性。
在其中一个实施例中,将所接收的数据上传至区块链临时存储区的步骤之前,还包括子机构节点群通过第一密钥对子机构上传的数据进行加密,第一密钥是根据所述主机构节点提供的第一密钥关键码所生成。例如子机构节点群可以预先与主机构节点约定密钥计算方式,以便于主机构节点和子机构节点群所计算的密钥相对应,即主机构节点为子机构节点群提供第一密钥关键码,子机构节点群为主机构节点提供第二密钥关键码,从而主机构节点根据第二密钥关键码生成第二密钥,子机构节点群根据第一密钥关键码生成第一密钥,这样当子机构节点群通过第一密钥加密的子机构上传的数据被主机构节点下载后,主机构节点才可以对所下载的加密的数据通过第二密钥进行解密以得到数据明文,并将该数据明文加密后传输至区块链数据存储区。
该实施例中,子机构节点群与主机构节点计算获得相对应的密钥,即子机构节点群计算得到第一密钥,主机构节点计算得到与第一密钥相对应的密钥,这样当子机构节点群通过第一密钥加密的子机构上传的数据被主机构节点下载后,主机构节点才可以对所下载的加密的数据进行解密以得到数据明文,并将该数据明文加密后传输至区块链数据存储区,使得数据在传输过程中更加安全。
参阅图3,图3为一实施例中数据第一密钥生成步骤的流程图,该第一密钥生成步骤可以是在图2所示实施例中的步骤S208之前进行,即在将子机构上传的数据上传至区块链临时存储区之前,首先进行该第一密钥生成步骤,通过该第一密钥生成步骤获取第一密钥后,通过该第一密钥对数据进行加密。该第一密钥生成步骤可以包括:
S302:子机构节点群生成第一随机数。
S304:子机构节点群向与子机构对应的主机构的主机构节点发送密钥计算请求。
具体地,在子机构节点群选取到处于空闲状态的节点接收子机构上传的数据时,该被选取的空闲的节点或者分配节点可以生成第一随机数m,然后根据该第一随机数m生成第一密钥计算请求并发送至主机构节点,以便于与主机构节点基于密钥交换协议计算密钥,该密钥交换协议可以是一共享曲线参数,该共享曲线参数可以包括椭圆曲线、阶以及基点。其中,每一子机构与主机构的共享曲线均不同,例如主机构A下设置有子机构A1、子机构A2以及子机构A3,主机构B下这只有子机构B1、子机构B2以及子机构B3,则主机构A与子机构A1之间可以设置有第一共享曲线参数,主机构A与子机构A2之间可以设置有第二共享曲线参数,主机构A与子机构A3之间可以设置有第三共享曲线参数,主机构B与子机构B1之间可以设置第四共享曲线参数,主机构B与子机构B2之间可以设置有第五共享曲线参数,主机构B与子机构B3之间可以设置有第六共享曲线参数,从而各个子机构与主机构之间的共享曲线参数均不同,且该共享曲线参数可以预先存储在子机构节点群以及主机构节点中的安全硬件中,以防止被不法分子盗用。
被选取的空闲的节点或者分配节点可以根据第一随机数m以及基点G生成第二密钥关键码M=m×G,且根据子机构发送的数据上传请求获取子机构的标识,根据子机构的标识获取到与子机构对应的主机构,例如可以通过查询节点群中存储的子机构与主机构的对应关系表等方式获取到与子机构对应的主机构,并将该第二密钥关键码M发送至与子机构对应的主机构的主机构节点。
S306:子机构节点群接收主机构节点根据密钥计算请求按照预先约定的基点生成的第一密钥关键码。
具体地,当主机构节点获取到密钥计算请求后,首先根据子机构的标识获取到预设的共享曲线参数,即基点G,然后生成第二随机数n,并根据该第二随机数与基点G生成第一密钥关键码N=n×G,并将所生成的第一密钥关键码反馈至子机构节点群,以便于子机构节点群根据该第一密钥关键码生成相应的密钥,且主机构节点同时可以根据节点群发送的第二密钥关键码M生成对应的第二密钥,例如Q’=n×M。
S308:子机构节点群通过第一随机数以及第一密钥关键码生成第一密钥。
具体地,当子机构节点群接收到主机构节点生成的第一密钥关键码N后,则根据第一密钥关键码和第一随机数生成第一密钥,具体地Q=m×N。这样由于第二密钥Q’=n×M=n×m×G=m×n×G=m×N=Q,使得第一密钥和第二密钥在不需要主机构节点与子机构节点群共享任何秘密的情况下即可以计算出同一密钥。且M的传递是可以公开的,即使攻击者获取到M,由于椭圆曲线的离散问题是对数问题,该对数问题是难题,一般不易被破解,所以攻击者是无法根据M和G计算的到m,从而密钥可以是不需要主机构节点与子机构节点群共享任何秘密的情况下即可以计算出同一密钥,增加了保密性,且不会给主机构节点带来较大的计算量,以及泄露主机构节点中存在的数据。
具体地,在计算出第一密钥后,则对子机构上传的数据通过第一密钥进行加密后上传至区块链临时存储区,从而主机构节点可以从该区块链临时存储区下载已加密的数据,然后根据所计算的第二密钥对其进行解密后上传至区块链数据存储区。
上述实施例中,子机构节点群与主机构节点子无须共享任何秘密的情况下即可以计算出一共同的密钥,且通过该密钥将数据上传至区块链临时存储区,可以保证数据在上传过程中的安全性,且只有了解密钥的主机构节点才可以下载使用该数据,防止了其他不法分子获取数据后进行使用。
请参阅图4,在其中一个实施例中,图4为图2所示实施例的步骤S208的流程图,该步骤S208,即与子机构对应的主机构的主机构节点从临时存储区下载子机构上传的数据后,将所下载的数据上传至区块链数据存储区的步骤,可以包括:
S402:与所述子机构对应的主机构的主机构节点检测区块链临时存储区是否存在子机构通过节点群上传的新增数据。
具体地,子机构可以通过子机构节点群上传数据至区块链临时存储区,然后主机构节点可以定期检测区块链临时存储区是否存在新增数据,当存在新增数据时,则将该部分新增数据上传至区块链数据存储区,从而可以使得其他用户根据权限来获取该些数据,实现区块链数据共享的作用。
S404:当区块链临时存储区存在新增数据时,则主机构节点从区块链临时存储区下载新增数据。
具体地,当区块链临时存储区存在新增数据时,即表示子机构上传了部分数据,则主机构节点从区块链临时存储区下载该部分新增的数据至主机构节点,然后将该部分数据上传至区块链数据存储区,由于该部分数据已经上传过区块链,因此第二次上传的时候,速度会更加迅速。区块链临时存储区可以通过设置标志位的方式来表示区块链临时存储区是否存在新增数据,例如每当区块链临时存储区中的数据发生变化时,则重置该标志位,从而主机构节点可以根据该区块链临时存储区的标志位来判断区块链临时存储区是否存在新增数据,如果存在,则下载该新增数据至主机构节点。
S406:主机构节点将新增数据上传至区块链数据存储区。
具体地,在主机构节点下载该新增数据后,可以将该数据按照与区块链数据存储区的约定的加密解密方式进行加密,例如先对该新增数据进行加密后再传输到区块链数据存储区,这样其他用户需要使用该数据时,则可以根据与区块链约定的解密方式进行解密,以便于对数据进行处理等。
此外,主机构在上传数据的时候,可以基于主机构和节点之间约定的加密关系将主机构的数据进行加密后发送到主机构节点,然后主机构节点解密得到明文,再根据与区块链约定的加密方式进行加密后上传至区块链数据存储区,以实现主机构数据的上传。
上述实施例中,通过所部署节点群中的节点来接收子机构上传的数据,并将子机构上传的数据存储在区块链临时存储区,以便于与子机构对应的主机构的主机构节点可以将存储在临时存储区中的数据上传至区块链数据存储区,完成数据的上传,不需要人工将数据全部汇总的主机构,减少了主机构的压力,且主机构节点仅在检测到区块链临时存储区中出现了新增数据时,才会从临时存储区下载数据,并上传到区块链数据存储区,而不需要每次均将区块链临时存储区中的数据全部下载到主机构节点,减少了数据的传输量。
在其中一个实施例中,主机构节点将所述新增数据上传至区块链数据存储区的步骤之前,还包括主机构节点通过第二密钥对新增数据进行解密,第二密钥是根据子机构节点群所提供的第二密钥关键码所生成。例如子机构节点群可以预先与主机构节点约定密钥计算方式,以便于主机构节点和子机构节点群所计算的密钥相对应,即主机构节点为子机构节点群提供第一密钥关键码,子机构节点群为主机构节点提供第二密钥关键码,从而主机构节点根据第二密钥关键码生成第二密钥,子机构节点群根据第一密钥关键码生成第一密钥,从而第一密钥与第二密钥相对应,这样当子机构节点群通过第一密钥加密的子机构上传的数据被主机构节点下载后,主机构节点才可以根据第二密钥对所下载的加密的数据进行解密以得到数据明文,并将该数据明文加密后传输至区块链数据存储区。
该实施例中,子机构节点群计算获得第一密钥,主机构节点计算得到第二密钥,第一密钥与第二密钥相对应,这样当子机构节点群通过第一密钥加密的子机构上传的数据被主机构节点下载后,主机构节点才可以通过第二密钥对所下载的加密的数据进行解密以得到数据明文,并将该数据明文加密后传输至区块链数据存储区,使得数据在传输过程中更加安全。在其中一个实施例中,该方法还可以包括一第二密钥生成的步骤,该第二密钥生成步骤可以包括:主机构节点接收子机构节点群发送的密钥计算请求,密钥计算请求中携带有子机构节点群根据预先约定的基点生成的第二密钥关键码;主机构节点生成第二随机数;主机构节点根据第二密钥关键码以及第二随机数生成第二密钥。从而该主机构节点将新增数据上传至区块链数据存储区的步骤之前,还可以包括通过第二密钥对从新增数据进行解密。
具体地,子机构节点群和各个主机构节点中存储有共享曲线参数,例如第一主机构节点中存储有第一共享曲线参数,第二主机构节点中存储有第二共享曲线参数,而子机构节点群中存储有所有的共享曲线参数,每一共享曲线参数包括椭圆曲线E,阶N以及基点G。子机构节点群首先获取与主机构节点对应的基点G,然后根据基点G生成第二密钥关键码,即M=m×G,并将该第二密钥关键码发送给主机构节点,主机构节点根据自身存储的基点G生成第一密钥关键码N=n×G,并将该第一密钥关键码发送给子机构节点群,其中m和n为随机数。子机构节点群接收到该第一密钥关键码后,计算密钥Q=m×N,主机构节点接收到第二密钥关键码后计算密钥Q’=n×M,根据交换律和结合律Q=Q’。其中M的传递可以公开,即攻击者可以获取M。由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过M、G计算出m。从而交换双方可以在不共享任何秘密的情况下协商出一个密钥。
上述实施例,子机构节点群与主机构节点子无须共享任何秘密的情况下即可以计算出一共同的密钥,且通过该密钥将数据上传至区块链临时存储区,可以保证数据在上传过程中的安全性,且只有了解密钥的主机构节点才可以下载使用该数据,防止了其他不法分子获取数据后进行使用。
请继续参阅图1,在其中一个实施例中,区块链数据上传系统包括子机构节点群和主机构节点,其中主机构节点群用于接收子机构发送的数据上传请求;根据数据上传请求查找子机构节点群中的处于空闲状态的节点;通过处于空闲状态的节点接收子机构上传的数据,并将所接收的数据上传至区块链临时存储区。
与子机构对应的主机构的主机构节点,用于从临时存储区下载所述子机构上传的数据后,将所下载的数据上传至区块链数据存储区。
在其中一个实施例中,子机构节点群根据数据上传请求查找子机构节点群中的处于空闲状态的节点的步骤,包括:子机构节点群根据数据上传请求查找子机构节点群中的处于正常工作状态的节点;子机构节点群按照预设顺序遍历所查找的处于正常工作状态的节点;若当前所遍历的处于正常工作状态的节点正在数据上传,则子机构节点群按照预设顺序继续遍历下一处于正常工作状态的节点,直至所遍历的处于正常工作状态的节点处于空闲状态,则获取处于空闲状态的节点。
在其中一个实施例中,子机构节点群还用于在将所接收的数据上传至区块链临时存储区的步骤之前,通过第一密钥对子机构上传的数据进行加密,第一密钥是根据主机构节点提供的关键码所生成。
在其中一个实施例中,子机构节点群还用于生成第一随机数;向与所述子机构对应的主机构的主机构节点发送密钥计算请求;并接收主机构节点根据密钥计算请求按照预先约定的基点生成的第一密钥关键码;子机构节点群通过第一随机数以及第一密钥关键码生成第一密钥。
在其中一个实施例中,与子机构对应的主机构的主机构节点还用于检测区块链临时存储区是否存在子机构节点群上传的新增数据;当区块链临时存储区存在新增数据时,则主机构节点从区块链临时存储区下载新增数据;主机构节点将新增数据上传至区块链数据存储区。
在其中一个实施例中,主机构节点还用于在将所述新增数据上传至区块链数据存储区之前,通过第二密钥对新增数据进行解密,第二密钥是根据子机构节点群所提供的第二密钥关键码所生成。
在其中一个实施例中,主机构节点还用于接收节点群发送的密钥计算请求,密钥计算请求中携带有子机构节点群根据预先约定的基点生成的第二密钥关键码;主机构节点生成第二随机数;主机构节点根据第二密钥关键码以及第二随机数生成第二密钥。
上述关于区块链数据上传系统的具体限定可以参见上文中对于区块链数据上传方法的具体限定,在此不在赘述。
上述区块链数据上传系统可以实现为一种计算机程序的形式,计算机程序可以在如图5所示的计算机系统上运行。
本发明实施例提出了一种计算机系统,该计算机系统包括一系列存储于存储器上的计算机程序,当计算机程序被处理器执行时,可以实现本发明各个实施例提出的区块链数据上传方法,在一些实施例中,基于该计算机程序各部分所实现的特定的操作。参阅图5,提供一种计算机系统,该计算机系统包括子机构节点群和与子机构对应的主机构的主机构节点,其内部结构可对应于图5所示的结构,其中该子机构节点群中包括多个节点,该多个节点包括通过系统总线连接的第一存储器、第一处理器、第一操作系统,其中,该第一处理器用于提供计算和控制能力,支撑整个子机构节点群的运行。第一存储器用于存储数据、程序代码等。该主机构节点包括通过系统总线连接的第二存储器、第二处理器、第二操作系统,其中,该第二处理器用于提供计算和控制能力,支撑整个主机构节点的运行。第二存储器用于存储数据、程序代码等。
该第一存储器和第二存储器上存储至少一个计算机可执行程序,该计算机可执行程序可被第一处理器或第二处理器执行,以实现本申请各实施例中提供的区块链数据上传方法。内存储器为非易失性存储介质中的操作系统、数据库和计算机可执行程序提供高速缓存的运行环境。
其中,第一处理器执行程序时实现以下步骤:接收子机构发送的数据上传请求;根据数据上传请求查找子机构节点群中的处于空闲状态的节点;通过处于空闲状态的节点接收子机构上传的数据,并将所接收的数据上传至区块链临时存储区。
该第二处理器执行计算机程序时实现以下步骤:从临时存储区下载子机构上传的数据后,将所下载的数据上传至区块链数据存储区。
在其中一个实施例中,该第一处理器执行程序时实现的根据数据上传请求查找子机构节点群中的处于空闲状态的节点的步骤,包括:根据数据上传请求查找子机构节点群中的处于正常工作状态的节点;按照预设顺序遍历所查找的处于正常工作状态的节点;若当前所遍历的处于正常工作状态的节点正在数据上传,则按照预设顺序继续遍历下一处于正常工作状态的节点,直至所遍历的处于正常工作状态的节点处于空闲状态,则获取处于空闲状态的节点。
在其中一个实施例中,该第一处理器在执行程序时实现的将所接收的数据上传至区块链临时存储区的步骤之前,还包括:通过第一密钥对子机构上传的数据进行加密,第一密钥是根据主机构节点提供的关键码所生成。
在其中一个实施例中,该第一处理器在执行程序时,还用于实现以下步骤:生成第一随机数;向与子机构对应的主机构的主机构节点发送密钥计算请求;接收主机构节点根据密钥计算请求按照预先约定的基点生成的第一密钥关键码;通过第一随机数以及第一密钥关键码生成第一密钥。
在其中一个实施例中,该第二处理器在执行计算机程序时所实现的从所述临时存储区下载所述子机构上传的数据后,将所下载的数据上传至区块链数据存储区的步骤,包括:检测区块链临时存储区是否存在子机构节点群上传的新增数据;当区块链临时存储区存在新增数据时,则从区块链临时存储区下载新增数据;将新增数据上传至区块链数据存储区。
在其中一个实施例中,该第二处理器在执行程序时所实现的将新增数据上传至区块链数据存储区的步骤之前,还包括:通过第二密钥对新增数据进行解密,第二密钥是根据子机构节点群所提供的第二密钥关键码所生成。
在其中一个实施例中,该第二处理器在执行程序时还实现以下步骤:接收节点群发送的密钥计算请求,所述密钥计算请求中携带有子机构节点群根据预先约定的基点生成的第二密钥关键码;生成第二随机数;根据第二密钥关键码以及第二随机数生成第二密钥。
上述对于计算机系统的限定可以参见上文中对于区块链数据上传方法的具体限定,在此不再赘述。
请继续参阅图5,还提供一种计算机可读存储介质,其上存储有计算机程序,如图5中所示的非易失性存储介质,其中,该程序被第一处理器执行时实现以下步骤:接收子机构发送的数据上传请求;根据数据上传请求查找子机构节点群中的处于空闲状态的节点;通过处于空闲状态的节点接收子机构上传的数据,并将所接收的数据上传至区块链临时存储区。
该程序被第二处理器执行时实现以下步骤:从临时存储区下载子机构上传的数据后,将所下载的数据上传至区块链数据存储区。
在其中一个实施例中,该程序被第一处理器执行时实现根据数据上传请求查找子机构节点群中的处于空闲状态的节点的步骤,包括:根据数据上传请求查找子机构节点群中的处于正常工作状态的节点;按照预设顺序遍历所查找的处于正常工作状态的节点;若当前所遍历的处于正常工作状态的节点正在数据上传,则按照预设顺序继续遍历下一处于正常工作状态的节点,直至所遍历的处于正常工作状态的节点处于空闲状态,则获取处于空闲状态的节点。
在其中一个实施例中,该程序被第一处理器执行时实现的将所接收的数据上传至区块链临时存储区的步骤之前,还包括:通过第一密钥对子机构上传的数据进行加密,第一密钥是根据主机构节点提供的关键码所生成。
在其中一个实施例中,该程序被第一处理器执行时实现还用于实现以下步骤:生成第一随机数;向与子机构对应的主机构的主机构节点发送密钥计算请求;接收主机构节点根据密钥计算请求按照预先约定的基点生成的第一密钥关键码;通过第一随机数以及第一密钥关键码生成第一密钥。
在其中一个实施例中,该程序被第二处理器执行时实现的从所述临时存储区下载所述子机构上传的数据后,将所下载的数据上传至区块链数据存储区的步骤,包括:检测区块链临时存储区是否存在子机构节点群上传的新增数据;当区块链临时存储区存在新增数据时,则从区块链临时存储区下载新增数据;将新增数据上传至区块链数据存储区。
在其中一个实施例中,该程序被第二处理器执行时实现的将新增数据上传至区块链数据存储区的步骤之前,还包括:通过第二密钥对新增数据进行解密,第二密钥是根据子机构节点群所提供的第二密钥关键码所生成。
在其中一个实施例中,该程序被第二处理器执行时实现还实现以下步骤:接收节点群发送的密钥计算请求,所述密钥计算请求中携带有子机构节点群根据预先约定的基点生成的第二密钥关键码;生成第二随机数;根据第二密钥关键码以及第二随机数生成第二密钥。
上述对于计算机可读存储介质的限定可以参见上文中对于区块链数据上传方法的具体限定,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。