一种区块链系统的扩容方法、区块链系统、终端设备及存储
介质
技术领域
本发明涉及区块链技术领域,尤其涉及一种区块链系统的扩容方法、区块链系统、终端设备及存储介质。
背景技术
公共区块链平台今天面临的最大问题之一就是可扩展性。所有主流的平台都在努力提高每秒的交易量。事实上,当今的公共以太坊网络和比特币网络平均每秒可以处理7-10笔交易。这一数字远低于像Visa这样的集中支付处理器,后者平均每秒能处理约8000笔交易。
缓慢的交易处理造成了一个主要问题,因为大量的未完成交易阻塞了网络,使得那些诸如实时支付这样的应用程序很难在区块链上一展身手。随着确认支付的时间拉长,最终就会给用户带来诸多不便;这也是为什么像PayPal和Visa这样的信用卡支付方式仍然更具吸引力的主要原因之一。随着更多更复杂的DApps开始依赖于相同的一个区块链网络,迟缓的交易速度所导致的问题只会变得更加复杂。
从技术角度来看,所有区块链的共识协议都有一个具有挑战性的限制:网络中的每一个完全参与的节点都必须要验证每一笔交易,并且这些节点必须和它的其他节点保持一致,这是区块链技术的组成部分,它通过创建分布式的账本来保证区块链的安全。
在大多数像比特币和以太坊这样的区块链上,节点都是由公众进行运行的。虽然去中心化的共识机制提供了一些重要的优势,比如容错性、安全性、政治中立和真实性,但是这种验证链的方法是以降低可扩展性为代价的。当这些公共区块链变得更大时,它将需要越来越多的处理能力来验证这些公共区块链,这可能会在这些区块链的网络中造成瓶颈,从而减慢那些创建新应用程序的速度。
因此目前区块链平台发展过程中面临的最大问题之一就是可扩展性,考虑到当前区块链的局限性最明显的问题就是有限的吞吐量,而且随着业务种类的不断增加数据不再局限于资产价值方向,相应的,对平台的处理能力势必有更高的要求。
鉴于上述原因,有必要提出一种新的区块链系统的扩容方法。
发明内容
本发明的主要目的在于提供一种区块链系统的扩容方法、区块链系统、终端设备及计算机可读存储介质,旨在实现区块链的快速扩展,针对实际需要实时扩容,既保证不同业务对区块链平台的性能要求,也不会造成资源浪费。
为实现上述目的,本发明提供的一种区块链系统的扩容方法,所述区块链系统包括主链,所述主链中存储有子链模板库,所述方法包括如下步骤:
步骤S10,检测是否存在触发创建子链模板的预设条件;
步骤S20,在存在触发创建子链模板的预设条件时,查询主链内的子链模板库内是否存储有符合预设要求的子链模板;
步骤S30,在子链模板库中未存储符合预设要求的子链模板时,根据预设要求创建对应的子链模板,并更新子链模板库;
步骤S40,根据子链模板库提供的子链模型创建子链。
优选地,所述步骤S40之后包括:
步骤S50,创建的子链通过网络公示给所有节点,
步骤S60,在其他节点选择加入该子链时,则将该对应的节点降为该子链的节点,用于负责该子链的维护。
优选地,检测是否有新加入区块链网络的节点,如果有,则将新加入区块链网络的节点根据节点对应的实际业务加入与该业务对应的子链。
优选地,所述子链模板库设在主链应用层,与主链底层进行隔离。
优选地,所述步骤S10包括:
步骤S11,检测是否有新的业务请求出现;
步骤S12,在有新的业务请求出现时,判断新的业务请求是否需要创建新的业务模块,
步骤S13,在新的业务请求需要创建新的业务模块时,则触发创建子链模板的预设条件。
所述步骤11之后还包括:
步骤S111,查询新的业务请求的类型和预设信息;
所述步骤S12包括,根据新的业务请求的类型和预设信息判断是否需要创建新的业务模块;
所述步骤S40包括,根据新的业务请求的类型和预设信息为新的业务请求创建对应的子链模板。
此外,为实现上述目的,本发明还提出一种区块链系统,所述区块链系统包括主链,所述主链作为底层框架保存各个子链的框架模式和运行模式;
子链模板库,存储于主链应用层,与底层隔离;
子链模板,基于不同业务场景,不同子链框架和运行模式也不尽相同;
子链,根据不同业务需求由主链模板化创建。
此外,为实现上述目的,本发明还提出一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上任一项所述方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述方法的步骤。
本发明方法中通过检测是否存在触发创建子链模板的预设条件;在存在触发创建子链模板的预设条件时,查询主链内的子链模板库内是否存储有符合预设要求的子链模板;在子链模板库中未存储符合预设要求的子链模板时,根据预设要求创建对应的子链模板,并更新子链模板库;根据子链模板库提供的子链模型创建子链。本发明提出的区块链模块化创建子链技术能够快速的实现子链精准创建并且不是单一的扩容,而是针对不同业务进行私人定制,模板库设在主链应用层与主链底层进行隔离是本发明的一大特点,子链创建完成后不再依赖于模板库,这样模板库的更新不会对运行中的区块链平台产生任何影响,基于此性能可以在子链模板投入使用前对其进行充分测试,并且相比于直接在主链上创建子链的诸多不确定性,模板化创建子链能够保证子链模板的完全可用与准确性,真正满足于当下人们对速度与准确性的强烈要求。
附图说明
附图作为本发明的一部分,用来提供对本发明的进一步的理解,本发明的示意性实施例及其说明用于解释本发明,但不构成对本发明的不当限定。显然,下面描述中的附图仅仅是一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。在附图中:
图1为本发明一种区块链系统的扩容方法的第一实施例的流程示意图;
图2为本发明一种区块链系统的扩容方法的第二实施例的流程示意图;
图3为本发明一种区块链系统的扩容方法的第三实施例的流程示意图;
图4为本发明一种区块链系统的示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面结合附图以及具体实施例对本发明实施例解决的技术问题、所采用的技术方案以及实现的技术效果进行清楚、完整的描述。显然,所描述的实施例仅仅是本申请的一部分实施例,并不是全部实施例。基于本申请中的实施例,本领域普通技术人员在不付出创造性劳动的前提下,所获得的所有其它等同或明显变型的实施例均落在本发明的保护范围内。本发明实施例可以按照权利要求中限定和涵盖的多种不同方式来具体化。
需要说明的是,在下面的描述中,为了方便理解,给出了许多具体细节。但是很明显,本发明的实现可以没有这些具体细节。
需要说明的是,在没有明确限定或不冲突的情况下,本发明中的各个实施例及其中的技术特征可以相互组合而形成技术方案。
本发明提出一种区块链系统的扩容方法,旨在实现区块链的快速扩展,针对实际需要实时扩容,既保证不同业务对区块链平台的性能要求,也不会造成资源浪费。
本发明主要提供了一种基于区块链系统的扩容技术。主链中设有一个初始的默认链,称之为“创世链”,在创世链的应用层设有子链模板库,模板库通过对外接口提供创建子链服务,每个加入这个创世链的节点都可以依据主链提供的创世链数据模型来开创自己的子链,而每个被开创出来的从链将被通过P2P网络公示给所有节点,每个主链节点可以选择是否加入该新链,或是开创自己的新链。
具体地,参照图1和图4,所述方法包括如下步骤:
步骤S10,检测是否存在触发创建子链模板的预设条件;
本发明实施例,通过在主链上创建子链来实现区块链系统的扩容。在主链上创建子链包括多种触发条件,例如,当检测到主链上处理数据的速度降低时,在子链上创建子链;或者当有新的业务在主链上发生时,在子链上创建子链;又或者,当有新的数据类型上链到主链上时,在子链上创建子链;等等。
本发明实施例中,预先检测是否存在触发创建子链模板的预设条件,该预设条件根据需要进行设定,例如,当触发子链的情况是在主链上处理数据的速度降低时,则检测主链上的处理数据的速度是否低于某一值,如果检测到主链上处理数据的速度低于某一值,则触发创建子链模板的预设条件;当触发子链的情况是当有新的数据类型上链时,则检测当主链上有新的数据上链时,则检测该数据的数据类型是否在主链上有存储区块,如果没有该数据的数据类型的存储区块,则触发在主链上创建子链的预设条件;等等。
步骤S20,在存在触发创建子链模板的预设条件时,查询主链内的子链模板库内是否存储有符合预设要求的子链模板;
进一步地,当检测到存在触发创建子链的预设条件时,进一步检测主链内的子链模板库内是否存储有符合预设要求的子链模板。子链创建的规则可以是根据数据类型创建不同子链,也可以是根据业务类型创建不同子链,或者根据用户类型创建不同子链,等等。例如,当有新用户注册时,用户的注册数据在区块链上上链,检测主链内的子链模板库内是否存储有属于该用户类型的子链模板,如果有对应的子链模板,则直接创建对应的子链,并将用户数据存储到该子链内;如果没有对应的子链模板,则在子链模板库内创建新的子链模板。
步骤S30,在子链模板库中未存储符合预设要求的子链模板时,根据预设要求创建对应的子链模板,并更新子链模板库;所述子链模板库设在主链应用层,与主链底层进行隔离;
步骤S40,根据子链模板库提供的子链模型创建子链。
如果检测到子链模板库中没有存储与业务类型对应的子链模板,则按照业务类型对应的子链模板的创建要求创建相应的子链模板,或者如果检测到子链模板库中没有存储与用户类型对应的子链模板,则按照用户类型对应的子链模板的创建要求创建相应的子链模板;等等。
区块链扩容是各区块链平台发展的必经之路,而具体的实现仍旧停留在一个初级阶段,只是单一的扩展子链并不能很好的解决不同企业级业务模块对区块链平台的需求。本发明实施例的方法,通过检测是否存在触发创建子链模板的预设条件;在存在触发创建子链模板的预设条件时,查询主链内的子链模板库内是否存储有符合预设要求的子链模板;在子链模板库中未存储符合预设要求的子链模板时,根据预设要求创建对应的子链模板,并更新子链模板库;根据子链模板库提供的子链模型创建子链。本发明提出的区块链模块化创建子链技术能够快速的实现子链精准创建并且不是单一的扩容,而是针对不同业务进行私人定制,模板库设在主链应用层与主链底层进行隔离是本发明的一大特点,子链创建完成后不再依赖于模板库,这样模板库的更新不会对运行中的区块链平台产生任何影响,基于此性能可以在子链模板投入使用前对其进行充分测试,并且相比于直接在主链上创建子链的诸多不确定性,模板化创建子链能够保证子链模板的完全可用与准确性,真正满足于当下人们对速度与准确性的强烈要求。
基于本发明的第一实施例,参照图2,在本发明第二实施例中,所述步骤S40之后包括:
步骤S50,创建的子链通过网络公示给所有节点,
步骤S60,在其他节点选择加入该子链时,则将该对应的节点降为该子链的节点,用于负责该子链的维护。
本发明实施例进一步将创建的子链通过P2P网络公示给其他所有节点,其他节点在收到公示后,可以选择加入该子链,或者选择不加入该子链,如果节点选择加入该子链,则该节点将降为该子链的节点,负责该子链的维护。如果节点选择不加入该子链,则继续保持为主链的节点,负责主链的维护。
在持续的运行中,不断检测是否有新加入区块链网络的节点,如果有,则将新加入区块链网络的节点根据节点对应的实际业务加入与该业务对应的子链。
基于本发明的第一实施例或者第二实施例,参照图3,在本发明第三实施例中,所述步骤S10包括:
步骤S11,检测是否有新的业务请求出现;
步骤S12,在有新的业务请求出现时,判断新的业务请求是否需要创建新的业务模块,
步骤S13,在新的业务请求需要创建新的业务模块时,则触发创建子链模板的预设条件。
本发明实施例以创建子链类型根据业务请求的业务类型来创建为例进行说明。当有新的业务请求出现时,进一步实施下述步骤:
步骤S111,查询新的业务请求的类型和预设信息;
所述步骤S12包括,根据新的业务请求的类型或预设信息判断是否需要创建新的业务模块;
所述步骤S40包括,根据新的业务请求的类型或预设信息为新的业务请求创建对应的子链模板。
查询新的业务请求的类型和预设信息,此处的预设信息为系统设定的,可以包括业务请求的交易双方的信息、业务请求中设定的关键词信息等等。根据业务请求的类型判断新的业务请求是否需要创建新的业务模块。具体地,在接收到新的业务请求时,需要根据新的业务请求的类型,查询子链模板库中是否已经有与该业务请求类型对应的子链模板,如果有,则无需继续创建该业务请求类型的子链模板,如果没有,则判断为有必要为该新的业务请求创建与该业务请求类型相对应的子链模板。
此外,本发明还提出一种区块链系统,参照图4,所述区块链系统包括主链,所述主链作为底层框架保存各个子链的框架模式和运行模式;
子链模板库,存储于主链应用层,与底层隔离;
子链模板,基于不同业务场景,不同子链框架和运行模式也不尽相同;
子链,根据不同业务需求由主链模板化创建。
在所述区块链系统上,实现如下所述的扩容方法:
检测是否存在触发创建子链模板的预设条件;
在存在触发创建子链模板的预设条件时,查询主链内的子链模板库内是否存储有符合预设要求的子链模板;
在子链模板库中未存储符合预设要求的子链模板时,根据预设要求创建对应的子链模板,并更新子链模板库;
根据子链模板库提供的子链模型创建子链。
本发明实施例,通过在主链上创建子链来实现区块链系统的扩容。在主链上创建子链包括多种触发条件,例如,当检测到主链上处理数据的速度降低时,在子链上创建子链;或者当有新的业务在主链上发生时,在子链上创建子链;又或者,当有新的数据类型上链到主链上时,在子链上创建子链;等等。
本发明实施例中,预先检测是否存在触发创建子链模板的预设条件,该预设条件根据需要进行设定,例如,当触发子链的情况是在主链上处理数据的速度降低时,则检测主链上的处理数据的速度是否低于某一值,如果检测到主链上处理数据的速度低于某一值,则触发创建子链模板的预设条件;当触发子链的情况是当有新的数据类型上链时,则检测当主链上有新的数据上链时,则检测该数据的数据类型是否在主链上有存储区块,如果没有该数据的数据类型的存储区块,则触发在主链上创建子链的预设条件;等等。
进一步地,当检测到存在触发创建子链的预设条件时,进一步检测主链内的子链模板库内是否存储有符合预设要求的子链模板。子链创建的规则可以是根据数据类型创建不同子链,也可以是根据业务类型创建不同子链,或者根据用户类型创建不同子链,等等。例如,当有新用户注册时,用户的注册数据在区块链上上链,检测主链内的子链模板库内是否存储有属于该用户类型的子链模板,如果有对应的子链模板,则直接创建对应的子链,并将用户数据存储到该子链内;如果没有对应的子链模板,则在子链模板库内创建新的子链模板。
如果检测到子链模板库中没有存储与业务类型对应的子链模板,则按照业务类型对应的子链模板的创建要求创建相应的子链模板,或者如果检测到子链模板库中没有存储与用户类型对应的子链模板,则按照用户类型对应的子链模板的创建要求创建相应的子链模板;等等。
区块链扩容是各区块链平台发展的必经之路,而具体的实现仍旧停留在一个初级阶段,只是单一的扩展子链并不能很好的解决不同企业级业务模块对区块链平台的需求。本发明实施例的方法,通过检测是否存在触发创建子链模板的预设条件;在存在触发创建子链模板的预设条件时,查询主链内的子链模板库内是否存储有符合预设要求的子链模板;在子链模板库中未存储符合预设要求的子链模板时,根据预设要求创建对应的子链模板,并更新子链模板库;根据子链模板库提供的子链模型创建子链。本发明提出的区块链模块化创建子链技术能够快速的实现子链精准创建并且不是单一的扩容,而是针对不同业务进行私人定制,模板库设在主链应用层与主链底层进行隔离是本发明的一大特点,子链创建完成后不再依赖于模板库,这样模板库的更新不会对运行中的区块链平台产生任何影响,基于此性能可以在子链模板投入使用前对其进行充分测试,并且相比于直接在主链上创建子链的诸多不确定性,模板化创建子链能够保证子链模板的完全可用与准确性,真正满足于当下人们对速度与准确性的强烈要求。
本发明的各个步骤可以用通用的计算装置来实现,例如,它们可以集中在单个的计算装置上,例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备或者多处理器装置,也可以分布在多个计算装置所组成的网络上,它们可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。因此,本发明不限于任何特定的硬件和软件或者其结合。
本发明提供的方法可以使用可编程逻辑器件来实现,也可以实施为计算机程序软件或程序模块(其包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件或数据结构等等),例如根据本发明的实施例可以是一种计算机程序产品,运行该计算机程序产品使计算机执行用于所示范的方法。所述计算机程序产品包括计算机可读存储介质,该介质上包含计算机程序逻辑或代码部分,用于实现所述方法。所述计算机可读存储介质可以是被安装在计算机中的内置介质或者可以从计算机主体上拆卸下来的可移动介质(例如:采用热插拔技术的存储设备)。所述内置介质包括但不限于可重写的非易失性存储器,例如:RAM、ROM、快闪存储器和硬盘。所述可移动介质包括但不限于:光存储介质(例如:CD-ROM和DVD)、磁光存储介质(例如:MO)、磁存储介质(例如:磁带或移动硬盘)、具有内置的可重写非易失性存储器的媒体(例如:存储卡)和具有内置ROM的媒体(例如:ROM盒)。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。