首页 / 专利库 / 银行与财务事项 / 分布式账本技术 / 区块链 / 一种基于智能合约的任务调度执行方法和装置

一种基于智能合约的任务调度执行方法和装置

阅读:2发布:2022-05-05

专利汇可以提供一种基于智能合约的任务调度执行方法和装置专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于 智能合约 的任务调度执行方法和装置,其中,所述任务调度执行方法包括以下步骤:调度表构建步骤,将多个智能合约插入 区 块 链 ,基于插入区块链的智能合约生成合约任务,并使用所述合约任务来构建调度表;待执行队列构建步骤,对所述调度表中的合约任务进行封装,并使用封装的合约任务来构建待执行队列;执行步骤,对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行。根据本发明的基于智能合约的任务调度执行方法和装置,能够提高智能合约的执行效率,增强 风 险抵抗能 力 。,下面是一种基于智能合约的任务调度执行方法和装置专利的具体信息内容。

1.一种基于智能合约的任务调度执行方法,其特征在于,所述任务调度执行方法包括以下步骤:
调度表构建步骤,将多个智能合约插入链,基于插入区块链的智能合约生成合约任务,并使用所述合约任务来构建调度表;
待执行队列构建步骤,对所述调度表中的合约任务进行封装,并使用封装的合约任务来构建待执行队列;
执行步骤,对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行。
2.根据权利要求1所述的基于智能合约的任务调度执行方法,其特征在于,在将多个智能合约插入区块链的步骤之前,还包括对所述多个智能合约进行合约共识的步骤,并且插入区块链的智能合约是通过合约共识的智能合约。
3.根据权利要求1所述的基于智能合约的任务调度执行方法,其特征在于,在将多个智能合约插入区块链的步骤之后,还包括第一区块链查询步骤,用于查询智能合约的插入是否成功,并且生成合约任务所基于的智能合约是插入成功的智能合约。
4.根据权利要求1所述的基于智能合约的任务调度执行方法,其特征在于,在对所述调度表中的合约任务进行封装之前,还包括第二区块链查询步骤,用于查询与所述合约任务对应的智能合约的入链是否成功,并且被封装的合约任务与入链成功的智能合约相对应。
5.根据权利要求1所述的基于智能合约的任务调度执行方法,其特征在于,在对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行之前,还包括前置条件检查步骤,用于检查从所述待执行队列中取出的封装的合约任务的前置条件是否满足,并且改变不满足所述前置条件的封装的合约任务在所述待执行队列中的位置
6.根据权利要求1所述的基于智能合约的任务调度执行方法,其特征在于,在对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行之后,还包括执行结果检验步骤,用于:
根据执行失败的执行结果改变所述调度表中的相应合约任务的状态和/或所述待执行队列中相应封装的合约任务的状态,或者
根据执行成功的执行结果生成新智能合约并将所述新智能合约插入区块链并且基于所述新智能合约生成新合约任务并将其插入所述调度表。
7.根据权利要求6所述的基于智能合约的任务调度执行方法,其特征在于,在所述执行结果检验步骤之后,还包括失败任务扫描步骤和成功任务清理步骤,
所述失败任务扫描步骤用于记录执行结果为执行失败的合约任务的执行失败次数,并且在所述执行失败次数超过预定阈值时报告与该合约任务相关的信息;
所述成功任务清理步骤用于记录执行结果为执行成功的合约任务的执行后时间,并且在所述执行后时间超过预定阈值时删除该合约任务。
8.根据权利要求1所述的基于智能合约的任务调度执行方法,其特征在于,所述调度表在执行机的磁盘中构建,所述待执行队列在执行机的内存中构建。
9.一种基于智能合约的任务调度执行装置,其特征在于,所述任务调度执行装置包括调度表构建模块、待执行队列构建模块和执行模块,其中:
所述调度表构建模块用于将多个智能合约插入区块链,基于插入区块链的智能合约生成合约任务,并使用所述合约任务来构建调度表;
所述待执行队列构建模块用于对所述调度表中的合约任务进行封装,并使用封装的合约任务来构建待执行队列;
所述执行模块用于对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的方法的步骤。

说明书全文

一种基于智能合约的任务调度执行方法和装置

技术领域

[0001] 本发明涉及智能合约的技术领域,更具体而言,涉及对基于智能合约的任务进行调度和执行的方法和装置。

背景技术

