CN111563124B - 基于区块链的作业处理方法、装置及*** - Google Patents
基于区块链的作业处理方法、装置及*** Download PDFInfo
- Publication number
- CN111563124B CN111563124B CN202010380382.0A CN202010380382A CN111563124B CN 111563124 B CN111563124 B CN 111563124B CN 202010380382 A CN202010380382 A CN 202010380382A CN 111563124 B CN111563124 B CN 111563124B
- Authority
- CN
- China
- Prior art keywords
- blockchain
- sdk
- block
- transaction
- job
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Computing Systems (AREA)
- Economics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链的作业处理方法、装置及***,其中,该方法包括:接收来自区块链SDK的作业信息,作业信息包含:作业内容和作业失效区块高度;获取区块链节点的当前区块高度;响应于作业失效区块高度大于当前区块高度,执行作业内容对应的操作,并将操作结果返回给SDK。通过本发明,可以保证区块链节点之间、区块链节点和区块链SDK之间的交易结果一致共识,进而可以保证外部应用端能够准实时明确交易结果。
Description
技术领域
本发明涉及区块链网络领域,具体涉及一种基于区块链的作业处理方法、装置及***。
背景技术
近年来,区块链主要应用于民生领域、城市服务领域、跨境支付、司***以及供应链金融领域,公益善款追溯、商品溯源、票据和***流转、跨境支付、存证、资产证明等业务应用使用区块链作为底层技术。为了减少业务落地应用区块链技术的难度,区块链开发者会基于区块链底层常用功能做封装SDK(Software Development Kit,软件开发工具包)的处理,外部应用在业务代码中集成区块链SDK,SDK对应用层曝露常用的功能接口,如区块链节点配置更新、区块链节点运维、智能合约相关处理等,这样区块链SDK可以降低普通应用开发者使用区块链的技术门槛。
通常,由于网络丢包、网络延迟、共识延迟、交易打包延迟、数据库读写延迟等原因,应用执行区块链交易可能出现应用等待时间过长导致连接超时断开、甚至无限等待,造成应用资源不必要的浪费。
为了避免前述意外情况造成外部应用无限等待区块链执行结果,业界通用的解决方案是:设置应用等待超时时间。但是实际生产中,由于区块链节点之间、区块链节点和区块链SDK之间不能保证每时每刻都时间同步,因而设置交易容忍超时时间可能会出现以下两种情况:一是在区块链节点端,“当前时间<交易开始时间+交易容忍超时时间”,认为交易未超时,执行交易且交易成功,但是在区块链SDK端,“当前时间>=交易开始时间+交易容忍超时时间”,认为交易已超时失效,直接认为交易失败,这就造成了区块链SDK和区块链节点没有达成交易结果一致的共识;二是部分区块链节点“当前时间<交易开始时间+交易容忍超时时间”认为交易未超时,执行交易且交易成功,部分区块链节点“当前时间>=交易开始时间+交易容忍超时时间”认为交易超时,丢弃交易、交易失败,从而导致区块链节点之间无法达成一致共识。
发明内容
有鉴于此,本发明提供一种基于区块链的作业处理方法、装置及***,以解决上述提及的至少一个问题。
根据本发明的第一方面,提供一种基于区块链的作业处理方法,所述方法包括:接收来自区块链软件开发工具包SDK的作业信息,所述作业信息包含:作业内容和作业失效区块高度;获取区块链节点的当前区块高度;响应于所述作业失效区块高度大于所述当前区块高度,执行所述作业内容对应的操作,并将操作结果返回给所述SDK。
优选地,上述方法还包括:实时获取区块链节点的区块高度并将获取的区块高度发送给所述SDK,以便所述SDK根据所述作业失效区块高度与接收的区块高度判断所述作业内容对应的操作是否失效。
进一步地,上述方法还包括:当未接收到作业信息时,根据预设周期生成新区块,以增加区块高度。
另外,上述方法还包括:根据预设的作业内容优先级和/或区块链节点优先级为所述作业信息设置预定执行时间;当执行所述作业内容对应操作的时间到达所述预定执行时间时,终止执行操作。
根据本发明的第二方面,提供一种基于区块链的作业处理装置,所述装置包括:信息接收单元,用于接收来自SDK的作业信息,所述作业信息包含:作业内容和作业失效区块高度;区块高度获取单元,用于获取区块链节点的当前区块高度;执行单元,用于响应于所述作业失效区块高度大于所述当前区块高度,执行所述作业内容对应的操作;结果返回单元,用于将操作结果返回给所述SDK。
优选地,上述装置还包括:区块高度发送单元,用于实时获取区块链节点的区块高度并将获取的区块高度发送给所述SDK,以便所述SDK根据所述作业失效区块高度与接收的区块高度判断所述作业内容对应的操作是否失效。
优选地,上述装置还包括:操作失效确定单元,用于响应于所述作业失效区块高度小于等于所述当前区块高度,确定所述作业内容对应的操作失效。
进一步地,上述装置还包括:新区块生成单元,用于当未接收到作业信息时,根据预设周期生成新区块,以增加区块高度。
进一步地,上述装置还包括:执行时间设置单元,用于根据预设的作业内容优先级和/或区块链节点优先级为所述作业信息设置预定执行时间;所述执行单元还用于:当执行所述作业内容对应操作的时间到达所述预定执行时间时,终止执行操作。
根据本发明的第三方面,提供一种基于区块链的作业处理***,所述***包括:应用端、SDK、以及上述的基于区块链的作业处理装置,所述基于区块链的作业处理装置位于区块链节点侧,其中,所述应用端通过所述SDK将作业信息发送至所述基于区块链的作业处理装置,并通过所述SDK接收所述基于区块链的作业处理装置返回的作业操作结果。
具体地,上述应用端包括:设置单元,用于根据预定规则设置所述作业内容的容忍区块出块数量;作业发送单元,用于将所述作业内容和所述容忍区块出块数量发送给所述SDK。
上述SDK包括:作业接收单元,用于接收所述作业内容和所述容忍区块出块数量;失效区块高度确定单元,用于根据接收的当前区块高度和所述容忍区块出块数量确定所述作业失效区块高度。
优选地,区块链网络包括:主链和子链,主链或子链分别包括多个区块链节点,上述SDK还包括:作业信息发送单元,用于根据所述作业内容将所述作业信息发送至主链或子链的区块链节点侧的作业处理装置。
根据本发明的第四方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于区块链的作业处理方法的步骤。
根据本发明的第五方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述基于区块链的作业处理方法的步骤。
由上述技术方案可知,通过根据来自区块链SDK的作业信息中的作业失效区块高度和获取的区块链节点当前区块高度来判断作业是否失效,当作业失效区块高度大于当前区块高度时,表示作业未失效,则执行作业内容对应的操作,并将操作结果返回给SDK,从而SDK可以将操作结果返回给外部应用端,通过区块链SDK和区块链节点对区块高度的共识机制,可以保证区块链节点之间、区块链节点和区块链SDK之间的交易结果一致共识,进而可以保证外部应用端能够准实时明确交易结果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的基于区块链的作业处理方法的流程图;
图2是根据本发明实施例的合约执行流程图;
图3是根据本发明实施例的基于区块链的作业处理***的结构框图;
图4是根据本发明实施例的作业处理装置1的结构框图;
图5是根据本发明实施例的作业处理装置1的详细结构框图;
图6是根据本发明实施例的应用端2的结构框图;
图7是根据本发明实施例的区块链SDK 3的结构框图;
图8是根据本发明实施例的区块链网络的示例结构图;
图9是根据本发明实施例的区块链SDK 3的详细结构框图;
图10是根据本发明实施例的作业处理***的示例结构图;
图11是根据本发明实施例的基于图10所示***的交易处理流程图;
图12是根据本发明实施例的交易失效示意图;
图13是根据本发明实施例的交易失效区块示意图;
图14是根据本发明实施例的区块链SDK 3的示例结构框图;
图15是根据本发明实施例的区块链节点1的示例结构框图;
图16是根据本发明实施例的周期触发交易处理并生成区块的流程图;
图17是根据本发明实施例的外部应用2的示例结构框图;
图18是根据本发明实施例的电子设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在现有的区块链网络中,通过设置应用等待超时时间来解决由于意外情况而造成的外部应用无限等待区块链执行结果的问题,但是由于区块链节点之间、区块链节点和区块链SDK之间的时间不严格同步,导致了区块链节点之间、以及区块链节点和区块链SDK之间无法达成交易结果一致共识的问题。基于此,本发明实施例了提供一种基于区块链的作业处理方案,可以实现区块链节点之间、以及区块链节点和区块链SDK之间的交易结果一致共识,保证外部应用能够准实时明确交易结果。以下结合附图来详细描述本发明实施例。
图1是根据本发明实施例的基于区块链的作业处理方法的流程图,如图1所示,该方法包括:
步骤101,接收来自区块链SDK的作业(可以称为交易)信息,所述作业信息包含:作业内容和作业失效区块高度。
步骤102,获取区块链节点的当前区块高度。
步骤103,响应于所述作业失效区块高度大于所述当前区块高度,执行所述作业内容对应的操作,并将操作结果返回给所述SDK。
相应地,当作业失效区块高度小于等于当前区块高度时,确定作业内容对应的操作失效,此时将操作失效结果返回给所述SDK。
通过根据来自区块链SDK的作业信息中的作业失效区块高度和获取的区块链节点当前区块高度来判断作业是否失效,当作业失效区块高度大于当前区块高度时,表示作业未失效,则执行作业内容对应的操作,并将操作结果返回给SDK,从而SDK可以将操作结果返回给外部应用端,通过区块链SDK和区块链节点对区块高度的共识机制,可以保证区块链节点之间、区块链节点和区块链SDK之间的交易结果一致共识,进而可以保证外部应用端能够准实时明确交易结果。
在实际操作中,可以实时获取区块链节点的区块高度并将获取的区块高度发送给所述SDK,以便所述SDK根据所述作业失效区块高度与接收的区块高度判断所述作业内容对应的操作是否失效。
在具体实施过程中,当未接收到作业信息时,可以根据预设周期生成新区块,以增加区块高度。也就是说,当接收到的交易较少或没有接收交易时,超过一段时间后将自动生成新区块,这样区块高度会持续增长。
在一个实施例中,还可以根据预设的作业内容优先级和/或区块链节点优先级为作业信息设置预定执行时间;当执行作业内容对应操作的时间到达预定执行时间时,终止执行操作。如此,可以控制作业(交易)在区块链智能合约容器中的执行时间。
具体地,作业内容优先级可以称为业务优先级,表示智能合约交易中相关业务的重要性。例如,区块链联盟一致认为转账业务比结售汇业务重要,那么转账业务优先级大于结售汇业务。在一个实例中,转账业务优先级可以是2,结售汇业务优先级是1。一般情况下,业务优先级高的智能合约交易允许占用更多的区块链***资源。
区块链节点作为交易发起节点,其优先级表示参与方的优先级,例如,网络中有政府机构的区块链节点、金融机构的区块链节点等。一般地,政府机构优先级较高,如政府机构区块链节点的优先级设置为3,金融机构区块链节点的优先级可以设置为2。一般情况下,优先级高的区块链节点发起的智能合约交易允许占用更多的区块链***资源。
在实际操作中,可以根据业务优先级、交易发起节点优先级计算合约执行资源上限,在合约执行前由区块链节点共识指定合约执行资源上限,一旦合约执行的步数超过合约执行资源上限,合约就被终止执行并返回报错,确保合约执行有限次计算能够得到结果。
一般来说,业务优先级越高合约执行资源上限越大,交易发起节点优先级越高合约执行资源上限越大,反之,合约执行资源上限越小。根据交易发起节点优先级和业务优先级对合约执行资源上限影响的敏感度不同、各机构区块链节点的性能不同,合约执行资源上限的计算方法可以是如下两种方式之一:
方式一:合约执行资源上限=业务优先级×交易发起节点优先级
方式二:合约执行资源上限=业务优先级交易发起节点优先级
在实际操作中,合约执行资源上限的计算方法不限于上述形式,可以依据实际情况而定。
图2是根据本发明实施例的合约执行流程图,如图2所示,该流程包括:
步骤201,输入业务优先级、交易发起节点优先级;
步骤202,计算合约执行最大步数;
步骤203,对计算的合约执行最大步数进行区块链节点共识;
步骤204,单步执行智能合约,并更新合约执行步数;
步骤205,判断合约是否执行完成,如果是,则进行步骤206,否则,进行步骤207;
步骤206,结束执行智能合约,并返回操作成功信息;
步骤207,判断合约执行步数是否大于合约执行最大步数,如果是,则进行步骤208,否则,返回步骤204;
步骤208,结束执行智能合约,并返回操作失败信息。
通过根据业务优先级、交易发起节点优先级可以刻画智能合约交易的紧急性和重要性,能够保证区块链的***资源总是能够分配给最紧急最重要的智能合约交易使用,另外,通过合约执行资源上限可以限制区块链***中智能合约能够使用的资源上限,加快明确交易的处理结果。
本发明实施例通过对区块链SDK和区块链底层做改造,利用区块链节点和区块链SDK的区块高度共识机制、交易容忍出块数的设置,区块链节点和区块链SDK根据交易开始区块高度和交易容忍出块数、实时区块高度等参数决定丢弃超时未处理的交易,以控制交易在区块链节点的排队时间。
基于相似的发明构思,本发明实施例还提供一种基于区块链的作业处理***,图3是该***的结构框图,如图3所示,该***包括:区块链节点侧的作业处理装置1、应用端2以及区块链SDK 3。其中,区块链SDK 3可以位于应用端2侧,所述应用端通过所述SDK将作业信息发送至所述作业处理装置,并通过所述SDK接收所述作业处理装置返回的作业操作结果。优选地,该作业处理装置1可以实现上述方法实施例中的流程。以下结合附图分别描述这三个部分。
图4是上述作业处理装置1的结构框图,如图4所示,该装置1包括:信息接收单元11、区块高度获取单元12、执行单元13和结果返回单元14,其中:
信息接收单元11,用于接收来自SDK的作业信息,所述作业信息包含:作业内容和作业失效区块高度;
区块高度获取单元12,用于获取区块链节点的当前区块高度;
执行单元13,用于响应于所述作业失效区块高度大于所述当前区块高度,执行所述作业内容对应的操作;
结果返回单元14,用于将操作结果返回给所述SDK。
通过根据信息接收单元11接收的来自区块链SDK的作业信息中的作业失效区块高度和区块高度获取单元12获取的区块链节点当前区块高度来判断作业是否失效,当作业失效区块高度大于当前区块高度时,表示作业未失效,执行单元13执行作业内容对应的操作,结果返回单元14将操作结果返回给SDK,从而SDK可以将操作结果返回给外部应用端,通过区块链SDK和区块链节点对区块高度的共识机制,可以保证区块链节点之间、区块链节点和区块链SDK之间的交易结果一致共识,进而可以保证外部应用端能够准实时明确交易结果。
优选地,如图5所示,上述装置1还包括:区块高度发送单元15,用于实时获取区块链节点的区块高度并将获取的区块高度发送给所述SDK,以便所述SDK根据所述作业失效区块高度与接收的区块高度判断所述作业内容对应的操作是否失效。
继续参见图5,上述装置1还包括:操作失效确定单元16,用于响应于所述作业失效区块高度小于等于所述当前区块高度,确定所述作业内容对应的操作失效。
新区块生成单元17,用于当未接收到作业信息时,根据预设周期生成新区块,以增加区块高度。
以及,执行时间设置单元18,用于根据预设的作业内容优先级和/或区块链节点优先级为所述作业信息设置预定执行时间。相应地,上述执行单元13还用于:当执行所述作业内容对应操作的时间到达所述预定执行时间时,终止执行操作。
图6是上述应用端2的结构框图,如图6所示,该应用端2包括:设置单元21和作业发送单元22,其中:
设置单元21,用于根据预定规则设置所述作业内容的容忍区块出块数量;
作业发送单元22,用于将所述作业内容和所述容忍区块出块数量发送给所述SDK。
图7是上述区块链SDK 3的结构框图,如图7所示,该区块链SDK 3包括:作业接收单元31和失效区块高度确定单元32,其中:
作业接收单元31,用于接收所述作业内容和所述容忍区块出块数量;
失效区块高度确定单元32,用于根据接收的当前区块高度和所述容忍区块出块数量确定所述作业失效区块高度。
在实际操作中,区块链网络可以设置为:主链和子链,主链或子链分别包括多个区块链节点。
具体来说,区块链网络架构使用主链加多个子链的结构,允许小型和频繁交易在子链上处理,该子链由主链背书。机构节点开启使用区块链子链的功能,这些机构的区块链智能合约交易请求都发给对应的区块链子链处理,由子链执行一系列处理直接返回交易结果,最后主链子链间定期执行交易结果的同步。
举例来说,A、B、C三大集团组成区块链联盟,各集团内都包含多个分公司,集团各分公司都有一个区块链节点,这些区块链节点组成该集团的子链。因此,各集团都各自维护一条区块链子链并共同维护一条区块链主链。A集团不涉及跨集团交易的分公司间转账、存取业务都可以在A集团的子链上直接执行并返回结果给该集团SDK,B集团不涉及跨集团交易的分公司间转账、存取业务都可以在B集团的子链上直接执行并返回结果给该集团SDK,C集团不涉及跨集团交易的分公司间转账、存取业务都可以在C集团子链上直接执行并返回结果给该集团SDK。
图8是区块链网络的结构示例图,如图8所示,区块链SDK 3设置在外部应用(APP)2(即,上述的应用端2)侧,同一集团的区块链节点(VP)1之间形成子链,例如,VP11和VP13之间形成子链,不同集团的区块链节点(VP)之间形成主链,例如,VP13和VP22之间、VP22和VP31之间、以及VP13和和VP31之间分布形成主链。
通过该主链加子链网络结构,使得大部分集团内的交易可以在子链内完成,实时明确交易结果,同时,可以降低主链的资源负载,使得主链资源大部分可用于处理必须由主链处理的交易。
相应地,如图9所示,区块链SDK 3还包括:作业信息发送单元33,用于根据作业内容将所述作业信息发送至主链或子链的区块链节点侧的作业处理装置。即,根据作业内容将作业信息发送到合适的区块链节点,通过该节点的作业处理装置进行作业处理。
上述各单元、各模块、各子模块的具体执行过程,可以参见上述方法实施例中的描述,此处不再赘述。
在实际操作中,上述各单元、各模块、各子模块可以组合设置、也可以单一设置,本发明不限于此。
为了更好地理解本发明实施例,以下基于图10所示的***结构来详细描述。
图10是根据本发明实施例的作业处理***的示例结构图,如图10所示,该***包括:多个区块链节点1(对应于上述作业处理装置1,该区块链节点1具有作业处理装置1的功能)、多个外部应用2(对应于上述应用端2)、多个区块链SDK 3。其中,区块链节点1与区块链SDK 3之间进行网络连接,区块链节点1和区块链SDK 3是一对多关系。外部应用2集成区块链SDK 3,使用SDK提供的功能和区块链交互。
其中,区块链节点1是指区块链中承担处理区块链用户请求、完成交易共识、交易数据排序打包处理、管理智能合约节点等区块链基础功能的节点,多个区块链节点组成区块链网络。
外部应用2是指用户自定义业务逻辑的程序,其中业务逻辑涉及使用区块链提供的服务,包括查询区块高度、执行智能合约交易等。外部应用集成了区块链SDK,与区块链相关的一切操作都通过区块链SDK中转。
区块链SDK 3是解决外部应用与区块链节点交互的技术装置,为了简化外部应用使用区块链功能,使得外部应用可以仅专注于自身业务逻辑,SDK屏蔽了外部应用不需要关心的一系列区块链技术细节,包括管理与区块链节点相关的配置参数、查询区块高度、执行智能合约交易、管理区块链节点状态等,SDK以安全的传输方式与区块链节点通信。区块链SDK和区块链节点的交易信息包含但不仅限于区块高度、交易失效区块高度等。
区块链网络组建成功后,外部应用通过区块链SDK执行智能合约交易。图11是基于图10所示***的交易处理流程图,如图11所示,该流程包括:
步骤1101,外部应用设置SDK参数之一的交易容忍出块数量k,该参数控制应用发起的智能合约交易不晚于区块链产生k个区块时被执行,超过k个区块后,交易直接丢弃,具体如图12所示,其中,k为3,k为大于1的正整数。
步骤1102,外部应用通过SDK调用智能合约处理交易,智能合约交易发起前,通过SDK获取当前区块高度作为交易开始区块高度。
步骤1103,区块链实时获取区块高度并返回。
步骤1104,SDK根据区块链发送的交易开始区块高度和步骤1101设置的交易容忍出块数,通过如下公式计算交易失效区块高度:
交易失效区块高度=交易开始区块高度m+交易容忍出块数k+1,m为大于1的正整数。
具体可以参见图13所示的交易失效区块高度,其中,k=3。
步骤1105,SDK将交易失效区块高度附加到智能合约交易中,向区块链节点发起交易。
步骤1106,区块链节点执行交易前,实时获取区块高度。
步骤1107,判断交易失效区块高度是否大于当前区块高度,若是执行步骤1109,否则执行1108。
步骤1108,当前区块高度已经达到或超过交易失效区块高度,交易失效报错返回给SDK。
步骤1109,当前区块高度未达到交易失效区块高度,智能合约交易进入排队队列,等待区块链节点交易共识、打包、送进智能合约执行、读写数据库等一系列操作。
步骤1110,SDK根据预设时间(该时间可以根据实际情况设置)判断交易是否超时,若未超时执行步骤1111,若超时执行步骤1112。
步骤1111,交易未超时,SDK继续等待交易结果,一旦接收到交易结果,返回给外部应用做后续处理。
步骤1112,交易超时,SDK结束等待,主线程返回给外部应用做其他处理,同时新建后台线程,执行后续处理。
步骤1113,SDK的后台线程向区块链节点发请求,获取当前区块高度。
步骤1114,区块链节点实时获取当前区块高度并返回给SDK。
步骤1115,SDK根据获取的当前区块高度,判断交易失效区块高度是否大于当前区块高度,若当前区块高度小于交易失效区块高度,交易有效,SDK向区块链节点发请求获取交易执行结果,执行步骤1116,若当前区块高度等于或大于交易失效区块高度,认为交易失效,执行步骤1118。
步骤1116,区块链节点实时获取智能合约交易结果并返回,结果包含3类,交易成功、交易失败、交易等待。
步骤1117,SDK根据智能合约交易结果判断交易是否已执行,若交易成功或交易失败,SDK返回交易结果给外部应用,若结果是交易等待,返回步骤1113继续执行。
步骤1118,SDK判断交易失效后返回交易失败的报错给外部应用,外部应用做后续处理。
由以上可知,通过SDK支持设置交易容忍出块数、计算交易失效区块高度,从而可以通过本地区块高度和交易失效区块高度,确认交易是成功或失败。
图14是区块链SDK 3的示例结构框图,如图14所示,区块链SDK 3包含:区块高度同步模块301、交易容忍出块数模块302、智能合约交互模块303、计时模块304、安全模块305、交易结果处理模块306、其他模块307,其中:
区块高度同步模块301负责查询区块链节点的区块高度,用于拉取交易开始区块高度、实时区块高度,进行后续交易失效区块高度的计算和交易超时失效的判断等。
交易容忍出块数模块302负责外部应用设置交易容忍出块数的更新、交易失效区块高度的计算。
智能合约交互模块303负责SDK与区块链节点间与智能合约相关的一系列处理。
计时模块304负责交易超时失效的判断,对内存中交易失效区块高度小于或等于实时区块高度的交易记录为交易失败。
安全模块305负责对SDK和区块链通信中的交易签名和传输数据加密等安全操作。
交易结果处理模块306负责将智能合约交易处理结果按照与应用约定的格式做组装,然后返回给外部应用。
其他模块307负责与区块链SDK其他扩展功能相关的处理。
图15是区块链节点1的示例结构框图,如图15所示,区块链节点1包含:共识模块401、交易打包模块402、智能合约模块403、超时出块模块404、安全模块405、交易结果处理模块406、其他模块407,其中:
共识模块401是组网和交易共识处理的逻辑装置,一方面定义了区块链节点启动时相互通信的机制、建立通信的通道,一方面根据业务规则对交易的合法性进行判断,与其他区块链节点1根据约定好的共识算法对交易进行共识处理,这里的共识算法可以是POW(Proof Of Work,工作量证明)、POS(Proof Of Stake,股权证明)、DPOS(Delegated ProofOf Stake,委托股权证明)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错)等。
交易打包模块402根据共识的结果确定交易的执行顺序,把交易打包成区块,并把区块交给智能合约模块执行。
智能合约模块403负责智能合约的管理,内置的智能合约主要是业务相关数据的操作,执行结果记录到区块链底层数据库。
超时出块模块404负责两个方面:一是当区块链节点接收到的交易较少或没有接收到交易时,超过一段时间(该时间可以依据实际情况设置)自动生成新区块,网络的区块高度持续增长;二是当区块链节点的交易太多、网络压力较大时,网络区块高度每次增加,都对所有交易失效区块高度字段小于或等于当前区块高度的交易标记失败并清理。超时出块机制保证了前述交易出块容忍数和交易失效区块高度的机制生效,区块链SDK能够准实时得到明确的交易结果。
图16是超时出块模块404执行的周期触发交易处理并生成区块的流程图,主要涉及区块链节点的智能合约交易在待处理交易队列、打包队列的流转,完成交易的准实时处理。如图16所示,该流程包括:
步骤1601,区块链节点后台线程周期触发交易处理。区块链节点每接收一个交易都放到待处理交易队列缓存,等待该后台线程处理,每个交易被打包后从待处理交易队列删除。
步骤1602,判断待处理交易队列是否非空,如果是,执行步骤1603,否则执行步骤1609。
步骤1603,获取排队中的交易,解析出交易信息中的交易失效区块高度。
步骤1604,判断交易失效区块高度是否大于当前区块高度,如果是,则执行步骤1607,否则执行步骤1605。
步骤1605,当前区块高度等于或大于交易失效区块高度,表示交易超时,判定为交易失效并报错返回。
步骤1606,交易从待处理交易队列中删除并通知前台线程(上述步骤1111),返回1602。
步骤1607,当前区块高度小于交易失效区块高度,表示交易有效,从待处理交易队列中删除,进入打包队列。
步骤1608,判断打包队列是否已饱和,如果是,执行步骤1610,否则执行步骤1609。
步骤1609,判断区块生成计时是否已满一周期,如果是,执行步骤1610,否则返回步骤1602。
步骤1610,当打包队列已饱和或者区块生成计时满一周期时,开始处理打包队列,判断打包队列是否非空,如果是,执行步骤1611,否则执行步骤1612。
步骤1611,打包队列非空,依次执行打包队列中的各个交易,根据交易结果生成新区块并通知前台线程(上述步骤1111),并返回步骤1602。
步骤1612,打包队列为空,生成空区块,并返回步骤1602。这样可以确保区块高度总是会随时间增长,外部应用和区块链SDK不会无限等待交易结果。
继续参见图15,安全模块405负责对SDK做身份认证和对接收数据解密等安全操作。
交易结果处理模块406负责将智能合约的执行结果组装成与区块链SDK约定好的数据格式,将交易结果返回给区块链SDK。
其他模块407负责与区块链节点其他扩展功能相关的处理。
图17是外部应用2的示例结构框图,如图17所示,该外部应用2包含:区块链SDK模块201、其他模块202,其中:
区块链SDK模块201由区块链开发者开发和封装,用于封装区块链SDK3,集成在外部应用中,负责外部应用与区块链节点、智能合约、交易容忍出块数等相关的一系列处理。
其他模块202负责外部应用中与区块链节点无关的其它处理。
由以上描述可知,通过设置交易容忍出块数得到交易失效区块高度,可以控制交易在区块链节点的排队时间,区块链节点根据交易失效区块高度,确保区块高度达到交易失效区块高度时,交易会被处理,或交易直接被丢弃。区块链节点在没有接收交易时依然会生成空块,区块高度加一,确保网络不会无限等待交易失效区块高度,最长等待时间不超过“交易出块周期×交易容忍出块数”。
图18是根据本发明实施例的电子设备的示意图。图18所示的电子设备为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器1801和存储器1802。处理器1801和存储器1802通过总线1803连接。存储器1802适于存储处理器1801可执行的一条或多条指令或程序。该一条或多条指令或程序被处理器1801执行以实现上述基于区块链的作业处理方法中的步骤。
上述处理器1801可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器1801通过执行存储器1802所存储的命令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其他装置的控制。总线1803将上述多个组件连接在一起,同时将上述组件连接到显示控制器1804和显示装置以及输入/输出(I/O)装置1805。输入/输出(I/O)装置1805可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出(I/O)装置1805通过输入/输出(I/O)控制器1806与***相连。
其中,存储器1802可以存储软件组件,例如操作***、通信模块、交互模块以及应用程序。以上所述的每个模块和应用程序都对应于完成一个或多个功能和在发明实施例中描述的方法的一组可执行程序指令。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现上述基于区块链的作业处理方法的步骤。
综上所述,本发明实施例提供了一种准实时明确交易结果的区块链***与方法,利用区块链SDK和区块链节点对区块高度和交易容忍出块数的共识机制,保证外部应用能够准实时明确交易结果。本发明实施例的优点如下:
1.本发明实施例提出的准实时明确交易结果的区块链设计对外部应用透明,屏蔽了外部应用不需要关心的区块链内部技术细节,使得外部应用可以仅关注于自己的业务逻辑、更便捷的使用区块链技术。解放应用***资源,降低应用***业务设计的复杂度。
2.比起现有技术中的设置交易容忍超时时间,本发明实施例提出了设置交易容忍出块数,该设计在区块链节点时间不严格同步、区块链节点和区块链SDK时间不严格同步的情况下依然有效。由于区块链节点之间、区块链节点和区块链SDK之间不能保证每时每刻都时间同步,而区块高度在所有区块链节点和区块链SDK之间一定是同步一致的,因而可以保证外部应用能够准实时明确交易结果。
以上参照附图描述了本发明的优选实施方式。这些实施方式的许多特征和优点根据该详细的说明书是清楚的,因此权利要求旨在覆盖这些实施方式的落入其真实精神和范围内的所有这些特征和优点。此外,由于本领域的技术人员容易想到很多修改和改变,因此不是要将本发明的实施方式限于所例示和描述的精确结构和操作,而是可以涵盖落入其范围内的所有合适修改和等同物。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种基于区块链的作业处理方法,其特征在于,所述方法包括:
接收来自区块链软件开发工具包SDK的作业信息,所述作业信息包含:作业内容和作业失效区块高度;
获取区块链节点的当前区块高度;
响应于所述作业失效区块高度大于所述当前区块高度,执行所述作业内容对应的操作,并将操作结果返回给所述SDK;
当未接收到作业信息时,根据预设周期生成新区块,以增加区块高度。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
实时获取区块链节点的区块高度并将获取的区块高度发送给所述SDK,以便所述SDK根据所述作业失效区块高度与接收的区块高度判断所述作业内容对应的操作是否失效。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应于所述作业失效区块高度小于等于所述当前区块高度,确定所述作业内容对应的操作失效,并将操作失效结果返回给所述SDK。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据预设的作业内容优先级和/或区块链节点优先级为所述作业信息设置预定执行时间;
当执行所述作业内容对应操作的时间到达所述预定执行时间时,终止执行操作。
5.一种基于区块链的作业处理装置,其特征在于,所述装置包括:
信息接收单元,用于接收来自SDK的作业信息,所述作业信息包含:作业内容和作业失效区块高度;
区块高度获取单元,用于获取区块链节点的当前区块高度;
执行单元,用于响应于所述作业失效区块高度大于所述当前区块高度,执行所述作业内容对应的操作;
结果返回单元,用于将操作结果返回给所述SDK;
新区块生成单元,用于当未接收到作业信息时,根据预设周期生成新区块,以增加区块高度。
6.一种基于区块链的作业处理***,其特征在于,所述***包括:应用端、SDK、以及权利要求5所述的基于区块链的作业处理装置,所述基于区块链的作业处理装置位于区块链节点侧,其中,所述应用端通过所述SDK将作业信息发送至所述基于区块链的作业处理装置,并通过所述SDK接收所述基于区块链的作业处理装置返回的作业操作结果。
7.根据权利要求6所述的***,其特征在于,所述应用端包括:
设置单元,用于根据预定规则设置所述作业内容的容忍区块出块数量;
作业发送单元,用于将所述作业内容和所述容忍区块出块数量发送给所述SDK。
8.根据权利要求7所述的***,其特征在于,所述SDK包括:
作业接收单元,用于接收所述作业内容和所述容忍区块出块数量;
失效区块高度确定单元,用于根据接收的当前区块高度和所述容忍区块出块数量确定所述作业失效区块高度。
9.根据权利要求7所述的***,其特征在于,区块链网络包括:主链和子链,主链或子链分别包括多个区块链节点,所述SDK还包括:
作业信息发送单元,用于根据所述作业内容将所述作业信息发送至主链或子链的区块链节点侧的作业处理装置。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至4中任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至4中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010380382.0A CN111563124B (zh) | 2020-05-08 | 2020-05-08 | 基于区块链的作业处理方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010380382.0A CN111563124B (zh) | 2020-05-08 | 2020-05-08 | 基于区块链的作业处理方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111563124A CN111563124A (zh) | 2020-08-21 |
CN111563124B true CN111563124B (zh) | 2023-06-23 |
Family
ID=72074605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010380382.0A Active CN111563124B (zh) | 2020-05-08 | 2020-05-08 | 基于区块链的作业处理方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111563124B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112203359B (zh) * | 2020-09-29 | 2022-06-21 | 广东云纱供应链管理有限公司 | 用于区块链***的上游供应链信息传输方法及*** |
CN113162990B (zh) * | 2021-03-30 | 2022-08-16 | 杭州趣链科技有限公司 | 消息发送方法、装置、设备和存储介质 |
CN113420092B (zh) * | 2021-06-30 | 2024-02-23 | 中国银行股份有限公司 | 基于区块链的三方接入方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874393A (zh) * | 2017-01-13 | 2017-06-20 | 北京众享比特科技有限公司 | 基于区块链的业务数据同步方法及***、数据库*** |
CN109461079A (zh) * | 2018-10-29 | 2019-03-12 | 众安信息技术服务有限公司 | 基于区块链的交易处理方法和装置 |
CN109493223A (zh) * | 2018-11-07 | 2019-03-19 | 联动优势科技有限公司 | 一种记账方法及装置 |
WO2019100991A1 (zh) * | 2017-11-27 | 2019-05-31 | 北京京东金融科技控股有限公司 | 信息处理方法、装置及***、存储介质、电子设备 |
CN110830581A (zh) * | 2019-11-12 | 2020-02-21 | 金蝶软件(中国)有限公司 | 提升区块链响应速度的方法、区块链应用***及相关设备 |
-
2020
- 2020-05-08 CN CN202010380382.0A patent/CN111563124B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874393A (zh) * | 2017-01-13 | 2017-06-20 | 北京众享比特科技有限公司 | 基于区块链的业务数据同步方法及***、数据库*** |
WO2019100991A1 (zh) * | 2017-11-27 | 2019-05-31 | 北京京东金融科技控股有限公司 | 信息处理方法、装置及***、存储介质、电子设备 |
CN109461079A (zh) * | 2018-10-29 | 2019-03-12 | 众安信息技术服务有限公司 | 基于区块链的交易处理方法和装置 |
CN109493223A (zh) * | 2018-11-07 | 2019-03-19 | 联动优势科技有限公司 | 一种记账方法及装置 |
CN110830581A (zh) * | 2019-11-12 | 2020-02-21 | 金蝶软件(中国)有限公司 | 提升区块链响应速度的方法、区块链应用***及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111563124A (zh) | 2020-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111563124B (zh) | 基于区块链的作业处理方法、装置及*** | |
CN110175913B (zh) | 基于区块链的数据处理***、方法、计算设备及存储介质 | |
CN112330326B (zh) | 一种应用于银行交易区块链***的业务处理方法和装置 | |
CN104753817B (zh) | 一种云计算消息队列服务本地模拟方法和*** | |
Hang et al. | Optimal blockchain network construction methodology based on analysis of configurable components for enhancing hyperledger fabric performance | |
US8538793B2 (en) | System and method for managing real-time batch workflows | |
WO2018014812A1 (zh) | 风险识别方法、风险识别装置、云风险识别装置及*** | |
CN111861482B (zh) | 一种区块链对账方法和*** | |
CN110458468A (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
Mukherjee et al. | Determining QoS of WS-BPEL compositions | |
CN113364831B (zh) | 基于区块链的多域异构算网资源可信协同方法 | |
CN112291305B (zh) | 基于统一标识的码链构建方法及装置 | |
CN102323894A (zh) | 企业分布式应用间实现非阻塞方式相互调用的***及方法 | |
CN113064744A (zh) | 任务处理方法、装置、计算机可读介质及电子设备 | |
CN108880934A (zh) | 一种基于区块链的数据流量统计方法和装置 | |
CN113032166A (zh) | 核间通信的方法、处理器、核间通信***及计算机可读存储介质 | |
CN116384993B (zh) | 基于云支付中心实现订单支付状态高一致性的方法与*** | |
CN111343239B (zh) | 通信请求处理方法、通信方法、通信请求处理装置以及交易*** | |
CN202798801U (zh) | 一种用于实现分布式数据交互的通用性通讯*** | |
WO2023185042A1 (zh) | 直连通道的建立方法及装置 | |
CN116132420A (zh) | 一种面向通用互联网平台的集群密码加速方法及装置 | |
CN115987858A (zh) | 区块链网络的压力测试方法及相关设备 | |
Butler | Quantum modeling of distributed object computing | |
JP2022518171A (ja) | 通信証明書共有サービスに基づく共有サービス指標の決定方法 | |
CN107491448A (zh) | 一种HBase资源调整方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |