[0001] 本
申请要求在2018年8月28日提交中国
专利局、申请号为201810986825.3、
发明名称为“区块链标准应用模型及其应用方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
[0002] 本申请涉及网络交易技术领域,尤其涉及一种基于公链的区块链信息存储方法及系统。
背景技术
[0003] 区块链技术是一种去中心化的系统思想,能通过公众共识的方式,创建一个相对客观的抗抵赖数字环境。区块链技术可以保证网络信息一经发布即不可更改,例如,区块链网络中发生一笔交易,区块链网络中的
节点会在生成的区块中记载该笔交易的内容,并将区块数据进行全网广播,网络中的其他节点以同步或异步的方式存储该区块数据,形成不可更改的区块链。
[0004] 其中,所述交易具有广义性,不是指传统意义上的“商品买卖”、“物品交换”,而是指区块链网络上的某种或某个数据操作内容或操作结果,例如,在网络上某个区块链节点A发起一个某型号通信设备性能的查询
请求a,所述查询请求a对于承担查询服务的区块链节点B来说就是一笔交易。同理。节点B将查询得到的该型号通信设备的性能表b发送给节点A也是一笔交易。信息A、a和信息B、b作为交易信息会被写入区块链的数据区块中。
[0005]
区块链交易一般发生在同一个区块链网络范围内的两个节点之间。但随着区块链技术的应用,有时交易需要跨越两个或两个以上区块链网络,形成跨链交易。例如,网络N1中的节点A,向网络N2中的节点B发起的交易。由于网络N1和网络N2都是区块链网络,因此交易会产生两个类型的区块数据,分别存储在网络N1和网络N2中。为了获得完整的记账信息,交易的双方要同步区块链信息,即网络N1要获取网络N2中存储的区块链信息,并存储在网络N1的节点中。
[0006] 可见,一次跨链交易需要在网络N1存储两个区块链信息。如果网络N1上接入了多个区块链网络,为了存储多个区块链网络与网络N1发生的跨链交易,会占用网络N1中的大量存储空间。并且,由于区块链网络采用分布式存储方式,对于网络N1同步的区块链信息还需要在网络N1中进行广播,如果接入的区块链网络在一个时间段内均向网络N1发起跨链交易,会造成网络N1出现多节点大规模高并发运算,占用网络资源,进而降低节点对区块数据的验证和存储效率。
发明内容
[0007] 本申请提供了一种基于公链的区块链信息存储方法及系统,以解决传统区块链信息存储方法在跨链交易时大量占用存储空间,以及存储效率低的问题。
[0008] 第一方面,本申请提供一种基于公链的区块链信息存储方法,包括:
[0009] 提交节点周期性从接入链节点获取待同步的区块链信息;
[0010] 提交节点向公链发起带有区块链信息的同步交易,以触发公链中维护者节点执行提交合约;
[0011] 维护者节点通过提交合约的执行结果验证同步交易,以及提取区块链信息中的数据,生成
摘要信息;所述摘要信息包括接入链节点地址和交易数据标识符;
[0012] 维护者节点在公链网络内广播摘要信息;
[0013] 公链中多个存储节点分布式存储接收到的摘要信息。
[0014] 可选的,所述方法中,提交节点是桥接公链与接入链的平行链节点;
[0015] 或者,所述提交节点是在公链网络中
指定的,维护者节点以外的其他节点;
[0016] 或者,所述提交节点是在接入链网络中指定的节点。
[0017] 可选的,提交节点周期性从接入链节点获取待同步的区块链信息的步骤包括:
[0018] 接入链节点记录区块链信息中包含的跨链交易增加量;
[0019] 如果跨链交易增加量达到预设交易提交数量,向提交节点发送区块链信息。
[0020] 可选的,提交节点周期性从接入链节点获取待同步的区块链信息的步骤包括:
[0021] 接入链节点记录区块链信息中区块增加量;
[0022] 如果区块增加量达到预设区块提交数量,向提交节点发送区块链信息。
[0023] 可选的,提交节点向公链发起带有区块链信息的同步交易,触发公链中维护者节点执行提交合约的步骤后,所述方法还包括:
[0024] 提交节点生成提交通知信息,以及将提交通知信息发送至其他节点,以禁止其他节点就同样的区块链信息向公链发起同步交易;
[0025] 或者,维护者节点在接收到同步交易后,拒绝接收包含同样区块链信息的同步交易。
[0026] 可选的,护者节点通过提交合约的执行结果验证同步交易,以及提取区块链信息中的数据,生成摘要信息的步骤包括:
[0027] 维护者节点提取区块链信息,以及根据所述区块链信息确定对应接入链的属性;
[0028] 获取摘要格式表,所述摘要格式表中包括多种接入链属性以及与每种接入链属性对应的摘要提取模板;
[0029] 根据接入链属性提取所述区块链信息中的数据,按照摘要提取模板生成摘要信息。
[0030] 可选的,维护者节点在公链网络内广播摘要信息的步骤包括:
[0031] 维护者节点接收多个交易对应的摘要信息;
[0032] 维护者节点根据摘要信息创建区块数据,所述区块数据中包含多个交易对应的摘要信息;
[0033] 公链中的存储节点验证区块数据,以及在验证通过后,生成包含摘要信息的区块链信息。
[0034] 第二方面,本申请还提供一种基于公链的区块链信息存储方法,包括:
[0035] 提交节点周期性从接入链节点获取区块链信息;
[0036] 提交节点提取区块链信息生成摘要信息,所述摘要信息包括区块链信息来源的接入链地址,以及交易数据标识符;
[0037] 提交节点向公链发起带有摘要信息的同步交易,以触发公链中维护者节点执行提交合约;
[0038] 公链中维护者节点通过提交合约的执行结果验证同步交易,以及获取摘要信息;
[0039] 维护者节点在公链网络内广播摘要信息;
[0040] 公链中多个存储节点分布式存储接收到的摘要信息。
[0041] 第三方面,本申请还提供一种基于公链的区块链信息存储系统,包括公链以及接入公链网络的接入链,所述公链和接入链为P2P网络;所述公链中的部分节点配置为维护者节点和存储节点;所述公链和/或接入链中的部分节点被配置为提交节点;
[0042] 所述提交节点被进一步配置为:提交节点周期性从接入链节点获取待同步的区块链信息;提交节点向公链发起带有区块链信息的同步交易,以触发公链中维护者节点执行提交合约;
[0043] 所述维护者节点被进一步配置为:执行提交合约,通过提交合约的执行结果验证同步交易,提取区块链信息中的数据,生成摘要信息;所述摘要信息包括接入链节点地址和交易数据标识符;以及,在公链网络内广播摘要信息;
[0044] 所述存储节点被进一步配置为:分布式存储接收到的摘要信息。
[0045] 第四方面,本申请还一种基于公链的区块链信息存储系统,包括公链以及接入公链网络的接入链,所述公链和接入链为P2P网络;所述公链中的部分节点配置为维护者节点和存储节点;所述公链和/或接入链中的部分节点被配置为提交节点;
[0046] 所述提交节点被进一步配置为:周期性从接入链节点获取区块链信息;提取区块链信息生成摘要信息,所述摘要信息包括区块链信息来源的接入链地址,和交易数据标识符;以及,向公链发起带有摘要信息的同步交易,以触发公链中维护者节点执行提交合约;
[0047] 所述维护者节点被进一步配置为:执行提交合约,通过提交合约的执行结果验证同步交易,以及获取摘要信息;以及在公链网络内广播摘要信息
[0048] 所述存储节点被进一步配置为:分布式存储接收到的摘要信息。
[0049] 由以上技术方案可知,本申请提供的一种基于公链的区块链信息存储方法及系统,所述方法在实际应用中,先由提交节点周期性从接入链节点获取待同步的区块链信息,再由提交节点向公链发起带有区块链信息的同步交易,以触发公链中维护者节点执行提交合约,生成摘要信息。维护者节点在公链网络内广播摘要信息以使公链中多个存储节点存储摘要信息。所述方法中,可以通过提交节点和/或维护者节点从待同步的区块链信息中提取摘要信息,并将摘要信息存储在公链的存储节点中,减少同步数据体积,分担公链节点的
数据处理负荷,从而解决传统区块链信息存储方法在跨链交易时大量占用存储空间,以及存储效率低的问题。
附图说明
[0050] 为了更清楚地说明本申请的技术方案,下面将对
实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0051] 图1为本申请一种基于公链的区块链信息存储方法流程示意图;
[0052] 图2为本申请一种接入链节点发送区块链信息的流程示意图;
[0053] 图3为本申请另一种接入链节点发送区块链信息的流程示意图;
[0054] 图4为本申请根据摘要格式表提取摘要信息的流程示意图;
[0055] 图5为本申请维护者节点广播摘要信息的流程示意图;
[0056] 图6为本申请一种基于公链的区块链信息存储系统的结构示意图;
[0057] 图7为本申请另一种基于公链的区块链信息存储方法流程示意图。
具体实施方式
[0058] 下面将详细地对实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下实施例中描述的实施方式并不代表与本申请相一致的所有实施方式。仅是与
权利要求书中所详述的、本申请的一些方面相一致的系统和方法的示例。
[0059] 需要说明的是,在本申请提供的技术方案中,区块链网络是指具有去中心化应用架构的点对点(P2P)网络,所述区块链网络能够进行分布式存储、公共共识、数字加密、交易记账以及验证。即涵盖了分布式技术、
密码学、P2P网络架构以及各种可能被应用的共识
算法的交易平台。区块链或区块链信息是指在区块链网络中发生交易时,根据交易信息生成的记账信息,即多笔具体的交易组成一个区块,多个区块形成一条区块链。区块链网络中,包括相互建立点对点网络连接的节点,每一个节点都配置有相应的共识机制,如
智能合约,并且具有足够的运算能
力,以进行交易验证和记账程序。节点上还具有符合某种统一标准的
接口规范,以实现通过接口规范接入更多的节点或者其他类型的区块链网络。
[0060] 本申请中,公链是布置在全网的
基础网络平台,由多个公链节点组成,其每个节点带有统一的接口规范。通过节点上的接口,可以接入多个区块链网络,即接入链。如基于公链接口规范搭建的行业链、联盟链以及私有链,本申请统称为子链;以及如现有的区块链网络
比特币、以太坊等,或者,某些行业开发的行业链和联盟链,甚至是为了达到某种服务需求而搭建的私有链。这些现有区块链、行业链、联盟链以及私有链,一般不能直接相互交易甚至不能与公链网络之间相互交易,因此,本申请中可通过平行链来连接公链与其他网络。
[0061] 本申请提供的技术方案中,接入链和公链都包含多个节点。对于接入链,其节点统称为接入链节点。对于公链,按照其所具有的功能划分为:接入节点,即连接公链和接入链(或平行链)的节点;维护者节点,即参与公链中交易广播和智能合约执行,以进行数据处理和区块链生成的节点;存储节点,即公链中具有存储空间的节点。本申请在实际应用中,一个节点设备可以同时作为多个节点
角色。本申请中,提交节点是指将待同步区块链信息发送给公链的节点。
[0062] 本申请需要在公链中存储的区块链信息,是由公链参与的跨链交易产生。实际应用中,公链参与的跨链交易可以包括:接入链与公链之间发生的交易,例如查询交易、接入交易以及同步交易等。因此,对于这种交易,需要在公链和接入链中同时存储交易对应的区块链信息。
[0063] 公链参与的跨链交易还包括由公链进行中继或转发的交易,即,接入公链中的区块链网络在一次交易中,一个接入链作为交易的发起方(交易发起链),一个交易链作为交易的目标方(交易目标链),例如,交易发起链需要通过支付一种类型的证通,利用交易目标链查询某个网络设备中的设备性能。对于这种交易,交易发起链网络不能直接与交易目标链之间进行交易,需要通过公链进行交易信息的传递。因此,其本质过程是,交易目标链先与公链发生交易,以使公链将交易内容进行传递,公链再与交易目标链发生交易,以将交易内容传递给交易目标链。即,在整个交易过程中,公链先后参与了接收交易和传递交易两个流程,这种交易也需要在公链网络内存储对应的区块链信息。
[0064] 由以上内容可知,为了获得完整的不可更改账本数据,公链除了存储自己的区块链信息外,还可以用于存储相应跨链交易的摘要信息,即交易摘要。通过格式化的交易数据记录跨链交易的相关内容。所存储的摘要信息可以仅记载部分能够回溯到具体交易区块链信息的内容。例如,由于跨链交易也在参与交易的接入链中进行了存储,因此,要回溯到包含具体交易信息的区块链信息,摘要信息中应至少包含接入链的地址,以便确认接入链。还应至少包括描述交易信息的标识符,如,交易信息在第几个区块中,交易信息在区块中的
位置等。
[0065] 在本申请提供的技术方案中,还可以进一步将摘要信息中的交易标识符转化为占用存储量更小的字符串形式,并且通过相应具体的数值代表指代的交易信息的含义。例如,存储摘要信息的一种可行的方案是:摘要信息格式为:H+A+S+I+T。其中,H代表头部,用于表明该摘要的类型,可以是2位字符,即255种可能性;A用于标识接入链信息的索引值,因为接入链在公链中都会有对应的投票和登记记录,所以无需记录详细信息,只需要一个索引值即可;S:区块序列号,不固定长度;I代表交易序号;T代表尾部,可以通过一个字符表明摘要结束。上述摘要信息格式中,A,S,I可使用TLV的方式进行存储,即:TAG+LENGTH+VALUE的方式,既有足够的灵活性,也有相应的扩展性。因此,相对于整个区块来说,其需要占用的存储空间大大减小,从而避免大量占用公链的存储空间。
[0066] 另外,为了减少对公链节点上存储空间的占用,公链在记录某些信息时,还可以通过特定的压缩算法记录第三方区块链信息。示例地,在公链中形成和存储的区块数据可以包括以下内容:区块标识(如序号、时间戳、区块hash值以及前区块hash值)、区块归属(即区块生成者)、区块其他信息(如随机值、难度值以及附加信息等)、区块权重、信息摘要(如交易树、状态树、收据树以及数据树等)、交易
费用、奖励、大小等。
[0067] 在本申请一个可行的实施例中,如图1所示,本申请提供的一种基于公链的区块链信息存储方法,包括以下步骤:
[0068] S11:提交节点周期性从接入链节点获取待同步的区块链信息。
[0069] 本申请提供的技术方案中,待同步的区块链信息是指由于接入链与公链之间具有交易而产生的区块链数据。即,在实际应用中,接入链中的节点会向公链发起一个跨链交易,或者公链中的节点向接入链发起一个跨链交易。在发起跨链交易时,作为交易发起方的节点会将交易信息写入一个区块,并将该区块在所处的区块链网络中进行广播,进而使区块链网络中的其他节点在接收到该区块后,同步或异步地对区块进行验证,存储以形成区块链。
[0070] 可见,在本申请提供的技术方案中,如果是接入链节点向公链发起跨链交易,则先在接入链中形成区块链信息,因此公链可以从接入链获取形成的区块链信息,以完成区块链信息的同步,也可以根据跨链交易再从公链网络中进行广播、验证和存储,以形成包含同样交易内容的区块链。由于接入链也是区块链网络,因此包含跨链交易信息的区块链无论存储在接入链还是公链节点中,其都具有不可更改性,即具有抗抵赖效果,因此,为了减少区块链数据占用空间,可以选择同步区块链信息的方式在公链中存储区块链信息。
[0071] 而如果跨链交易是由公链向接入链发起的,则区块链信息在公链中生成。同样,接入链可以从公链中获得待同步的区块链信息,即在本申请中,所述信息存储方法不仅可以应用于公链网络中的节点,而且可以应用于接入链网络中的节点。需要说明的是,由于接入链可以是接入公链网络的第三方区块链网络,因此接入链网络中的节点可能难以从公链获取待同步的区块链信息。因此,在本申请中,可以进一步通过平行链桥接的方式使接入链能够通过公链中的区块链信息。
[0072] 在本申请提供的技术方案中,所述提交节点是公链网络或接入链网络中作为区块链信息提交角色的节点。在实际应用中,提交节点可以参与接入链网络中的区块链验证和存储过程,并且在提交节点中也形成一个完整的区块链。进一步地,本申请还可以通过以下方式确定提交节点:
[0073] 第一种方案中,提交节点是桥接公链与接入链的平行链节点。本实施例中,向公链发送区块链信息的操作可以由平行链节点来完成。所述平行链是一种能够将公链和接入链进行桥接的区块链,平行链可以在接入链接入公链的过程中,由接入链或公链上的部分节点构成。平行链节点被配置具有接入链的全部功能,并存储接入链上的全部信息。在实际应用中,当公链与接入链建立连接关系后,平行链节点即起到桥接的作用。本申请中所述桥接作用是指,平行链能够在公链和接入链之间建立数据通信,以及能够将任一方发起的交易传递给对方。通过平行链中的节点作为提交节点,可以直接利用平行链的桥接作用,保证获取的区块链数据可以直接被读取。
[0074] 第二种方案中,所述提交节点是在公链网络中指定的,维护者节点以外的其他节点。对于第二种方案,通过提交节点获取待同步区块链数据,需要先在公链网络中指定哪些节点作为提交节点,实际应用中,可以对一个接入链指定一个对应的提交节点,也可以为多个提交节点对应多个接入链,以充分调用节点的运算能力。本实施例中,提交节点应选取公链中维护者节点以外的其他节点,以避免占用公链维护者节点的运算能力。在实际应用时,在公链与接入链保持统一的接口规范时,最适宜采用所述第二种方案。
[0075] 第三种方案中,所述提交节点是在接入链网络中指定的节点。对于第三种方案,接入链中所有参与区块链信息生成的节点,都可以作为提交节点。即接入链中节点在进行交易过程中,交易进行验证、存储,形成区块链信息。当达到提交条件时,提交节点直接从自己的存储空间中调用区块链信息,以发送给公链网络。将接入链节点作为提交节点,能够在接入链中生成了包含跨链交易的区块链信息后,即向公链同步区块链信息,避免出现信息遗漏的问题。
[0076] 本申请提供的技术方案中,提交节点周期性从接入链节点获取待同步的区块链信息可以是公链发布指令主动从接入链中获取,也可以是接入链发布指令像公链主动发送。进一步地,为了确定何时进行区块链信息的同步操作,即提交节点在怎样的条件下从接入链节点获取待同步的区块链信息,如图2所示,所述提交节点周期性从接入链节点获取待同步的区块链信息的步骤还包括:
[0077] S111:接入链节点记录区块链信息中包含的跨链交易增加量;
[0078] S112:如果跨链交易增加量达到预设交易提交数量,向提交节点发送区块链信息。
[0079] 即在本实施例中,可通过接入链节点记录在上一次获取区块链信息后,所述区块链上的跨链交易增加量,并在跨链交易的增加量达到预设的交易提交数量后,向提交节点发送当前所存储的区块链信息。例如,接入链生成的区块链信息中,前一次提交时包含的跨链交易量为1360个,并且设定预设交易提交数量为60个,则接入链节点通过分析区块链信息中的交易信息,实时记录当前区块链信息中包含的跨链交易数量,如果当前区块链信息中的跨链交易量达到1420时,确定跨链交易增加量为60个,达到了预设交易提交数量,则接入链节点向提交节点发送当前区块链信息。
[0080] 本实施例中,还可以通过接入链节点将其记录的跨链交易的增加量实时上报给提交节点,再由提交节点判断跨链交易增加量是否达到了预设交易提交数量。需要说明的是,由于在接入链网络中,只要发生交易即可生成相应的区块链,因此接入链节点中存储的区块链信息中,会同时包含接入链以内的交易和跨链交易。而对于公链而言,接入链以内的交易由于没有公链参与,因此不需要对这部分区块链信息进行同步。使得在本实施例中,接入链节点还可以对区块链数据中的交易是否为跨链交易进行判断,从而只记录跨链交易的增加量。
[0081] 在本申请的另一个实施例中,如图3所示,提交节点周期性从接入链节点获取待同步的区块链信息的步骤还包括:
[0082] S113:接入链节点记录区块链信息中区块增加量;
[0083] S114:如果区块增加量达到预设区块提交数量,向提交节点发送区块链信息。
[0084] 在实际应用中,接入链节点可以对区块链上的区块序号进行记录,从而确定相对于前一次获取区块链信息,所增加的区块数量。并且,当区块增加量达到预设区块提交数量以后,向提交节点发送区块链信息。例如,接入链节点在前一次向公链同步区块链信息时,区块链中共包含100个区块,预设区块提交数量为10个,则接入链节点记录区块链信息中,包含的区块数量,当区块链中的区块数达到110个时,确定区块增加量到预设区块提交数量,则向提交节点发送区块链信息。通过对区块链数据中的区块的增加量进行判断,可以保证数据传输的完整性,并且无需接入链节点对区块链信息进行再次提取,节省接入链节点的运算能力。
[0085] 需要说明的是,由于在实际应用中,区块链的生成依赖于多个节点对交易或区块的验证。而多个节点在不同的网络环境位置中,造成节点不能同时接受到广播的交易信息或区块,进而使得区块链上,越接近刚刚生成的区块,错误率越高。因此,在本实施例中,可以设定区块链信息上传的区块序号提前一定数量。例如,当区块数量增加到110个时,向提交节点发送包含到第109个区块的区块链信息,以保证区块链信息的准确性。
[0086] 另外,在本申请提供的技术方案中,还可以设置区块链信息的同步时间,即,提交节点周期性从接入链节点获取待同步的区块链信息的步骤包括:接入链节点记录距离上一次区块链信息提交的时间;如果时间达到预设提交时间,向提交节点发送区块链信息。例如,接入链节点每隔30min向提交节点发送一次区块链信息。这种通过设置同步时间周期性获取区块链信息的方式程序设置最简单,也最容易部署到不同的接入链中。
[0087] S12:提交节点向公链发起带有区块链信息的同步交易,以触发公链中维护者节点执行提交合约。
[0088] 本申请提供的技术方案中,提交节点在接收到区块链信息后,可以向公链发起同步交易。其中,同步交易是带有待同步区块链信息的交易,为了与其他交易进行区块区别,可以将同步交易设置为一个特殊约定的交易,例如,由指定的提交节点发起,或者带有特定的交易标识信息,能够触发提交合约的交易。
[0089] 实际应用中,提交节点向公链发起同步交易也采用区块链网络跨链交易的形式,即提交节点根据同步交易生成区块数据,并在提交节点所处的区块链网络中对该区块数据进行广播。由于本申请中提交节点可以是来源于不同网络中的节点,因此,如果提交节点来源于公链网络,则直接在公链中广播同步交易对应的区块数据。相应的提交节点与向公链发起的同步交易即成为公链内部的交易,显然,这种方式可将同步交易作为公链内部的交易,区块数据的广播、验证和存储最便捷,但需要占用至少一个公链中的节点作为同步交易的发起方。因此,为了节省公链中节点的运算能力,提交节点宜选择公链中维护者节点以外的其他节点。
[0090] 如果提交节点来源于接入链网络,则需要作为提交节点的接入链节点向公链发起一个跨链交易。即交易节点生成的区块数据要在接入链网络中先广播一次以形成区块链。再通过接入链与公链之间连接的节点将生成的区块数据再传递到公链网络,以便在公链网络中再一次进行广播,以致公链中的维护者节点可以接收到该区块数据并进行后续的同步交易。这种方式可以最大限度的节省公链网络中节点上的运算能力。但由于公链网络还要存储同步交易所产生的区块链,因此,会稍微多占用一些公链网络的存储空间。进一步地,为了减少公链网络存储空间的占用,可以在进行同步交易时,仅在接入链中进行广播、验证和存储,而在公链中不存储同步交易产生的区块链。
[0091] 对于提交节点来源于平行链网络的情况,由于平行链本身即是公链或者接入链中的部分节点,因此其发起交易的方式与上述两种情况相同。本申请提供的技术方案中,如果从发起同步交易的角度看,优先选择提交节点是公链节点的方式。
[0092] 实际应用中,为了适应不同规模的接入链和公链网络,接入链节点可以是多个,但为了避免提交节点出现高并发运算,本申请中仅需要一个提交节点获取相应的区块链信息即可。因此,在本申请的部分实施例中,提交节点向公链发起带有区块链信息的同步交易,以触发公链中维护者节点执行提交合约的步骤后,所述方法还包括:
[0093] 提交节点生成提交通知信息,以及将提交通知信息发送至其他节点,以禁止其他节点就同样的区块链信息向公链发起同步交易。即在本实施例中,提交节点在获取到接入链节点的区块链信息后,生成一个提交通知信息,这个提交信息可以广播的形式发送给接入链和/或各个提交节点。并且,提交信息可以在实际应用中,带有与所同步的区块链信息相应的提示文本,或直接带有控制指令。以使其他节点能够判断当前同步的区块链信息,并且禁止就同样的区块链信息向公链发起同步交易,避免重复同步造成数据的高并发处理。
[0094] 为了避免数据的高并发处理,还可以通过公链中的维护者节点在接收到同步交易后,拒绝接收包含同样区块链信息的同步交易的方式实现。实际应用中,维护者节点在接收到同步交易后可以在一段时间内,拒绝接收通过提交合约发起的交易。显然,在公链中接入多个接入链时,不能单纯的通过时间判断是否接收同步交易,还应该分析接收到的交易是否来源于同一个接入链,或者同步交易中是否包含相同的区块链信息。可见,通过同步交易拒绝接收包含同样区块链信息的同步交易,可以保证在后续摘要信息的提取和广播针对一个区块链信息执行一次即可完成同步,避免出现重复同步的问题。
[0095] 本申请提供的技术方案中,优选提交节点生成提交通知信息的方式,来避免数据的高并发运算。一方面,其他节点在接收到提交通知信息后,可以不用再获取或分析区块链信息,可以节省其他节点的运算能力,而且可以避免在接入链与公链之间频繁发生交易;另一方面,由于其他节点接收到提交通知信息后不再发起同步交易,因此公链维护者节点不必对大部分同步交易进行分析判断,进一步节省维护者节点的运算能力。
[0096] S13:维护者节点通过提交合约的执行结果验证同步交易,以及提取区块链信息中的数据,生成摘要信息;所述摘要信息包括接入链节点地址和交易数据标识符。
[0097] 维护者节点在接收到同步交易后,先对同步交易进行验证。在本申请中,维护者节点进行的验证的内容,可以包括两个方面,一方面公链维护者节点对同步交易产生的区块数据进行验证,与一般交易相同,对区块数据进行验证包括对区块数据的HASH值进行解密,获取相应的交易内容信息,即同步的区块链信息内容;另一方面公链维护者节点对同步交易还包括合法性等验证,即确定同步交易是否来源于合法的接入链节点,以及同步的区块链信息是否已被同步。本申请中,维护者节点可以根据提交合约的执行结果来验证同步交易。即只有同步交易才能够触发提交合约的执行,进而保证维护者节点能够识别出同步交易,以便区分其他类型的交易,在后续步骤执行同步操作。
[0098] 在维护者节点验证同步交易以后,需要在区块链信息中提取与跨链交易有关的数据。例如,跨链交易的发起链地址,即产生区块链数据的接入链地址;以及跨链交易体现在区块链信息中的位置数据等。并根据提取的数据生成摘要信息。本申请提供的技术方案中,摘要信息可以作为一种记录文本,摘要信息的生成方式也应趋向于尽量简单的方式,如生成记录文本数据,或者通过数字代替具体的交易信息等,避免过多的消耗公链中维护者节点的运算能力。
[0099] 可见,摘要信息可以去除相应的区块链数据格式,不必同步相应的hash值、加密算法以及前后区块序号、具体的交易内容信息等大部分数据,只保留能够回溯到原始区块链信息中的描述信息。因此,生成的摘要信息在体积上要远小于原区块链信息中记载的数据体积,可以大大节省公链网络的存储空间。
[0100] 进一步地,如图4所示,维护者节点通过提交合约的执行结果验证同步交易,以及提取区块链信息中的数据,生成摘要信息的步骤包括:
[0101] S131:维护者节点提取区块链信息,以及根据所述区块链信息确定对应接入链的属性;
[0102] S132:获取摘要格式表,所述摘要格式表中包括多种接入链属性以及与每种接入链属性对应的摘要提取模板;
[0103] S133:根据接入链属性提取所述区块链信息中的数据,按照摘要提取模板生成摘要信息。
[0104] 本实施例中,维护者节点可以先在接收到同步交易中提取区块链信息,并且从区块链信息中确定接入链的属性。所述接入链的属性,不仅包括接入链来源于哪个接入链网络,即接入链网络的地址信息,而且包括接入链相对与公链网络所具有性质,如接入链是否为与公链具有相同接口规范的子链网络,或者接入链是否为接入公链的第三方区块链网络,或者接入链与公链网络之间是否具有平行链等。另外,接入链的属性还可以包括接入链具有的功能,或者具体的应用场景,如金融、交易、
银行、贸易等不同的应用场景。
[0105] 在确定了接入链的属性后,可以通过获取摘要格式表确定要生成的摘要信息的具体类型,即不同的接入链可以生成不同形式的摘要信息。在摘要格式表中,可以包括接入公链网络的所有接入链的属性,每种接入链属性对应一个摘要提取模板。或者一部分接入链属性对应一个摘要提取模板,另一部分摘要属性对应另一个摘要提取模板。
[0106] 例如,对于接入链是与公链具有相同接口规范的子链网络,对应的摘要提取模板包括提取接入链的值信息和交易在区块链数据中的位置信息;而对于接入链是需要通过平行链才能接入公链的第三方区块链网络,对应的摘要提取模板中包括提取接入链的值信息、交易在区块链数据中的位置信息以及对应的平行链(或平行链节点)地址信息,以便通过摘要信息回溯到原始区块链信息时,能够通过平行链进行桥接,以便顺利获取到对应的原始区块链信息。本实施例中,摘要提取模板可以存储在公链维护者节点的
存储器内,以便直接获取对应的模板,加快模板的获取速度。摘要提取模板也可以存储在公链中的存储节点中,当需要生成摘要信息中,维护者节点再通过向存储节点发送对应的指令,获取对应的模板,以避免占用维护者节点的存储空间。
[0107] 在获取摘要提取模板以后,本实施例可根据接入链属性提取所述区块链信息中的数据,并且按照摘要提取模板生成摘要信息。从而根据不同类型的接入链属性,生成不同形式的摘要信息。需要说明的是,生成的摘要信息可以直接以一行或一段字符串的方式在公链网络中进行存储。
[0108] S14:维护者节点在公链网络内广播摘要信息。
[0109] 公链中的维护者节点在生成摘要信息后,可先在维护者节点中进行存储,再将生成的摘要信息进行广播,使公链网络中具有存储功能的节点接收到改摘要信息。具体地,维护者节点可以在公链网络中广播一个包含摘要信息的执行指令,控制公链网络中所有存储节点都接收该执行指令。维护者节点也可以先将摘要信息发送给临近的存储节点,使接收到该摘要信息的存储节点先进行存储,再将该摘要信息继续广播至已存储摘要信息的临近节点,这样依次将生成的摘要信息进行依次传递,即完成全网广播。需要说明的是,实际应用中,可以一个跨链交易就对应生成一个摘要信息,也可以一个摘要信息对应多个跨链交易,从而进一步节省维护者节点的运算能力。
[0110] 进一步地,如图5所示,维护者节点在公链网络内广播摘要信息的步骤包括:
[0111] S141:维护者节点接收多个交易对应的摘要信息;
[0112] S142:维护者节点根据摘要信息创建区块数据,所述区块数据中包含多个交易对应的摘要信息;
[0113] S143:公链中的存储节点验证区块数据,以及在验证通过后,生成包含摘要信息的区块链信息。
[0114] 本实施例中,存储的摘要信息可以随着公链网络中的区块链生成过程一同被写入区块链中,从而形成不可更改的公链区块链信息。因此,在实际应用中,在广播摘要信息后,接收到该摘要信息的维护者节点可以根据摘要信息创建区块数据,以通过验证后形成区块链,并且由存储节点存储对应的区块链。实际应用中,通过公链网络中的分布式存储方式,一方面可以适应对应的存储节点存储方式,另一方面可以在公链网络中形成不可更改的区块链信息,从而避免部分节点
修改摘要信息,保证同步信息的真实性。
[0115] S15:公链中多个存储节点分布式存储接收到的摘要信息。
[0116] 本申请提供的技术方案中,通过多个存储节点可以同步对摘要信息进行存储,避免节点变化,如部分节点设备失效,影响数据的存储。同时,由于多个存储节点都需要对摘要信息进行存储,也进一步保证了该摘要信息的不可更改性。
[0117] 另外,在本申请提供的技术方案中,为了存储和验证方便,对于具有足够存储空间的公链维护者节点,可以承担存储节点的工作内容。即公链中的部分节点既作为公链维护者节点,又作为存储节点,从而使多个公链维护者节点在验证广播的摘要信息后,直接将摘要信息写入区块链。
[0118] 基于上述区块链信息的存储方法,如图6所示,本申请还提供一种基于公链的区块链信息存储系统,包括公链以及接入公链网络的接入链。其中,所述公链和接入链为P2P网络;所述公链中的部分节点配置为维护者节点和存储节点;所述公链和/或接入链中的部分节点被配置为提交节点;
[0119] 所述提交节点被进一步配置为:提交节点周期性从接入链节点获取待同步的区块链信息;提交节点向公链发起带有区块链信息的同步交易,以触发公链中维护者节点执行提交合约;
[0120] 所述维护者节点被进一步配置为:执行提交合约,通过提交合约的执行结果验证同步交易,提取区块链信息中的数据,生成摘要信息;所述摘要信息包括接入链节点地址和交易数据标识符;以及,在公链网络内广播摘要信息;
[0121] 所述存储节点被进一步配置为:分布式存储接收到的摘要信息。
[0122] 由以上技术方案可知,在本申请中上述可行的实施例中,所述存储方法先由提交节点周期性从接入链节点获取待同步的区块链信息,再由提交节点向公链发起带有区块链信息的同步交易,以触发公链中维护者节点执行提交合约,并且由维护者节点对同步交易中的数据进行提取,生成摘要信息。维护者节点在公链网络内广播摘要信息以使公链中多个存储节点存储摘要信息。所述方法中,通过维护者节点从待同步的区块链信息中提取摘要信息,并将摘要信息存储在公链的存储节点中,减少同步数据体积,分担公链节点的数据处理负荷,从而解决传统区块链信息存储方法在跨链交易时大量占用存储空间,以及存储效率低的问题。
[0123] 在本申请另一个可行的实施例中,还提供一种基于公链的区块链信息存储方法,如图7所示,所述方法包括以下步骤:
[0124] S21:提交节点周期性从接入链节点获取区块链信息;
[0125] S22:提交节点提取区块链信息生成摘要信息,所述摘要信息包括区块链信息来源的接入链地址,以及交易数据标识符;
[0126] S23:提交节点向公链发起带有摘要信息的同步交易,以触发公链中维护者节点执行提交合约;
[0127] S24:公链中维护者节点通过提交合约的执行结果验证同步交易,以及获取摘要信息;
[0128] S25:维护者节点在公链网络内广播摘要信息;
[0129] S26:公链中多个存储节点分布式存储接收到的摘要信息。
[0130] 由以上步骤可知,本实施例与上述实施例的区别在于,在本实施例中,从待同步区块链信息中提取摘要信息由提交节点完成。即,提交节点在周期性从接入链节点获取区块链信息后,对每次获取的区块链信息进行数据提取,从而生成摘要信息。而公链中的维护者节点只接收同步交易,并且通过执行提交合约将摘要信息在公链网络中进行广播。同样,在本实施例中,提交节点可以内置相应的摘要提取模板,使得提交节点在提取数据时,可以按照摘要提取模板提取数据和生成摘要信息。
[0131] 本实施例中,通过提交节点提取区块链信息中的数据和生成摘要信息,可以通过调用提交节点分担工作,来减轻公链维护者节点的工作负荷,减少公链中维护者节点的数据处理量。使得公链中的维护者节点可以仅执行提交合约以及广播摘要信息,提高摘要信息的存储效率。并且,不必在维护者节点中存储相应的摘要提取模板等数据,进一步减少对公链存储空间的需求。
[0132] 基于上述信息存储方法,本申请还提供一种基于公链的区块链信息存储系统,包括公链以及接入公链网络的接入链。其中,所述公链和接入链为P2P网络;所述公链中的部分节点配置为维护者节点和存储节点;所述公链和/或接入链中的部分节点被配置为提交节点;
[0133] 所述提交节点被进一步配置为:周期性从接入链节点获取区块链信息;提取区块链信息生成摘要信息,所述摘要信息包括区块链信息来源的接入链地址,和交易数据标识符;以及,向公链发起带有摘要信息的同步交易,以触发公链中维护者节点执行提交合约;
[0134] 所述维护者节点被进一步配置为:执行提交合约,通过提交合约的执行结果验证同步交易,以及获取摘要信息;以及在公链网络内广播摘要信息
[0135] 所述存储节点被进一步配置为:分布式存储接收到的摘要信息。
[0136] 由以上技术方案可知,本实施例提供的信息存储方法在实际应用中,先由提交节点周期性从接入链节点获取区块链信息。提交节点再提取区块链信息生成摘要信息,并且向公链发起带有摘要信息的同步交易,以触发公链中维护者节点执行提交合。维护者节点通过提交合约的执行结果验证同步交易,以及获取摘要信息。再将摘要信息在公链网络内广播以使公链内的存储节点分布式存储接收到的摘要信息。所述方法通过提交节点从待同步的区块链信息中提取摘要信息,并将摘要信息以同步交易的形式发送维护者节点,以存储在存储节点中,可以减少同步数据的体积,进一步分担公链节点的数据处理负荷,从而解决传统区块链信息存储方法在跨链交易时大量占用存储空间,以及存储效率低的问题。
[0137] 本申请提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本申请总的构思下的几个示例,并不构成本申请保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本申请方案所扩展出的任何其他实施方式都属于本申请的保护范围。