[0002] 智能合约是代码和数据的集合,也叫“可编程合约”。一般而言,智能合约是通过程序代码定义的,并且预设了各种执行条件;当触发执行条件时执行定义的各种行为。其中的“智能”是执行上的智能,也就是说,如果达到某个预设执行条件,则合约自动地执行。
[0003] 现有技术中,智能合约作为一个整体(可以通过整段代码实现)在内存中执行。对于包括多个节点的应用场景,智能合约在各个节点上独立地执行,各个节点通常只对自身的智能合约执行情况进行监测和/或维护。现有技术中没有针对多个节点的调度机制。此外,执行智能合约的各个节点通常也是链节点,也就是说,执行合约的节点处于区块链集群之中。
[0004] 现有技术存在诸多问题。首先,智能合约整体地在内存中执行,造成内存占用量大,即占用资源较多;其次,单节点独立运行而无调度管理机制,因此从整体度考虑运行险大且易被攻击;第三,合约运行必须在区块链上实现,合约运行与区块链没有分离,一旦合约运行出现异常问题,会在一定程度上影响到区块链的正常运作。
[0005] 因此,如何创建一种基于智能合约的任务调度执行方法和装置,能够低负担高效地运行智能合约,同时降低运行风险并减小对区块链的影响,已经成为本领域亟待解决的技术问题。
[0006] 背景技术部分公开的信息只是为了加强对本发明的一般背景的理解,不应视为承认或默认这种信息构成本领域技术人员已知的现有技术。

发明内容

[0007] 鉴于背景技术中存在的问题,本发明要解决的技术问题包括以下问题中的一个或多个:对于存在多个智能合约的应用场景,如何以降低的成本实现智能合约的提高的执行效率,如何增强执行智能合约时的风险抵抗能,如何避免和减小单节点故障或攻击的影响,如何减小智能合约的执行对于区块链的影响。
[0008] 为此,本发明提供一种基于智能合约的任务调度执行方法,包括以下步骤:调度表构建步骤,将多个智能合约插入区块链,基于插入区块链的智能合约生成合约任务,并使用所述合约任务来构建调度表;待执行队列构建步骤,对所述调度表中的合约任务进行封装,并使用封装的合约任务来构建待执行队列;执行步骤,对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行。
[0009] 优选的,在将多个智能合约插入区块链的步骤之前,还包括对所述多个智能合约进行合约共识的步骤,并且插入区块链的智能合约是通过合约共识的智能合约。
[0010] 优选的,在将多个智能合约插入区块链的步骤之后,还包括第一区块链查询步骤,用于查询智能合约的插入是否成功,并且生成合约任务所基于的智能合约是插入成功的智能合约。
[0011] 优选的,在对所述调度表中的合约任务进行封装之前,还包括第二区块链查询步骤,用于查询与所述合约任务对应的智能合约的入链是否成功,并且被封装的合约任务与入链成功的智能合约相对应。
[0012] 优选的,在对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行之前,还包括前置条件检查步骤,用于检查从所述待执行队列中取出的封装的合约任务的前置条件是否满足,并且改变不满足所述前置条件的封装的合约任务在所述待执行队列中的位置
[0013] 优选的,在对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行之后,还包括执行结果检验步骤,用于:根据执行失败的执行结果改变所述调度表中的相应合约任务的状态和/或所述待执行队列中相应封装的合约任务的状态,或者根据执行成功的执行结果生成新智能合约并将所述新智能合约插入区块链并且基于所述新智能合约生成新合约任务并将其插入所述调度表。
[0014] 优选的,在所述执行结果检验步骤之后,还包括失败任务扫描步骤和成功任务清理步骤,所述失败任务扫描步骤用于记录执行结果为执行失败的合约任务的执行失败次数,并且在所述执行失败次数超过预定阈值时报告与该合约任务相关的信息;所述成功任务清理步骤用于记录执行结果为执行成功的合约任务的执行后时间,并且在所述执行后时间超过预定阈值时删除该合约任务。
[0015] 优选的,所述调度表在执行机的磁盘中构建,所述待执行队列在执行机的内存中构建。
[0016] 此外,本发明提供一种基于智能合约的任务调度执行装置,包括:调度表构建模块、待执行队列构建模块和执行模块,其中:所述调度表构建模块用于将多个智能合约插入区块链,基于插入区块链的智能合约生成合约任务,并使用所述合约任务来构建调度表;所述待执行队列构建模块用于对所述调度表中的合约任务进行封装,并使用封装的合约任务来构建待执行队列;所述执行模块用于对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行。
[0017] 此外,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序可以由处理器执行以实现上文所述的方法。
[0018] 根据本发明的基于智能合约的任务调度执行方法、装置和计算机可读存储介质,能够提高智能合约的执行效率,增强风险抵抗能力。附图说明
[0019] 图1是用于实施根据本发明实施例的基于智能合约的任务调度执行方法的系统的示意图。
[0020] 图2是根据本发明实施例的基于智能合约的任务调度执行方法的流程图
[0021] 图3是根据本发明实施例的基于智能合约的任务调度执行装置的示意图。
[0022] 为了清楚地进行描述,省略了与本发明技术实质无密切关系的部分;并且在说明书和附图中,相同或相似的元件和步骤由相同的附图标记表示。应理解的是,为了说明本发明的基本原理以及各个特征,附图有一定程度的简化,本发明的范围并不限于附图中所表示的具体形式。

