CN111831745A - 定时智能合约的调度方法及装置 - Google Patents
定时智能合约的调度方法及装置 Download PDFInfo
- Publication number
- CN111831745A CN111831745A CN202010505750.XA CN202010505750A CN111831745A CN 111831745 A CN111831745 A CN 111831745A CN 202010505750 A CN202010505750 A CN 202010505750A CN 111831745 A CN111831745 A CN 111831745A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- candidate
- timing
- contract
- scheduling
- 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.)
- Granted
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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种定时智能合约的调度方法及装置,其中该方法包括:检测申请步骤,检测区块中是否包括定时智能合约,申请成为所述定时智能合约的候选执行者,得到候选执行者序号,将所述定时智能合约的地址信息及所述候选执行者序号存入合约监测池;定时监测步骤,定时扫描所述合约监测池,获取所述定时智能合约,通过所述候选执行者序号得到首位候选状态,根据所述首位候选状态及所述定时智能合约的预设执行时间信息,执行定时功能或者调整所述候选执行者序号。本发明通过申请候选执行者,使得单个定时智能合约可以由多个候选执行者中择一执行,降低了因计算节点离线导致定时功能无法执行的可能性,保证了定时智能合约执行的可靠性。
Description
技术领域
本发明涉及区块链技术领域,特别涉及一种定时智能合约的调度方法及装置。
背景技术
智能合约是一种链上可执行代码,以区块的形式存在于区块链上。区块链上的计算节点不定时同步链上的区块。如果区块中存在智能合约,则计算节点在自己的智能合约容器中执行智能合约,并将执行结果以新区块的形式发布到区块链上。智能合约的执行可以是被动式的,计算节点调用智能合约函数执行区块中的智能合约,例如DAPP调用给定地址的智能合约,或者智能合约之间的相互调用。智能合约的执行也可以是定时触发,此时,计算节点不是在人工触发条件下执行区块中的智能合约,而是等待某个时间自动执行智能合约,例如合同到期自动履约,或者身份证明逾期自动作废。
区块链网络没有中心计算节点,网络中的计算节点的状态并不确定,因此,定时智能合约任务的调度执行的可靠性成为一个问题。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种定时智能合约的调度方法,能够提高定时智能合约任务的执行可靠性。
本发明还提出一种使用定时智能合约的调度方法的定时智能合约的调度系统。
根据本发明的第一方面实施例的定时智能合约的调度方法,包括:检测申请步骤,从网络层中获取区块,检测所述区块中是否包括定时智能合约,申请成为所述定时智能合约的候选执行者,得到候选执行者序号,将所述定时智能合约的地址信息及所述候选执行者序号存入合约监测池;定时监测步骤,定时扫描所述合约监测池,通过所述候选执行者序号得到首位候选状态,根据所述首位候选状态及所述定时智能合约的预设执行时间信息,执行所述定时智能合约的定时功能或者调整所述候选执行者序号。
根据本发明实施例的定时智能合约的调度方法,至少具有如下有益效果:通过申请候选执行者,使得单个定时智能合约可以由多个候选执行者中择一执行,由首位候选执行者根据预设执行时间信息执行相应的定时功能,降低了因计算节点离线导致定时功能无法执行的可能性,保证了定时智能合约执行的可靠性。
根据本发明的一些实施例,所述定时监测步骤包括:合约执行步骤,若首位候选状态为是,则根据所述预设执行时间信息,得到所述定时智能合约的调度状态,并根据所述调度状态调用所述定时智能合约相应的调度函数,生成相应的调度区块;候补处理步骤,若首位候选状态为否,则根据所述调度状态及所述调度区块的存在状态,调整所述候选执行者序号。候补计算节点根据调度状态及调度区块,调整自身的候选执行者序号,通过序号变化排序前移,便于在作为执行者的计算节点出现异常时及时处理定时智能合约,保证定时智能合约的有序执行,提升了可靠性。
根据本发明的一些实施例,所述合约执行步骤包括:所述定时智能合约的调度状态为就绪状态,则调用所述定时智能合约的签到函数进行签到,产生相应的签到区块;所述定时智能合约的调度状态为执行状态,则调用所述定时智能合约的定时函数,执行定时功能,产生相应的执行结果区块,并从所述合约监测池中删除所述定时智能合约的所述地址信息。通过定时智能合约的签到函数告知其它候选执行者本计算节点准备就绪准备处理定时智能合约,避免计算节点争夺执行权造成的重复计算或出错等状况,提高定时智能合约执行的可靠性。
根据本发明的一些实施例,所述候补处理步骤包括:所述定时智能合约的调度状态为就绪状态,若不存在所述签到区块,则所述候选执行者序号减0.5;所述定时智能合约的调度状态为执行状态,若存在所述执行结果区块,则从所述合约监测池中删除所述定时智能合约的所述地址信息,否则所述候选执行者序号减0.5。候补状态的计算节点对自身候选执行者序号进行相应处理,在作为当前执行者的计算节点离线时,可快速切入,按顺序取得执行权,使未处理完成的定时智能合约得以继续执行。
根据本发明的一些实施例,所述合约执行步骤及所述候补处理步骤中均还包括:从所述合约监测池中删除定时超期的所述定时智能合约的所述地址信息。清理超时信息,节省合约监测池存储空间,简化处理逻辑,避免处理出错。
根据本发明的一些实施例,所述首位候选状态被配置为:若所述候选执行者序号大于0且小于等于1,则所述首位候选状态为是;否则,所述首位候选状态为否。定时智能合约仅由当前首位候选处理,提高处理可靠性。
根据本发明的一些实施例,所述所述定时智能合约的预设执行时间信息包括:预设执行开始时间及预设执行开始超期时间。用于判断定时智能合约是否相应的调度状态。
根据本发明的第二方面实施例的定时智能合约的调度系统,包括:检测与申请模块,用于检测区块中是否包含有定时智能合约,申请成为所述定时智能合约的候选执行者,得到候选执行者序号;合约监测池模块,用于存储所述定时智能合约的地址信息及所述候选执行者序号;定时监测模块,用于定时扫描所述合约监测池,通过所述候选执行者序号得到首位候选状态,根据所述首位候选状态及所述定时智能合约的预设执行时间信息,执行所述定时智能合约的定时功能,以及调整所述候选执行者序号。
根据本发明实施例的定时智能合约的调度系统,至少具有如下有益效果:通过申请候选执行者,使得单个定时智能合约可以从多个候选执行中择一执行,因计算节点离线导致定时功能无法执行的可能性,保证了定时智能合约执行的可靠性。
根据本发明的一些实施例,所述定时监测模块包括:合约执行模块,用于根据所述预设执行时间信息,判断所述定时智能合约的调度状态,并根据所述调度状态调用所述定时智能合约相应的调度函数,生成相应的调度区块;候补处理模块,用于根据所述定时智能合约的所述调度状态及所述调度区块的存在状态,调整所述候选序号。合约执行模块在计算节点作为执行者时处理定时智能合约;候补处理模块则在计算节点作为候选者时处理候选执行者序号,进行排队处理,在作为执行者的计算节点离线或故障时,迅速按序作为候补,接手定时智能合约的处理。
根据本发明的一些实施例,还包括:侍服开关模块,用于控制计算节点是否参与处理所述定时智能合约。增加灵活性,可根据需要进行控制调整。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的方法的步骤示意图;
图2为本发明实施例的方法中的检测申请步骤示意图;
图3为本发明实施例的方法中定时监测的主要步骤示意图;
图4为本发明实施例的方法中定时监测的详细步骤示意图;
图5为本发明实施例的方法中定时智能合约的结构示意图;
图6为本发明实施例的方法中的定时智能合约的申请函数的实施示例图;
图7为本发明实施例的方法中定时智能合约的就绪区与执行区示意图;
图8为本发明实施例的方法中定时监测处理定时智能合约的实施示例图;
图9为本发明实施例的方法中定时智能合约的定时函数的实施示例图;
图10为本发明实施例的装置的结构示意框图;
图11为本发明实施例的装置的实施示例图之一;
图12为本发明实施例的装置的实施示例图之二。
附图标记:
检测与申请模块100、合约监测池模块200、定时监测模块300、侍服开关模块400;
合约执行模块310、候补处理模块320。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
参照图1,本发明实施例的方法包括以下步骤:检测申请步骤,从网络层中获取区块,检测区块中是否包括定时智能合约,申请成为定时智能合约的候选执行者,依照申请顺序得到相应候选执行者序号,并将定时智能合约的地址信息及候选执行者序号存入合约监测池;定时监测步骤,定时扫描合约监测池,获取所述定时智能合约,通过候选执行者序号得到首位候选状态,根据首位候选状态及定时智能合约的预设执行时间信息,执行定时智能合约的定时功能或者调整候选执行者序号。
其中,针对与每项定时智能合约,区块链计算节点的候选执行者序号唯一,与申请顺序相关。在本发明的某些实施例中,对于一个定时智能合约(假定名称为合约甲),计算节点A首先申请成为候选执行者,获得候选执行者序号为1,后续申请成为候选执行者的计算节点按申请顺序依次得到自身针对该定时智能合约的候选执行者序号2,3...等等。显然,计算节点A可以申请成为多个定时智能合约的候选执行者,且针对不同的定时智能合约有不同的候选执行者序号。计算节点A定时扫描合约监测池,获得合约甲,检测到候选执行者序号为1,则自身为首位候选执行者(即首位候选状态为是),根据合约甲的预设执行时间信息,执行合约甲的定时功能,并告知作为合约甲的其它候选执行者的计算节点处理状态,若其它候选计算节点检测发现计算节点A离线(可通过判断定时智能合约的调度状态,例如到执行时间仍未执行),则调整自身的候选执行者序号(例如:减1),成为首位侯先执行者;若其它候选计算节点检测到合约甲已被处理完成,则删除自身合约监测池中的合约甲。
参照图2,在本发明实施例中,计算节点申请成为定时智能合约的候选执行者的方法包括:从网络中同步到一个区块,判断该区块中是否包含定时智能合约,若没有,则退出;若有,则通过调用该定时智能合约的申请候选执行函数,调用成功即可获得相应的候选执行者序号,并将该定时智能合约的地址信息及相应的候选执行者序号成对存入合约监测池中。在本发明的一些实施例中,定时智能合约可以限制候选执行者的申请数量,申请节点已满,后续申请将申请失败。
本发明实施例中,参照图3,定时监测步骤包括:合约执行步骤,若首位候选状态为是,则根据预设执行时间信息,得到定时智能合约的调度状态,并根据调度状态调用定时智能合约相应的调度函数,生成相应的调度区块;候补处理步骤,若首位候选状态为否,则根据调度状态及调度区块的存在状态,调整候选执行者序号。
在本发明的某些实施例中,定时智能合约的调度状态依据预设执行时间信息分为就绪状态及执行状态,参照图4,单个定时智能合约的定时监测步骤包括:扫描合约监测池,获取到一个定时智能合约,若该定时智能合约相应的候选执行者序号(candiateID)取值范围为0<candiateID≤1,则该计算节点为首位候选执行者,担当正式执行者职责,进入合约执行步骤,根据定时智能合约的预设执行时间信息,检测到定时智能合约的调度状态为就绪状态,则调用定时智能合约的签到函数进行签到,产生相应的签到区块,定时智能合约的调度状态进入执行状态,继续执行定时智能合约的定时功能,包括:调用定时智能合约的定时函数,执行定时功能,产生相应的执行结果区块,并从合约监测池中删除定时智能合约。计算节点若进入合约执行步骤即若检测到定时智能合约的调度状态已为执行状态(前执行者计节点发生掉线或故障时,已签到),则直接调用定时智能合约的定时函数,执行定时功能,产生相应的执行结果区块,并从合约监测池中删除定时智能合约的相应信息(包括地址信息及对应的候选执行者序号)。否则该计算节点不为首位候选执行者,作为候补执行者,进入候补处理步骤;若定时智能合约的调度状态为就绪状态,若不存在签到区块,表明该定时智能合约应被处理但还未开始或者未被签到完成,则候选执行者序号减0.5,减小序号以便下一次定时扫描,及时有计节点处理;定时智能合约的调度状态为执行状态,若存在执行结果区块,表明该定时智能合约已被处理完成,则从合约监测池中删除该定时智能合约的地址信息,否则,表明该定时智能合约应被执行但未被执行,首位候选执行者有异常(如故障离线)的可能性,则自身候选执行者序号减0.5备下一次定时扫描时,候补计算节点及时处理。在本发明的实施例中,定时智能合约的调度状态的检测可以根据定时智能合约的预设执行时间信息来判定,例如预设执行时间信息包括:预设就绪时间,预设执行开始时间及预设超时时间,若当前时间进入预设就绪时间与预设执行开始时间之间,则调度状态为就绪状态;若当前时间进入预设执行开始时间与预设超时时间之间,则调度状态为执行状态;若当前时间已在预设超时时间之后,则调度状态为超时停止状态。在某发明的另一些实施例中,预设执行时间信息仅包括:预设执行开始时间及预设超时时间,若当前时间在预设执行开始时间之前的某个阈值时间内,即认为调度状态为就绪状态,在就绪状态时完成定时智能合约的签到调用后才切换为执行状态。
本发明的一些实施例中,定时智能合约的约定至少包含4个公开型函数,区块链网络的计算节点能够通过ABI(Application Binary Interface)调用这些函数。参照图5,包括:第1个函数称为定时函数,需要定时执行,为定时智能合约的定时功能,执行后将产生新区块;第2个函数称为申请函数,区块链网络的计算节点可调用申请成为定时函数的候选执行者;第3个函数称为签到函数,在临近定时时间时,候选执行者调用签到函数,在区块链网络上产生一个新区块,包含第一顺序候选执行者的地址等信息,向其他候选执行者表明该计算节点准备就绪执行定时函数;第4个函数是Gas分配函数,在成功执行定时函数后在候选执行者之间分配Gas。在区块链上执行写入操作时,网络中的每个全节点都会进行相同的计算并存储相同的值,这种执行的消耗是昂贵的,因此在区块链上每执行一个写入操作时,都需要支付一定的费用,用Gas为单位来计数,因此可以执行的命令都需要设置消耗的Gas值,因此,定时智能合约必须包括有Gas分配函数。
参照图5,定时智能合约中还约定包括:公开型状态变量isTimerContract,表示当前智能合约是否是定时智能合约;以及至少2个预设执行时间信息的相关变量,即:公开型状态变量beginTime和lastTime,用UTC时间表示,区块链网络的计算节点能够访问这2个状态变量。其中beginTime状态变量表示智能合约的定时函数的开始执行时间,lastTime状态变量表示智能合约的定时函数的最迟执行时间(即执行超时时间)。显然,lastTime表示的时间不早于beginTime。定时智能合约中还约定包括:1个公开型状态变量candidateHosts,用于表示允许成为候选执行者的计算节点的数量。应理解的是,在本发明实施例中预设执行时间信息相关的变量,也可用其它时间类型来表示,上述实施例不能理解为对本发明实施例的限制。
区块链网络的计算节点调用定时智能合约的申请函数申请成为定时智能合约的候选执行者,参照图6,如果申请成功,则candidateHosts自减1;如果candidateHosts不大于0,则停止申请。成功调用申请函数的时间与beginTime之间存在时间差,在这个时间差里候选执行者可能会离线,显然,candidateHosts值为1时,候选执行者一直在线可正常执行,离线则导致定时智能合约无法执行,因此,定时智能合约的candidateHosts状态变量的值设置为大于1时,有多个候选执行者,candidateHosts值越大,候选执行者便越多,定时执行的可靠性越高。
计算节点在区块链网络上部署定时智能合约时,连同上述状态变量和公开型函数发布到定时智能合约所依附的区块,最终将区块发布到区块链网络。
计算节点从区块链网络上同步到区块,检查当前区块,根据定时智能合约的状态变量isTimerContract判断是否包含定时智能合约。如果包含,则申请成为候选执行者;如果申请成功,则将当前区块加入到合约监测池。由于通过ABI和合约地址以只读方式访问状态变量isTimerContract,因此不会产生新的区块,也不会消耗计算节点的Gas。计算节点申请成为候选执行者过程阐述如下。计算节点调用定时智能合约的申请函数,参照图6,传入申请候选执行者的计算节点的地址,读取定时智能合约的lastTime和candidateHosts,如果当前UTC时间不早于lastTime或者candidateHosts不大于0,则申请失败,结束;否则,定时智能合约的状态变量candidateHosts减少1,返回递增的候选执行顺序号candidateID。若计算节点申请成功,将定时智能合约的地址、candidateID加入合约监测池。显然本发明的实施例中,计算节点申请失败,将不会产生新区块,不会消耗Gas。
定时智能合约的就绪区是指在beginTime之前的某一时刻点到lastTime之间的时间段,第一顺序候选执行者在就绪区调用定时智能合约的签到函数;执行区是指beginTime到lastTime之间的时间段,第一顺序候选执行者在执行区调用定时智能合约的定时函数,参照图7所示。如果第一顺序候选执行者离线,那么其后的候选执行者由于candidateID自减而依次成为第一顺序候选执行者。
计算节点通过定时扫描合约监测池来完成定时智能合约的定时任务,具体执行过程参照图8,如下:
S100,定时启动合约监测池扫描任务;
S200,从中获得定时智能合约地址,若未获得智能合约地址,则返回步骤S100,等待下次定时扫描任务;
S300,检测智能合约的状态变量candidateID是否在区间(0,1]上,如果是,则转入合约执行步骤S400,否则转入候补处理步骤S500;
合约执行步骤S400(图8中未标识,参见中间竖直虚线的左边)包括:S410,检测当前UTC时间是否进入定时智能合约的就绪区,若是,则转入S420,否则转入S430;
S420,检测是否已调用定时智能合约的签到函数,若否,则调用定时智能合约的签到函数,生成一个新的签到区块;若是直接转入S430;
S430,检测当前UTC时间是否进入定时智能合约的执行区,如果是,则调用定时智能合约的定时器函数,生成一个新的执行结果区块,并从合约监测池中删除该定时智能合约,转入S200获取下一个定时智能合约;否则转入S440;
S440,检测当前UTC时间是否晚于lastTime,即定时函数是否超时,如果是,则从合约监测池中删除该智能合约;然后,转入S200获取下一个定时智能合约;
候补处理步骤S500(图8中未标识,参见中间竖直虚线的右边)包括:S510,检测当前UTC时间是否进入定时智能合约的就绪区,如果是,则转入S520,否则转入S530;
S520,检测该定时智能合约的签到区块,若不存在,candidateID自减0.5(此时,签到区块不存在表明该定时智能合约应被首位候选计算节点签到但未签到,该计算节点可能出现异常,其它候补节点调整候选执行者序号,便于及时处理);
S530,检测当前UTC时间是否进入定时智能合约的执行区,如果是,则转入S540,否则转入S550;
S540,检测执行定时智能合约的定时函数所产生的执行结果区块,若有,则从合约监测池删除该智能合约,否则candidateID自减0.5,然后转入S200获取下一个定时智能合约(此时,执行结果区块不存在表明该定时智能合约应被首位候选计算节点执行但未执行,该计算节点可能出现异常,其它候补节点调整候选执行者序号,便于及时处理);
S550,检测当前UTC时间是否晚于lastTime,即定时函数是否超时,如果是,则从合约监测池中删除该智能合约;转入S200获取下一个定时智能合约。
下面举例说明候补执行者对序号的处理过程。假定计算节点A为首位候选执行者,取得合约甲的执行权;计算节点B的候选执行者序号i初始值为2,为合约甲的候补执行者。计算节点B在第一次定时监测中,检测到合约甲已进入就绪状态,但未发现签到区块,变更i=1.5,等到第二次定时扫描。在第二次定时扫描中,若依旧是合约甲已进入就绪状态,但未发现签到区块,变更i=1,在下一扫描周期即可获得执行权;若合约甲已进入执行区块,但未发现执行结果区块,变更i=1,在下一扫描周期获得执行权,在下一扫描周期中若合约甲未过期,则调用合约甲的定时函数,否则作超期删除处理。其它情况与此类似,通过上述步骤S100至S400即可得知,不再赘述。
智能合约的定时函数的实施例参照图9,首先检查自身的定时函数是否已经执行过,如果是,则结束;否则继续执行,检查当前UTC时间是否在beginTime与lastTime之间,如果否,则结束退出;否则继续执行定时函数的其他功能模块,产生新的执行结果区块;最后调用调用Gas分配函数将定时智能合约发布者预设的Gas按预设的规则分配到候选执行者节点。具体的Gas数量及分配规则,可由定时智能合约发布者在部署定时智能合约时设置。
参照图10,本发明实施例的装置包括:检测与申请模块100、合约监测池模块200及定时监测模块300。其中,检测与申请模块100,用于检测区块中是否包含有定时智能合约,申请成为定时智能合约的候选执行者,得到候选执行者序号;合约监测池模块200,用于存储定时智能合约的地址信息及候选执行者序号;定时监测模块300,用于定时扫描合约监测池,通过候选执行者序号得到首位候选状态,根据首位候选状态及定时智能合约的预设执行时间信息,执行定时智能合约的定时功能,以及调整候选执行者序号。
本发明实施例的装置的定时监测模块300包括:合约执行模块310及候补处理模块320。其中,合约执行模块310,用于根据预设执行时间信息,判断定时智能合约的调度状态,并调度状态调用定时智能合约相应的调度函数,生成相应的调度区块;候补处理模块320,用于根据定时智能合约的调度状态及调度区块的存在状态,调整候选执行者序号。
本发明的实施例的装置,实施部署示意图见图11,在区块链网络的计算节点上设置定时智能合约侍服器(即本发明实施例的装置),位于区块链网络客户端的以太坊协议层之中,并与客户端的缺省账号绑定,定时智能合约侍服器与区块同步模块、虚拟机模块有数据和控制交互。定时智能合约侍服器由检测与申请模块100、合约监测池200、定时监测模块300构成。区块同步模块从网络层获取区块,传入到定时智能合约侍服器的检测与申请模块。通过虚拟机模块调用并执行定时智能合约的相关函数,产生新区块。
本发明的某些实施例的装置中,参照图10,还包括侍服开关模块400,用于控制计算节点是否参与处理定时智能合约。在本发明的一个实施例中,参照图12,在Geth的以太坊协议层eth模块增加本发明实施例的虚拟装置(即定时智能合约侍服器),向区块链同步模块fetch提供调用“检测与申请”的接口,同时通过虚拟机模块evm调用并执行智能合约函数,产生新区块。采用智能合约编辑编译工具Remix按照定时智能合约的具体细节编制并生成定时智能合约,在Geth上部署发布定时智能合约。在具体实施时,可以依据实际需要添加侍服开关模块400,通过Geth的web3模块对定时智能合约侍服器的行为进行进一步的控制,见图12所示。在定时智能合约侍服器设置1个“受理”开关标志,web3模块控制“受理”的开关状态,控制计算节点是否参与处理定时智能合约;检测与申请模块在检测到一个定时智能合约时,与web3模块交互以决定是否参与处理当前的定时智能合约。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所述技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (10)
1.一种定时智能合约的调度方法,其特征在于,包括:
检测申请步骤,从网络层中获取区块,检测所述区块中是否包括定时智能合约,申请成为所述定时智能合约的候选执行者,得到候选执行者序号,将所述定时智能合约的地址信息及所述候选执行者序号存入合约监测池;
定时监测步骤,定时扫描所述合约监测池,获取所述定时智能合约,通过所述候选执行者序号得到首位候选状态,根据所述首位候选状态及所述定时智能合约的预设执行时间信息,执行所述定时智能合约的定时功能或者调整所述候选执行者序号。
2.根据权利要求1所述的定时智能合约的调度方法,其特征在于,所述定时监测步骤包括:
合约执行步骤,若首位候选状态为是,则根据所述预设执行时间信息,得到所述定时智能合约的调度状态,并根据所述调度状态调用所述定时智能合约相应的调度函数,生成相应的调度区块;
候补处理步骤,若首位候选状态为否,则根据所述调度状态及所述调度区块的存在状态,调整所述候选执行者序号。
3.根据权利要求2所述的定时智能合约的调度方法,其特征在于,所述合约执行步骤包括:
所述定时智能合约的调度状态为就绪状态,则调用所述定时智能合约的签到函数进行签到,产生相应的签到区块,进入执行状态;
所述定时智能合约的调度状态为执行状态,则调用所述定时智能合约的定时函数,执行定时功能,产生相应的执行结果区块,并从所述合约监测池中删除所述定时智能合约的所述地址信息。
4.根据权利要求3所述的定时智能合约的调度方法,其特征在于,所述候补处理步骤包括:
所述定时智能合约的调度状态为就绪状态,若不存在所述签到区块,则所述候选执行者序号减0.5;
所述定时智能合约的调度状态为执行状态,若存在所述执行结果区块,则从所述合约监测池中删除所述定时智能合约的所述地址信息,否则所述候选执行者序号减0.5。
5.根据权利要求2所述的定时智能合约的调度方法,其特征在于,所述合约执行步骤及所述候补处理步骤中均还包括:从所述合约监测池中删除定时超期的所述定时智能合约的所述地址信息。
6.根据权利要求1所述的定时智能合约的调度方法,其特征在于,所述首位候选状态被配置为:若所述候选执行者序号大于0且小于等于1,则所述首位候选状态为是;否则,所述首位候选状态为否。
7.根据权利要求1所述的定时智能合约的调度方法,其特征在于,所述所述定时智能合约的预设执行时间信息包括:预设执行开始时间及预设执行开始超期时间。
8.一种定时智能合约的调度装置,使用权利要求1至7中任一项的方法,其特征在于,包括:
检测与申请模块,用于检测区块中是否包含有定时智能合约,申请成为所述定时智能合约的候选执行者,得到候选执行者序号;
合约监测池模块,用于存储所述定时智能合约的地址信息及所述候选执行者序号;
定时监测模块,用于定时扫描所述合约监测池,通过所述候选执行者序号得到首位候选状态,根据所述首位候选状态及所述定时智能合约的预设执行时间信息,执行所述定时智能合约的定时功能,以及调整所述候选执行者序号。
9.根据权利要求8所述的定时智能合约的调度装置,其特征在于,所述定时监测模块包括:
合约执行模块,用于根据所述预设执行时间信息,判断所述定时智能合约的调度状态,并根据所述调度状态调用所述定时智能合约相应的调度函数,生成相应的调度区块;
候补处理模块,用于根据所述定时智能合约的所述调度状态及所述调度区块的存在状态,调整所述候选执行者序号。
10.根据权利要求9所述的定时智能合约的调度装置,其特征在于,还包括:
侍服开关模块,用于控制计算节点是否参与处理所述定时智能合约。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010505750.XA CN111831745B (zh) | 2020-06-05 | 2020-06-05 | 定时智能合约的调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010505750.XA CN111831745B (zh) | 2020-06-05 | 2020-06-05 | 定时智能合约的调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831745A true CN111831745A (zh) | 2020-10-27 |
CN111831745B CN111831745B (zh) | 2023-04-18 |
Family
ID=72898609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010505750.XA Active CN111831745B (zh) | 2020-06-05 | 2020-06-05 | 定时智能合约的调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831745B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448654A (zh) * | 2021-09-02 | 2022-05-06 | 中国科学院信息工程研究所 | 一种基于区块链的分布式可信审计安全存证方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
CN108804096A (zh) * | 2017-05-05 | 2018-11-13 | 中思博安科技(北京)有限公司 | 一种基于智能合约的任务调度执行方法和装置 |
US20180365686A1 (en) * | 2017-06-19 | 2018-12-20 | Hitachi, Ltd. | Smart contract lifecycle management |
CN110138865A (zh) * | 2019-05-17 | 2019-08-16 | 南方科技大学 | 空间众包任务分配方法、装置、设备及存储介质 |
CN110297689A (zh) * | 2019-05-06 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备及介质 |
US20190318346A1 (en) * | 2018-04-17 | 2019-10-17 | Lendoit Technologies Israel Ltd. | Smart contract executed within a blockchain |
US20190324772A1 (en) * | 2017-07-31 | 2019-10-24 | Zhongan Information Technology Service Co., Ltd. | Method and device for processing smart contracts |
CN110704490A (zh) * | 2019-10-15 | 2020-01-17 | 北京启迪区块链科技发展有限公司 | 一种基于智能合约的业务数据处理方法和装置 |
CN111124631A (zh) * | 2019-12-02 | 2020-05-08 | 深圳前海微众银行股份有限公司 | 一种基于区块链网络的任务处理方法及装置 |
-
2020
- 2020-06-05 CN CN202010505750.XA patent/CN111831745B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
CN107103054A (zh) * | 2017-04-12 | 2017-08-29 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储系统与实现方法 |
CN108804096A (zh) * | 2017-05-05 | 2018-11-13 | 中思博安科技(北京)有限公司 | 一种基于智能合约的任务调度执行方法和装置 |
US20180365686A1 (en) * | 2017-06-19 | 2018-12-20 | Hitachi, Ltd. | Smart contract lifecycle management |
US20190324772A1 (en) * | 2017-07-31 | 2019-10-24 | Zhongan Information Technology Service Co., Ltd. | Method and device for processing smart contracts |
US20190318346A1 (en) * | 2018-04-17 | 2019-10-17 | Lendoit Technologies Israel Ltd. | Smart contract executed within a blockchain |
CN110297689A (zh) * | 2019-05-06 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备及介质 |
CN110138865A (zh) * | 2019-05-17 | 2019-08-16 | 南方科技大学 | 空间众包任务分配方法、装置、设备及存储介质 |
CN110704490A (zh) * | 2019-10-15 | 2020-01-17 | 北京启迪区块链科技发展有限公司 | 一种基于智能合约的业务数据处理方法和装置 |
CN111124631A (zh) * | 2019-12-02 | 2020-05-08 | 深圳前海微众银行股份有限公司 | 一种基于区块链网络的任务处理方法及装置 |
Non-Patent Citations (5)
Title |
---|
MAXIMILIAN WOHRER等: "Smart contracts:security patterns in the ethereum ecosystem and solidity" * |
THOMAS DICKERSON等: "Adding Concurrency to Smart Contracts" * |
ZIBIN ZHENG等: "An overview on smart contracts: Challenges, advances and platforms" * |
孙仁超: "基于区块链的微电网智能合约应用研究" * |
谢红玲等: "基于能源区块链网络的微电网经济调度模型" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448654A (zh) * | 2021-09-02 | 2022-05-06 | 中国科学院信息工程研究所 | 一种基于区块链的分布式可信审计安全存证方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111831745B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7139629B2 (en) | Planning and scheduling for failure recovery system and method | |
CN106803790B (zh) | 一种集群系统的升级控制方法及装置 | |
US6856845B2 (en) | Monitoring and reporting incremental job status system and method | |
CN111782360A (zh) | 分布式任务调度方法及装置 | |
CN107566460B (zh) | 分布式部署计划任务的方法和系统 | |
CN105487924A (zh) | 一种批处理控制方法及装置 | |
CN111831745B (zh) | 定时智能合约的调度方法及装置 | |
CN109034652A (zh) | 一种动态派工方法和装置 | |
CN110099108B (zh) | 一种区块链事件去重方法、装置、计算机设备及存储介质 | |
CN108319538A (zh) | 大数据平台运行状态的监控方法和系统 | |
CN114971506A (zh) | 流程引擎与业务事件处理分离的系统及方法 | |
JP2019028913A (ja) | テスト実行制御プログラム、テスト実行制御方法、およびテスト実行制御装置 | |
CN113807821A (zh) | 基于离散场景同步工单的方法、系统、设备及存储介质 | |
CN114840248A (zh) | 一种基于企业级分布式应用服务的系统灰度发布方法 | |
CN106412088A (zh) | 一种数据同步方法及终端 | |
CN116627474B (zh) | 基于强化学习的智能设备智能安全管理方法、装置及设备 | |
CN113342499B (zh) | 分布式任务调用方法、装置、设备、存储介质、程序产品 | |
CN110795334B (zh) | 一种测试装置和方法 | |
KR20150033041A (ko) | 자동화 라인의 정상 상태 판단을 위한 기준 마스터 패턴 생성 방법 | |
US7310561B2 (en) | Identifying critical operations of a production process | |
CN112035221B (zh) | 一种基于定时调度的PaaS平台无效容器清理方法和系统 | |
CN115685729A (zh) | 一种基于数据采集的串行运行的方法 | |
RU2494463C2 (ru) | Способ обработки данных для построения производственных расписаний и контроля за их выполнением и система устройств для реализации способа | |
JP4618015B2 (ja) | 自動販売機、自動販売機管理装置および自動販売機管理システム | |
CN116594749A (zh) | 一种任务管控方法、装置、设备及存储介质 |
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 |