CN109872157A - 区块链中执行智能合约的方法及装置 - Google Patents
区块链中执行智能合约的方法及装置 Download PDFInfo
- Publication number
- CN109872157A CN109872157A CN201711251277.1A CN201711251277A CN109872157A CN 109872157 A CN109872157 A CN 109872157A CN 201711251277 A CN201711251277 A CN 201711251277A CN 109872157 A CN109872157 A CN 109872157A
- Authority
- CN
- China
- Prior art keywords
- time
- intelligent contract
- block chain
- current time
- execution
- 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.)
- Pending
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种区块链中执行智能合约的方法及装置,涉及数据处理技术领域,能够解决现有技术无法自动化执行智能合约的问题。本发明的方法主要包括:接收请求方发送的智能合约标识和执行时间策略;根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约。本发明主要适用于定期执行智能合约的场景中。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种区块链中执行智能合约的方法及装置。
背景技术
区块链技术是一种去中心化且寓于分布式结构的数据存储、传输和证明的方法,用数据区块取代了目前互联网对中心服务器的依赖。智能合约是指以数字形式定义的能够自动执行条款的合约。在区块链技术领域,智能合约特指基于预定事件触发、不可篡改、自动执行的计算机程序。区块链上的节点可以通过执行智能合约实现各种交易。目前,当需要执行某个智能合约时,都需要用户手动在节点上进行一些必要操作,才能触发节点调用并执行该智能合约。然而,在实际应用中,往往存在需要定期完成某项任务的需求,完成该任务就需要用户定期触发调用并执行对应的智能合约,而无法实现自动化执行智能合约。
发明内容
有鉴于此,本发明提供的区块链中执行智能合约的方法及装置,其目的在于实现自动化执行智能合约。
为了解决上述问题,本发明主要提供如下技术方案:
第一方面,本发明提供了一种区块链中执行智能合约的方法,所述方法包括:
接收请求方发送的智能合约标识和执行时间策略;
根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约。
可选的,所述执行时间策略包括:执行周期、单次执行时间。
可选的,所述根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约包括:
根据所述执行周期和所述单次执行时间,确定本次待执行的时间;
基于预设时间确定规则,确定区块链的当前时间;
当所述当前时间与所述本次待执行的时间匹配时,执行所述智能合约标识所对应的智能合约。
可选的,所述当所述当前时间与所述本次待执行的时间匹配时,执行所述智能合约标识所对应的智能合约包括:
若所述本次待执行的时间是固定数值,则当所述当前时间与所述本次待执行的时间相等时,执行所述智能合约标识所对应的智能合约;
若所述本次待执行的时间是数值范围,则当所述当前时间属于所述本次待执行的时间时,执行所述智能合约标识所对应的智能合约。
可选的,所述根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约包括:
定期请求发生器根据所述执行周期和所述单次执行时间,确定本次请求时间,所述本次请求时间小于所述单次执行时间;
当确定到达所述本次请求时间时,所述定期请求发生器向预言机发送携带所述单次执行时间和所述智能合约标识的智能合约执行请求;
所述预言机接收到所述智能合约执行请求后,基于预设时间确定规则,确定区块链的当前时间;
当所述当前时间与所述单次执行时间匹配时,所述预言机执行所述智能合约标识所对应的智能合约。
可选的,所述当所述当前时间与所述单次执行时间匹配时,所述预言机执行所述智能合约标识所对应的智能合约包括:
若所述单次执行时间是固定数值,则当所述当前时间与所述单次执行时间相等时,执行所述智能合约标识所对应的智能合约;
若所述单次执行时间是数值范围,则当所述当前时间属于所述单次执行时间时,执行所述智能合约标识所对应的智能合约。
可选的,所述根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约包括:
定期请求发生器根据所述执行周期和所述单次执行时间,确定本次待执行的时间;
所述定期请求发生器基于预设时间确定规则,确定区块链的当前时间;
当所述当前时间与所述本次待执行的时间匹配时,所述定期请求发生器向预言机发送携带所述智能合约标识的智能合约执行请求;
所述预言机接收到所述智能合约执行请求后,执行所述智能合约标识所对应的智能合约。
可选的,所述基于预设时间确定规则,确定区块链的当前时间包括:
获取本次执行区块链出块的节点本地的当前时间;
将所述本次执行区块链出块的节点本地的当前时间确定为所述区块链的当前时间。
可选的,所述基于预设时间确定规则,确定区块链的当前时间包括:
向独立于所述区块链的时间服务器发送时间获取请求;
接收所述时间服务器返回的当前时间;
将所述时间服务器返回的当前时间确定为所述区块链的当前时间。
第二方面,本发明提供了一种区块链中执行智能合约的装置,所述装置包括:
接收单元,用于接收请求方发送的智能合约标识和执行时间策略;
执行单元,用于根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约。
可选的,所述执行时间策略包括:执行周期、单次执行时间。
可选的,所述执行单元包括:
第一确定模块,用于根据所述执行周期和所述单次执行时间,确定本次待执行的时间;
第二确定模块,用于基于预设时间确定规则,确定区块链的当前时间;
第一执行模块,用于当所述当前时间与所述本次待执行的时间匹配时,执行所述智能合约标识所对应的智能合约。
可选的,所述第一执行模块,用于在所述本次待执行的时间是固定数值的情况下,当所述当前时间与所述本次待执行的时间相等时,执行所述智能合约标识所对应的智能合约;在所述本次待执行的时间是数值范围的情况下,当所述当前时间属于所述本次待执行的时间时,执行所述智能合约标识所对应的智能合约。
可选的,所述第二确定模块,用于获取本次执行区块链出块的节点本地的当前时间;将所述本次执行区块链出块的节点本地的当前时间确定为所述区块链的当前时间;或者,向独立于所述区块链的时间服务器发送时间获取请求;接收所述时间服务器返回的当前时间;将所述时间服务器返回的当前时间确定为所述区块链的当前时间。
可选的,所述执行单元包括:
第三确定模块,用于由定期请求发生器根据所述执行周期和所述单次执行时间,确定本次请求时间,所述本次请求时间小于所述单次执行时间;
第一发送模块,用于当确定到达所述本次请求时间时,所述定期请求发生器向预言机发送携带所述单次执行时间和所述智能合约标识的智能合约执行请求;
第四确定模块,用于当所述预言机接收到所述智能合约执行请求后,基于预设时间确定规则,确定区块链的当前时间;
第二执行模块,用于当所述当前时间与所述单次执行时间匹配时,所述预言机执行所述智能合约标识所对应的智能合约。
可选的,所述第二执行模块,用于在所述单次执行时间是固定数值的情况下,当所述当前时间与所述单次执行时间相等时,执行所述智能合约标识所对应的智能合约;在所述单次执行时间是数值范围的情况下,当所述当前时间属于所述单次执行时间时,执行所述智能合约标识所对应的智能合约。
可选的,所述第四确定模块,用于当所述预言机接收到所述智能合约执行请求后,获取本次执行区块链出块的节点本地的当前时间;将所述本次执行区块链出块的节点本地的当前时间确定为所述区块链的当前时间;或者,向独立于所述区块链的时间服务器发送时间获取请求;接收所述时间服务器返回的当前时间;将所述时间服务器返回的当前时间确定为所述区块链的当前时间。
可选的,所述执行单元包括:
第五确定模块,用于由定期请求发生器根据所述执行周期和所述单次执行时间,确定本次待执行的时间;
第六确定模块,用于由所述定期请求发生器基于预设时间确定规则,确定区块链的当前时间;
第二发送模块,用于当所述当前时间与所述本次待执行的时间匹配时,所述定期请求发生器向预言机发送携带所述智能合约标识的智能合约执行请求;
第三执行模块,用于当所述预言机接收到所述智能合约执行请求后,执行所述智能合约标识所对应的智能合约。
可选的,所述第六确定模块,用于由所述定期请求发生器获取本次执行区块链出块的节点本地的当前时间;将所述本次执行区块链出块的节点本地的当前时间确定为所述区块链的当前时间;或者,向独立于所述区块链的时间服务器发送时间获取请求;接收所述时间服务器返回的当前时间;将所述时间服务器返回的当前时间确定为所述区块链的当前时间。
第三方面,本发明提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如第一方面所述的区块链中执行智能合约的方法。
第四方面,本发明提供了一种区块链中执行智能合约的装置,所述装置包括存储介质和处理器;
所述处理器,适于实现各指令;
所述存储介质,适于存储多条指令;
所述指令适于由所述处理器加载并执行如第二方面所述的区块链中执行智能合约的方法。
借由上述技术方案,本发明提供的技术方案至少具有下列优点:
本发明提供的区块链中执行智能合约的方法及装置,能够当请求方需要执行智能合约时,无需用户手动触发调用、执行,而只需请求方向特定程序发送智能合约标识和执行时间策略,该特征程序就会根据该执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行该智能合约标识所对应的智能合约,从而实现了智能合约的自动化执行。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种区块链中执行智能合约的方法的流程图;
图2示出了本发明实施例提供的另一种区块链中执行智能合约的方法的流程图;
图3示出了本发明实施例提供的又一种区块链中执行智能合约的方法的流程图;
图4示出了本发明实施例提供的再一种区块链中执行智能合约的方法的流程图;
图5示出了本发明实施例提供的一种区块链中执行智能合约的装置的组成框图;
图6示出了本发明实施例提供的另一种区块链中执行智能合约的装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为了实现自动化执行智能合约的功能,本发明实施例提供了一种区块链中执行智能合约的方法,如图1所示,所述方法主要包括:
101、接收请求方发送的智能合约标识和执行时间策略。
当用户需要实现对某个智能合约的自动化执行时,可以基于请求方所属设备设置待执行智能合约的智能合约标识和执行时间策略,然后由请求方将该智能合约标识和执行时间策略发送给特定程序。
其中,智能合约标识用于唯一标识一份智能合约,即通过智能合约标识能够唯一定位对应的智能合约。所述执行时间策略可以包括:执行周期(即重复执行的时间间隔)、单次执行时间。也就是说,执行时间策略能够反映出请求方期望智能合约每次被执行的时间以及相隔多久再执行一次。此外,当请求方只希望智能合约执行一次时,执行周期可以设置为空,仅设置单次执行时间;当请求方希望智能合约执行N次后,就停止自动执行时,执行时间策略还可以包括执行次数。总之,本发明实施例对执行时间策略的具体内容不做限制。
需要补充的是,本发明实施例的执行主体特定程序可以位于独立于请求方的其他设备,也可以位于请求方本地。当位于请求方本地时,本步骤的具体实现方式是:特定程序接收请求方中的请求程序发送的智能合约标识和执行时间策略。
102、根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约。
在获得智能合约标识和执行时间策略后,可以根据执行时间策略和基于预设时间确定规则确定的区块链的当前时间,来确定此时是否已经达到执行智能合约标识所对应的智能合约的时机;若确定此时已经达到执行时机,则执行智能合约标识所对应的智能合约;若确定此时未达到执行时机,则不执行智能合约标识所对应的智能合约,而是继续判断执行时机是否到达。
在区块链底层的各个节点是通过点对点网络进行通信的,各个节点可以共同维护数据的同步。然而,各个节点的本地时间却可能不是同步的,例如节点1的本地时间是2017年11月1日12:12:12,节点2的本地时间却是2017年11月1日12:12:13,因此为了使得时间得到同步,在需要确定当前时间时,就基于预设时间确定规则来确定当前时间。其中,预设时间确定规则可以包括多种,例如可以将某个节点的本地时间确定为所需要的时间,也可以将区块链外某个设备的时间确定为所需要的时间。
下面以以下两种具体规则为例进行阐述:
方法一:获取本次执行区块链出块的节点本地的当前时间;将所述本次执行区块链出块的节点本地的当前时间确定为所述区块链的当前时间。
其中,区块链中可能存在多个区块链出块节点(俗称“矿机”),每个区块链出块节点写入的区块不同,且同一时刻只有一个区块链出块节点出块(即生成区块)。为了使得区块链的当前时间的唯一性,本发明实施例将本次执行区块链出块的节点(即最近一次出块的区块链出块节点)本地的当前时间作为区块链的当前时间。
在实际应用中,特定程序可能存储在本次执行区块链出块的节点上,也可能存储在其他节点上。因此获取本次执行区块链出块的节点本地的当前时间的具体实现方式可以为:当特定程序位于本次执行区块链出块的节点上时,直接读取本地的当前时间;当所述特定程序不位于所述本次执行区块链出块的节点上时,可以向所述本次执行区块链出块的节点发送时间获取请求,然后接收所述本次执行区块链出块的节点反馈的当前时间。
需要补充的是,在实际应用中,除了以本次执行区块链出块的节点的本地时间作为区块链的时间外,还可以以区块链中其他任一节点的本地时间作为区块链的时间。
方法二:先向独立于所述区块链的时间服务器发送时间获取请求,然后接收所述时间服务器返回的当前时间,最后将所述时间服务器返回的当前时间确定为所述区块链的当前时间。
由于相对于本次执行区块链出块的节点本地时间而言,专门计时的时间服务器计算的时间更为准确,所以优先使用方法二计算区块链的当前时间。
需要补充的是,执行智能合约可以由特定程序直接执行智能合约,也可以由特定程序先调用智能合约,然后交由请求方来执行。具体执行方式在此不做限定。本发明实施例所提出的特定程序既可以以普通程序的方式体现,也可以以智能合约的方式体现(即特定程序是一份智能合约);既可以位于区块链上,也可以位于区块链外。当位于区块链外时,可以位于区块链账号上。
本发明实施例提供的区块链中执行智能合约的方法,能够当请求方需要执行智能合约时,无需用户手动触发调用、执行,而只需请求方向特定程序发送智能合约标识和执行时间策略,该特征程序就会根据该执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行该智能合约标识所对应的智能合约,从而实现了智能合约的自动化执行。
在实际应用中,上述实施例的执行主体特定程序可以是一段不可分割的程序,可以是独立的两段程序。当该特定程序是一段不可分割的程序时,图1所示的实施例可以具体细化为图2;当该特定程序由定期请求发生器和具有时间服务功能和智能合约执行功能的预言机两部分组成时,图1所示的实施例可以具体细化为图3;当该特定程序由能够确定执行时间的定期请求发生器和具有智能合约执行功能的预言机两部分组成时,图1所示的实施例可以具体细化为图4。
如图2所示,本发明的另一个实施例提供的区块链中执行智能合约的方法包括:
201、接收请求方发送的智能合约标识和执行时间策略。
本步骤的具体实现方式可以参见上述步骤101的详解,在此不再赘述。
202、根据所述执行周期和所述单次执行时间,确定本次待执行的时间。
当首次执行智能合约时,本次待执行的时间=单次执行时间,下次待执行的时间=单次执行时间+1个周期,第N次待执行的时间=单次执行时间+(N-1)个周期;当执行周期为空时,本次待执行的时间=单次执行时间,且单次执行时间中包括日期和24小时中的某个时间。
示例性的,当执行周期是1天,单次执行时间是12:00时,特定程序确定每次需要执行的时间依次为2017年11月1日12:00,2017年11月2日12:00,2017年11月3日12:00…
203、基于预设时间确定规则,确定区块链的当前时间。
本步骤的具体实现方式可以参见上述步骤102的详解,在此不再赘述。
204、当所述当前时间与所述本次待执行的时间匹配时,执行所述智能合约标识所对应的智能合约。
在实际应用中,请求方对执行智能合约的时机可能要求比较严格,也可能要求不严格。也就是说,请求方可能请求在某个时间点执行某个智能合约,也可能请求在某个时间段内执行一次某个智能合约,而无需必须限定到某个具体的时间点。
因此,本步骤的具体实现方式可以为:
(1)若所述本次待执行的时间是固定数值,则当所述当前时间与所述本次待执行的时间相等时,执行所述智能合约标识所对应的智能合约。
(2)若所述本次待执行的时间是数值范围,则当所述当前时间属于所述本次待执行的时间时,执行所述智能合约标识所对应的智能合约,且在所述本次待执行的时间内一般只执行一次智能合约,除非请求方要求连续执行多次。
如图3所示,本发明的另一个实施例提供的区块链中执行智能合约的方法包括:
301、定期请求发生器接收请求方发送智能合约标识和执行时间策略。
本步骤的具体实现方式可以参见上述步骤101的详解,在此不再赘述。
需要补充的是,定期请求发生器既可以以普通程序的方式体现,也可以以智能合约的方式体现;既可以位于区块链上,也可以位于区块链外。
302、定期请求发生器根据所述执行周期和所述单次执行时间,确定本次请求时间。
由于定期请求发生器向预言机发送智能合约执行请求需要花费时间,且定期请求发生器确定的时间和预言机确定的时间可能有误差,所以为了使得预言机能够在定期请求发生器请求的单次执行时间来执行智能合约,则需要在定期请求发生器请求的单次执行时间之前将请求发送给预言机,因此所述本次请求时间小于所述单次执行时间。定期请求发生器可以先根据所述执行周期和所述单次执行时间确定本次待执行的时间,然后根据本次待执行的时间确定本次请求时间。例如,本次请求时间=本次待执行时间-X秒。
其中,根据所述执行周期和所述单次执行时间确定本次待执行的时间的具体实现方式可以参见上述步骤202的详解。
303、当确定到达所述本次请求时间时,所述定期请求发生器向预言机发送携带所述单次执行时间和所述智能合约标识的智能合约执行请求。
预言机具有时间服务功能和智能合约执行功能。其既可以以普通程序的方式体现,也可以以智能合约的方式体现;既可以位于区块链上,也可以位于区块链外。此外,定期请求发生器和预言机可以位于同一个设备上,也可以位于不同设备上。
304、所述预言机接收到所述智能合约执行请求后,基于预设时间确定规则,确定区块链的当前时间。
预言机确定区块链的当前时间的具体实现方式可以参见上述步骤102的详解。
305、当所述当前时间与所述单次执行时间匹配时,所述预言机执行所述智能合约标识所对应的智能合约。
与图2所示实施例相类似的,请求方请求的单次执行时间可以是一个时间点(即固定数值),也可以是一个时间段(即数值范围)。若所述单次执行时间是固定数值,则本步骤的具体实现方式可以为:当所述当前时间与所述单次执行时间相等时,执行所述智能合约标识所对应的智能合约;若所述单次执行时间是数值范围,则本步骤的具体实现方式可以为:当所述当前时间属于所述单次执行时间时,执行所述智能合约标识所对应的智能合约。
如图4所示,本发明的另一个实施例提供的区块链中执行智能合约的方法包括:
401、定期请求发生器接收请求方发送的智能合约标识和执行时间策略。
本步骤的具体实现方式可以参见上述步骤101的详解,在此不再赘述。
需要补充的是,定期请求发生器既可以以普通程序的方式体现,也可以以智能合约的方式体现;既可以位于区块链上,也可以位于区块链外。
402、定期请求发生器根据所述执行周期和所述单次执行时间,确定本次待执行的时间。
本步骤的具体实现方式可以参见上述步骤202的详解,在此不再赘述。
403、所述定期请求发生器基于预设时间确定规则,确定区块链的当前时间。
本步骤的具体实现方式可以参见上述步骤102详解,在此不再赘述。
404、当所述当前时间与所述本次待执行的时间匹配时,所述定期请求发生器向预言机发送携带所述智能合约标识的智能合约执行请求。
预言机具有智能合约执行功能。其既可以以普通程序的方式体现,也可以以智能合约的方式体现;既可以位于区块链上,也可以位于区块链外。此外,定期请求发生器和预言机可以位于同一个设备上,也可以位于不同设备上。
本次待执行的时间可以是一个固定数值,也可以是一个数值范围。若本次待执行的时间是一个固定数值,则当前时间等于本次待执行的时间时,当前时间与本次待执行的时间匹配;若本次待执行的时间是一个数值范围,则当前时间属于本次待执行的时间时,当前时间与本次待执行的时间匹配。
405、所述预言机接收到所述智能合约执行请求后,执行所述智能合约标识所对应的智能合约。
进一步的,依据上述方法实施例,本发明的另一个实施例还提供了一种区块链中执行智能合约的装置,如图5所示,所述装置主要包括:
接收单元51,用于接收请求方发送的智能合约标识和执行时间策略;
执行单元52,用于根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约。
可选的,所述执行时间策略包括:执行周期、单次执行时间。
可选的,如图6所示,所述执行单元52包括:
第一确定模块521,用于根据所述执行周期和所述单次执行时间,确定本次待执行的时间;
第二确定模块522,用于基于预设时间确定规则,确定区块链的当前时间;
第一执行模块523,用于当所述当前时间与所述本次待执行的时间匹配时,执行所述智能合约标识所对应的智能合约。
可选的,所述第一执行模块523,用于在所述本次待执行的时间是固定数值的情况下,当所述当前时间与所述本次待执行的时间相等时,执行所述智能合约标识所对应的智能合约;在所述本次待执行的时间是数值范围的情况下,当所述当前时间属于所述本次待执行的时间时,执行所述智能合约标识所对应的智能合约。
可选的,所述第二确定模块522,用于获取本次执行区块链出块的节点本地的当前时间;将所述本次执行区块链出块的节点本地的当前时间确定为所述区块链的当前时间;或者,向独立于所述区块链的时间服务器发送时间获取请求;接收所述时间服务器返回的当前时间;将所述时间服务器返回的当前时间确定为所述区块链的当前时间。
可选的,如图6所示,所述执行单元52包括:
第三确定模块524,用于由定期请求发生器根据所述执行周期和所述单次执行时间,确定本次请求时间,所述本次请求时间小于所述单次执行时间;
第一发送模块525,用于当确定到达所述本次请求时间时,所述定期请求发生器向预言机发送携带所述单次执行时间和所述智能合约标识的智能合约执行请求;
第四确定模块526,用于当所述预言机接收到所述智能合约执行请求后,基于预设时间确定规则,确定区块链的当前时间;
第二执行模块527,用于当所述当前时间与所述单次执行时间匹配时,所述预言机执行所述智能合约标识所对应的智能合约。
可选的,所述第二执行模块527,用于在所述单次执行时间是固定数值的情况下,当所述当前时间与所述单次执行时间相等时,执行所述智能合约标识所对应的智能合约;在所述单次执行时间是数值范围的情况下,当所述当前时间属于所述单次执行时间时,执行所述智能合约标识所对应的智能合约。
可选的,所述第四确定模块526,用于当所述预言机接收到所述智能合约执行请求后,获取本次执行区块链出块的节点本地的当前时间;将所述本次执行区块链出块的节点本地的当前时间确定为所述区块链的当前时间;或者,向独立于所述区块链的时间服务器发送时间获取请求;接收所述时间服务器返回的当前时间;将所述时间服务器返回的当前时间确定为所述区块链的当前时间。
可选的,如图6所示,所述执行单元52包括:
第五确定模块528,用于由定期请求发生器根据所述执行周期和所述单次执行时间,确定本次待执行的时间;
第六确定模块529,用于由所述定期请求发生器基于预设时间确定规则,确定区块链的当前时间;
第二发送模块5210,用于当所述当前时间与所述本次待执行的时间匹配时,所述定期请求发生器向预言机发送携带所述智能合约标识的智能合约执行请求;
第三执行模块5211,用于当所述预言机接收到所述智能合约执行请求后,执行所述智能合约标识所对应的智能合约。
可选的,所述第六确定模块529,用于由所述定期请求发生器获取本次执行区块链出块的节点本地的当前时间;将所述本次执行区块链出块的节点本地的当前时间确定为所述区块链的当前时间;或者,向独立于所述区块链的时间服务器发送时间获取请求;接收所述时间服务器返回的当前时间;将所述时间服务器返回的当前时间确定为所述区块链的当前时间。
本发明实施例提供的区块链中执行智能合约的装置,能够当请求方需要执行智能合约时,无需用户手动触发调用、执行,而只需请求方向特定程序发送智能合约标识和执行时间策略,该特征程序就会根据该执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行该智能合约标识所对应的智能合约,从而实现了智能合约的自动化执行。
本发明实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上所述区块链中执行智能合约的方法。
存储介质可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种区块链中执行智能合约的装置,所述装置包括存储介质和处理器;
所述处理器,适于实现各指令;
所述存储介质,适于存储多条指令;
所述指令适于由所述处理器加载并执行如上所述区块链中执行智能合约的方法。
处理器中包含内核,由内核去存储介质中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来自动化执行智能合约。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:
接收请求方发送的智能合约标识和执行时间策略;
根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种区块链中执行智能合约的方法,其特征在于,所述方法包括:
接收请求方发送的智能合约标识和执行时间策略;
根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约。
2.根据权利要求1所述的方法,其特征在于,所述执行时间策略包括:执行周期、单次执行时间。
3.根据权利要求2所述的方法,其特征在于,所述根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约包括:
根据所述执行周期和所述单次执行时间,确定本次待执行的时间;
基于预设时间确定规则,确定区块链的当前时间;
当所述当前时间与所述本次待执行的时间匹配时,执行所述智能合约标识所对应的智能合约。
4.根据权利要求3所述的方法,其特征在于,所述当所述当前时间与所述本次待执行的时间匹配时,执行所述智能合约标识所对应的智能合约包括:
若所述本次待执行的时间是固定数值,则当所述当前时间与所述本次待执行的时间相等时,执行所述智能合约标识所对应的智能合约;
若所述本次待执行的时间是数值范围,则当所述当前时间属于所述本次待执行的时间时,执行所述智能合约标识所对应的智能合约。
5.根据权利要求2所述的方法,其特征在于,所述根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约包括:
定期请求发生器根据所述执行周期和所述单次执行时间,确定本次请求时间,所述本次请求时间小于所述单次执行时间;
当确定到达所述本次请求时间时,所述定期请求发生器向预言机发送携带所述单次执行时间和所述智能合约标识的智能合约执行请求;
所述预言机接收到所述智能合约执行请求后,基于预设时间确定规则,确定区块链的当前时间;
当所述当前时间与所述单次执行时间匹配时,所述预言机执行所述智能合约标识所对应的智能合约。
6.根据权利要求5所述的方法,其特征在于,所述当所述当前时间与所述单次执行时间匹配时,所述预言机执行所述智能合约标识所对应的智能合约包括:
若所述单次执行时间是固定数值,则当所述当前时间与所述单次执行时间相等时,执行所述智能合约标识所对应的智能合约;
若所述单次执行时间是数值范围,则当所述当前时间属于所述单次执行时间时,执行所述智能合约标识所对应的智能合约。
7.根据权利要求2所述的方法,其特征在于,所述根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约包括:
定期请求发生器根据所述执行周期和所述单次执行时间,确定本次待执行的时间;
所述定期请求发生器基于预设时间确定规则,确定区块链的当前时间;
当所述当前时间与所述本次待执行的时间匹配时,所述定期请求发生器向预言机发送携带所述智能合约标识的智能合约执行请求;
所述预言机接收到所述智能合约执行请求后,执行所述智能合约标识所对应的智能合约。
8.根据权利要求3至7中任一项所述的方法,其特征在于,所述基于预设时间确定规则,确定区块链的当前时间包括:
获取本次执行区块链出块的节点本地的当前时间;
将所述本次执行区块链出块的节点本地的当前时间确定为所述区块链的当前时间。
9.根据权利要求3至7中任一项所述的方法,其特征在于,所述基于预设时间确定规则,确定区块链的当前时间包括:
向独立于所述区块链的时间服务器发送时间获取请求;
接收所述时间服务器返回的当前时间;
将所述时间服务器返回的当前时间确定为所述区块链的当前时间。
10.一种区块链中执行智能合约的装置,其特征在于,所述装置包括:
接收单元,用于接收请求方发送的智能合约标识和执行时间策略;
执行单元,用于根据所述执行时间策略和基于预设时间确定规则确定的区块链的当前时间,执行所述智能合约标识所对应的智能合约。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至权利要求9中任意一项所述的区块链中执行智能合约的方法。
12.一种区块链中执行智能合约的装置,其特征在于,所述装置包括存储介质和处理器;
所述处理器,适于实现各指令;
所述存储介质,适于存储多条指令;
所述指令适于由所述处理器加载并执行如权利要求1至权利要求9中任意一项所述的区块链中执行智能合约的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711251277.1A CN109872157A (zh) | 2017-12-01 | 2017-12-01 | 区块链中执行智能合约的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711251277.1A CN109872157A (zh) | 2017-12-01 | 2017-12-01 | 区块链中执行智能合约的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109872157A true CN109872157A (zh) | 2019-06-11 |
Family
ID=66914663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711251277.1A Pending CN109872157A (zh) | 2017-12-01 | 2017-12-01 | 区块链中执行智能合约的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109872157A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339187A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 基于智能合约的数据处理方法、装置、设备和存储介质 |
CN111401903A (zh) * | 2020-06-03 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 区块链消息处理方法、装置、计算机以及可读存储介质 |
CN112799674A (zh) * | 2021-01-19 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 区块链中智能合约的执行方法、装置及节点设备 |
CN112837154A (zh) * | 2021-02-10 | 2021-05-25 | 中国人民银行数字货币研究所 | 区块链中定时智能合约的注册、执行方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601675A (zh) * | 2014-12-29 | 2015-05-06 | 小米科技有限责任公司 | 一种服务器负载均衡的方法及装置 |
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
US20170243213A1 (en) * | 2016-02-22 | 2017-08-24 | Bank Of America Corporation | System to enable contactless access to a transaction terminal using a process data network |
CN107103473A (zh) * | 2017-04-27 | 2017-08-29 | 电子科技大学 | 一种基于区块链的智能合约实现方法 |
CN107292622A (zh) * | 2017-07-05 | 2017-10-24 | 武汉凤链科技有限公司 | 一种针对智能合约的价值分配方法和系统 |
-
2017
- 2017-12-01 CN CN201711251277.1A patent/CN109872157A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601675A (zh) * | 2014-12-29 | 2015-05-06 | 小米科技有限责任公司 | 一种服务器负载均衡的方法及装置 |
US20170243213A1 (en) * | 2016-02-22 | 2017-08-24 | Bank Of America Corporation | System to enable contactless access to a transaction terminal using a process data network |
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
CN107103473A (zh) * | 2017-04-27 | 2017-08-29 | 电子科技大学 | 一种基于区块链的智能合约实现方法 |
CN107292622A (zh) * | 2017-07-05 | 2017-10-24 | 武汉凤链科技有限公司 | 一种针对智能合约的价值分配方法和系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339187A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 基于智能合约的数据处理方法、装置、设备和存储介质 |
CN111339187B (zh) * | 2020-02-20 | 2023-05-09 | 百度在线网络技术(北京)有限公司 | 基于智能合约的数据处理方法、装置、设备和存储介质 |
CN111401903A (zh) * | 2020-06-03 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 区块链消息处理方法、装置、计算机以及可读存储介质 |
WO2021244211A1 (zh) * | 2020-06-03 | 2021-12-09 | 腾讯科技(深圳)有限公司 | 区块链消息处理方法、装置、计算机以及可读存储介质 |
CN112799674A (zh) * | 2021-01-19 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 区块链中智能合约的执行方法、装置及节点设备 |
CN112799674B (zh) * | 2021-01-19 | 2024-03-26 | 腾讯科技(深圳)有限公司 | 区块链中智能合约的执行方法、装置及节点设备 |
CN112837154A (zh) * | 2021-02-10 | 2021-05-25 | 中国人民银行数字货币研究所 | 区块链中定时智能合约的注册、执行方法和装置 |
WO2022171189A1 (zh) * | 2021-02-10 | 2022-08-18 | 中国人民银行数字货币研究所 | 区块链中定时智能合约的注册、执行方法和装置 |
CN112837154B (zh) * | 2021-02-10 | 2024-05-31 | 中国人民银行数字货币研究所 | 区块链中定时智能合约的注册、执行方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109872157A (zh) | 区块链中执行智能合约的方法及装置 | |
Umang et al. | Real-time management of berth allocation with stochastic arrival and handling times | |
Drummond et al. | Just-in-case scheduling | |
Gutierrez-Garcia et al. | Agent-based service composition in cloud computing | |
CN108132833A (zh) | 一种基于zookeeper技术的分布式定时任务调度方法和装置 | |
CN109587131A (zh) | 一种区块链网络间数据通信方法和装置 | |
CN108520077A (zh) | 一种避免重复下载的方法和装置 | |
CN109729049A (zh) | 信息的分享方法及装置 | |
CN108134812A (zh) | 数据处理方法和装置 | |
CN109739627A (zh) | 任务的调度方法、电子设备及介质 | |
CN108874375A (zh) | 一种定时器的实现方法及装置 | |
CN109033365A (zh) | 一种数据处理方法及相关设备 | |
CN111443894A (zh) | 一种基于区块链的随机数生成方法、设备及介质 | |
CN110019932A (zh) | 数据处理的方法及装置 | |
CN108596428B (zh) | 一种订单派发的方法、装置以及设备 | |
CN109428682A (zh) | 一种消息处理确认方法及装置 | |
CN107678863A (zh) | 页面组件通讯方法及装置 | |
CN108564352A (zh) | 电子资源信息的处理方法及装置 | |
CN109947843A (zh) | 区块链中时间的确定方法、装置及系统 | |
Zipkin | Evaluation of base‐stock policies in multiechelon inventory systems with compound‐poisson demands | |
CN110019260A (zh) | 一种用户数据的更新方法及相关设备 | |
CN109614386A (zh) | 数据处理方法、装置、服务器及计算机可读存储介质 | |
CN109614242A (zh) | 一种计算能力共享方法、装置、设备及介质 | |
CN109583823A (zh) | 一种会议室日历的查询方法及装置 | |
CN109885425A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190611 |
|
RJ01 | Rejection of invention patent application after publication |