具体实施方式

[0023] 下面将结合附图详细描述本发明的实施例。尽管结合示例性实施例描述了本发明,但应该理解,本说明书并未意欲将本发明限制于这些示例性实施例。相反,本发明不仅意欲覆盖这些示例性实施例,而且也覆盖包含在由所附权利要求书限定的本发明的实质和范围内的各种替代、修改、等价形式。
[0024] 在对本发明的具体实施例进行描述之前,为了使得本领域技术人员能够更加清楚地理解技术方案,在这里对本领域的一些技术术语进行示例性的说明。这样的说明并不意图将本发明的范围限定于所说明的具体形式。
[0025] 区块链(Block Chain):狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
[0026] 智能合约(Smart Contract):是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。有人认为,一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。
[0027] 现有技术中,基于区块链技术的智能合约包括基于IBM超级账本(Hyperledger)、Fabric区块链框架中的链码(chaincode)以及以太坊(Ethereum)区块链框架中的链码等等。通常情况下,智能合约的生成和实现包括利用前端编写智能合约程序代码(例如,使用Solidity、Java、Go和Python等计算机语言),然后通过各种方式在例如合约虚拟机或执行机中对智能合约程序进行调度和执行。
[0028] 下面结合图1具体描述用于实施根据本发明实施例的基于智能合约的任务调度执行方法的系统。
[0029] 在图1中,上方示出了可用于根据本发明实施例的区块链10,下方示出了可用于调度和执行基于智能合约的任务的执行机。在这里,执行机可以是区块链的一个节点。由于区块链的思想就是全部节点在有限通讯的情况下进行相同的动作,并达到相同的结果,各节点相互印证以保证系统的完整和有效性,因此,区块链的每个节点都可以拥有相同且完整的全部组件。
[0030] 根据本发明的实施例,执行机包括磁盘111和内存112。磁盘111用于存储合约任务的调度表,内存112用于存储封装的合约任务的待执行队列。这一点还将在下文中描述。
[0031] 根据本发明的实施例,利用流线(pipeline)机制将完成合约共识的多个智能合约(例如合约A、合约B、合约C)插入区块链10。如果插入成功,则基于插入成功的智能合约生成合约任务,并使用合约任务来构建调度表。换言之,生成与智能合约相对应的合约任务(例如合约任务A、合约任务B、合约任务C),并将其插入执行机调度表。具体而言,调度表可以在执行机的磁盘111中构建,但本发明不限于此。
[0032] 相反,在上面的过程中,如果插入不成功,则可以向监控系统发出警报,并记录错误日志。
[0033] 可以重复执行上述操作,分别将全部合约插入区块链并且生成对应的合约任务并插入调度表。
[0034] 执行机可以包括扫描模块113,扫描模块113的工作方式可以是:首先取出任务A,然后去区块链查询与任务A对应的合约是否已经成功入链。如果入链成功,则从区块链取回相关合约信息并对任务A进行封装,然后将封装的任务A放入执行机待执行队列;如果入链失败,则向监控系统发出警报,并记录错误日志。
[0035] 这里所述的相关合约信息可以是与特定任务对应的合约的全部信息。通过查询入链情况和封装,可以增强对异常情况(例如,节点故障、节点恶意修改数据等)的抵抗能力。
[0036] 以类似的方式,对任务B和任务C进行封装并且插入待执行队列。具体而言,待执行队列可以在执行机的内存112中构建,但本发明不限于此。
[0037] 随后执行机的执行模块114根据待执行队列中的顺序对待执行队列中的封装的合约任务进行顺序执行。例如,首先取出任务A,检查任务A对应的合约A的第一个任务的前置条件是否达到,假如没有达到,则修改执行机调度表中任务A的状态为“未满足前置条件”,等待下次调度扫描。执行机处理完任务A之后,开始处理任务B,也是首先检查任务B对应的合约B的第一个任务的前置条件是否达到,假如已经达到,则开始执行合约B的第一个任务,结果任务执行失败,则修改执行机调度表中任务B的状态为“执行失败”,并记录失败次数,等待下次调度扫描。执行机接着执行任务C,检查任务C对应的合约C的第一个任务的前置条件是否达到,假如已达到,则开始执行C的第一个任务,结果执行成功,然后将任务产生的结果C′插入区块链,修改执行机调度表中任务C的状态为“执行成功”,然后根据C′组成执行机调度表需要的数据(任务C′)插入调度表,等待扫描调度。调度模块中的扫描进程下次扫描时,会将任务A、B和C′加载到待执行队列,然后执行进程会再次按照上述过程按照顺序执行三个任务,并根据执行结果修改调度表状态。
[0038] 需要注意的是,图1仅示例性地示出了可以实施根据本发明实施例的方法的系统,不应将图1中所示内容均视为本发明的必要技术特征而对本发明构成限制。对于本领域技术人员而言,根据应用场景和实际需要,本发明的实施例还可以包括未在图1中示出的其他特征。
[0039] 下面结合图2具体描述根据本发明实施例的基于智能合约的任务调度执行方法的步骤。
[0040] 根据本发明的实施例,基于智能合约的任务调度执行方法包括以下步骤:
[0041] 调度表构建步骤,将多个智能合约插入区块链,基于插入区块链的智能合约生成合约任务,并使用所述合约任务来构建调度表;
[0042] 待执行队列构建步骤,对所述调度表中的合约任务进行封装,并使用封装的合约任务来构建待执行队列;
[0043] 执行步骤,对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行。
[0044] 根据本发明实施例的基于智能合约的任务调度执行方法可以应用于区块链的任意节点,当然,本领域技术人员应该理解,上述方法也可以应用于任何其他适用于或需要对基于智能合约的任务进行调度执行的场景。
[0045] 根据本发明的实施例,在将多个智能合约插入区块链的步骤之前,还可以包括对多个智能合约进行合约共识的步骤。在这种情况下,保证插入区块链的智能合约是通过合约共识的智能合约。
[0046] 在本发明的技术领域中,“合约共识”包括对合约本体的共识和对合约执行结果的共识,合约共识类似于区块链中对交易的共识,即:各节点对拟记录的智能合约(或合约的执行结果)进行投票、验票。当验票通过后,则认为合约共识一致,合约(或合约的执行结果)有效;当验票未通过时,则认为无效。当然,本领域技术人员应该理解,可以根据应用场景和实际需要选择适当的合约共识机制和算法,如工作量证明算法,权益证明算法等等。
[0047] 根据本发明的实施例,在将多个智能合约插入区块链的步骤之后,还可以包括第一区块链查询步骤,用于查询智能合约的插入是否成功。在这种情况下,生成合约任务所基于的智能合约是插入成功的智能合约。
[0048] 在此阶段如果插入不成功,例如发生插入错误,可以重新尝试插入;如果持续错误,则可以记录错误日志后放弃插入此合约。因为区块链系统中存在多个节点,并会进行对比共识,在某节点发现自身记录数据与其他节点数据不同时(缺少此合约记录数据),则会与其他节点进行同步,完成后即解决此问题。
[0049] 然后,在对调度表中的合约任务进行封装的步骤之前,还可以包括第二区块链查询步骤,用于查询与合约任务对应的智能合约的入链是否成功。在这种情况下,被封装的合约任务与入链成功的智能合约相对应。
[0050] 在本发明的技术领域中,一般情况下,区块链由多个节点组成,且在运行中存在同步过程。客观上可能存在以下特殊情况,即当前节点已将合约/任务存入区块链,但系统中其他节点不认可,并未记录。在同步过程中,根据区块链系统“少数服从多数”的基本思想,记录的区块链数据可能会在和其他节点数据同步的过程中被调整,甚至删除。此时,对于当前节点而且,该合约/任务存在于内存,但相应记录(曾经被记录)不在区块链中。所以在执行任务之前可以先检验合约是否还存在,从而避免和减小单节点故障或攻击的影响。
[0051] 对于区块链系统,所有数据以区块链最终记录的数据为准,如果入链失败,则认定此任务对应的合约不存在,记录错误后,放弃此任务。
[0052] 根据本发明的实施例,可以根据流水线机制对待执行队列中的任务进行执行,直到检测到队列结束时结束程序。
[0053] 根据本发明的实施例,在对待执行队列中的封装的合约任务按照待执行队列中的顺序进行顺序执行之前,还包括前置条件检查步骤,用于检查从待执行队列中取出的封装的合约任务的前置条件是否满足,并且改变不满足前置条件的封装的合约任务在待执行队列中的位置。例如,可以将不满足前置条件的任务放置于队列的末尾,记录相关数据,并且等待下次扫描。
[0054] 在本发明的技术领域中,前置条件即任务触发要求,如规定时间、特定事件等。前置条件与任务为强制对应关系,即前置条件未达到,任务禁止运行;如前置条件满足,则任务必须执行。任务无法修改前置条件。
[0055] 根据本发明的实施例,在执行任务之后,还可以包括执行结果检验步骤,即对任务的执行结果进行检验。
[0056] 对于执行失败的任务,可以改变调度表中的相应合约任务的状态和/或待执行队列中相应封装的合约任务的状态;对于执行成功的任务,可以生成新智能合约并将新智能合约插入区块链并且基于新智能合约生成新合约任务并将其插入调度表。
[0057] 在本发明的技术领域中,存在部分原因可导致任务执行失败,如:自身节点通讯故障、对任务执行结果进行共识却未收集到足够的有效投票等。典型的情况就是节点在合约创建后断开网络,则此后节点无法执行记录动作(因为无法获得足够的投票。特殊定义节点可独立运行的除外),但系统中其他节点仍在正常工作。在故障节点网络恢复后,则可与其他节点进行同步,并进行故障恢复。在下次扫描时,可以发现任务已执行成功,则自动记录状态并转入合约的下一个任务。
[0058] 根据本发明的实施例,在所述执行结果检验步骤之后,还可以包括失败任务扫描步骤和成功任务清理步骤。
[0059] 所述失败任务扫描步骤用于记录执行结果为执行失败的合约任务的执行失败次数,并且在所述执行失败次数超过预定阈值时报告与该合约任务相关的信息;所述成功任务清理步骤用于记录执行结果为执行成功的合约任务的执行后时间,并且在所述执行后时间超过预定阈值时删除该合约任务。
[0060] 例如,节点可以包括失败任务扫描进程,可以进行定时扫描,将失败次数超过阈值(此阈值可根据需要进行配置)的任务筛选出来,由于这些任务不可能再被执行机执行,所以记录这些任务的相关信息,并且上报监控系统,然后监控人员会对这类任务进行处理。另外,节点也可以包括成功任务清理进程,可以对调度表进行清理操作,将已经执行成功并且超过阈值(此阈值可配置)时间范围的任务删除,以免数据过多,导致负担过重操作变慢。
[0061] 从另一角度说,根据本发明实施例的执行调度机制可以将合约拆分成多个任务个体,并将任务保存在磁盘上,按照合约任务的执行顺序进行调度,执行到某个任务时再加载某个任务,任务执行完成后移出内存。主要流程为,合约共识结束之后,状态正确情况下,插入调度表,然后又执行机调度模块进行定时扫描,将任务加载到内存,并且执行任务,根据任务执行结果,操作调度表,保证下次调度正确执行。其中合约共识利用流水线机制进行,主要好处在于模拟流水线作业流程,最大限度的发挥效率。合约状态可以分为“合约未知”、“合约创建”、“合约签名”、“合约执行”、“合约完成”和“合约废弃”状态,每个状态对应合约的不同时刻。
[0062] 从区块链中的单个节点角度考虑,一种示意性的调度流程可以描述如下:合约共识完成之后,当合约状态为“签名”态并且签名个数有效时(合约签名状态时需要所有拥有者都签名后才有效),由交易流水线生成执行机调度表需要的数据并组成任务插入执行机调度表。执行机调度模块中的扫描进程定时扫描调度表,并对扫描结果中的任务进行筛选过滤,过滤条件主要包括:任务是否已经进入待执行队列等待执行(这里包括正在被执行)、任务是否到达开始执行时间、任务是否已经超过结束时间、任务执行失败次数是否已经超过阈值、任务状态是否正确、任务是否已经执行成功等。经过筛选后,选出需要执行的任务,根据任务中记录的相对应的合约标识符进行区块链查询操作,查询到标识符对应的合约全部信息并打包成待执行合约任务,放入执行机待执行队列。如果在查询过程中出现任何问题,将记录问题并上报监控系统,同时停止放入待执行队列。执行机调度模块的执行进程按照待执行队列的顺序,取出待执行合约任务。然后根据合约中任务列表,进行检查,检查任务前置条件是否达到。如果前置条件未达到,则在同级任务中选择下个任务进行前置条件检查;如果前置条件已达到,则开始执行此任务。任务开始执行时,首先对合约任务中的包含的表达式进行解析,判断表达式类型(数字、字符串、数组、日期、条件表达式、函数、成员变量等)。如果是数字、字符串、数组和日期,则直接进行赋值操作;如果是成员变量,则对变量进行求值;如果是函数和条件表达式,则执行函数进行求值,这个过程中如果函数有参数,则还要重复上述操作,进行表达式解析。其次,在表达式解析执行完成后,根据表达式执行的结果,进行相应处理,例如资产的冻结解冻等,然后访问区块链,进行交易的插入。最后,根据任务执行情况操作调度表。如果任务执行成功,更新此任务在执行机调度表中的状态为“执行成功”,保证此任务不再被加载执行。同时生成下个任务并插入任务执行表,等待被执行;如果任务执行失败,更新此任务执行机调度表中的状态为“未执行”,并记录执行失败次数,保证此任务再次加载执行。执行机调度模块根据调度表的内容,反复执行上述操作,完成调度任务。
[0063] 根据本发明实施例的执行调度机制能够产生以下技术效果。首先,每个合约拆分成任务级别,多个合约中的所有任务被轮换执行,被执行的任务加载内存,不被执行的任务暂时休眠,大大节省了内存空间,节省资源,提高执行效率,也保证了多任务间的并行。其次,合约拆分成任务后存储在磁盘或硬盘上,有效的避免了系统突然异常停止运行后合约丢失的问题。第三,合约不要求在部署节点上运行,不限于单个节点,如果采用集群方式部署,合约可以在多个节点运行,可以有效的避免单点故障或者攻击。第四,合约与区块链独立分开,相互没有影响,合约运行是否异常不会影响到区块链的正常运作。
[0064] 图3是根据本发明实施例的基于智能合约的任务调度执行装置的示意图。
[0065] 基于本发明的任务调度执行方法,图3中公开了一种基于智能合约的任务调度执行装置300。该装置300包括:调度表构建模块301、待执行队列构建模块302和执行模块303。
[0066] 调度表构建模块301用于将多个智能合约插入区块链,基于插入区块链的智能合约生成合约任务,并使用所述合约任务来构建调度表;
[0067] 待执行队列构建模块302用于对所述调度表中的合约任务进行封装,并使用封装的合约任务来构建待执行队列;
[0068] 执行模块303用于对所述待执行队列中的封装的合约任务按照所述待执行队列中的顺序进行顺序执行。
[0069] 需要注意的是,图3仅示例性地示出了根据本发明实施例的装置,不应将图3中所示内容均视为本发明的必要或全部技术特征而对本发明构成限制。对于本领域技术人员而言,根据应用场景和实际需要,本发明的实施例还可以包括未在图3中示出的其他特征,例如其他模块,用于在上文描述的模块起作用之前或之后实施与前文所述相同或不同的各种技术手段。
[0070] 另外,本发明也可以实施为一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在被处理器执行时实现本发明实施例的方法的各个步骤。
[0071] 计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪速存储器或者其它存储技术、CD-ROM、数字式多功能光盘(DVD)或者其他光盘存储装置、磁带盒、磁带、磁盘存储装置或者其它磁存储装置、或者可以用于存储所需信息并且可以通过计算机访问的任何其它物理介质。
[0072] 上文以举例说明的目的,呈现了本发明的特定示例性实施例。上文的描述并不意图对本发明进行无遗漏的穷举,也不意图将本发明限制为所公开的确切形式。显然,本领域技术人员根据上文的描述可以进行很多改变和变化。选择并描述这些示例性实施例是为了解释本发明的特定原理及其实际应用,从而使本领域技术人员能够制造并使用本发明的各个示例性实施例,及其各种替代和修改形式。事实上,本发明的范围由所附的权利要求及其等效形式限定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