智能合约的触发方法、装置、设备及存储介质与流程

文档序号:18744277发布日期:2019-09-21 02:09阅读:510来源:国知局
智能合约的触发方法、装置、设备及存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种智能合约的触发方法、装置、设备及计算机可读存储介质。



背景技术:

随着科技的发展,区块链的应用也日益普及。区块链是一个互联网协议和一种基础的数据结构。就如同HTTP是互联网应用层中最重要的应用协议一样,区块链也是应用层里一个点对点传输的协议。在协议基础上,区块链由“区块”和“链”共同定义了分布式账本。“区块”类似于证券交易中的成交记录,记录了特定时间段内所有发生的权益转移关系;这些“区块”间存在着严格且唯一的先后继承关系,组成了一条“区块”的“链”。区块链特有的机制保障了“区块”记录内容和先后继承关系的合理性和唯一性,这个过程并不依赖于特定的中心节点。智能合约是区块链的核心组成部分,用于实现运行在区块链之上的业务逻辑。但是,由于现有智能合约的执行需要通过业务服务器的调用,增加了合约的执行成本。

因此,如何解决现有智能合约的执行成本高的问题,是目前亟需解决的问题。



技术实现要素:

本发明的主要目的在于提供一种智能合约的触发方法、装置、设备及计算机可读存储介质,旨在解决现有智能合约的执行成本高的技术问题。

为实现上述目的,本发明提供一种智能合约的触发方法,所述智能合约的触发方法包括以下步骤:

在接收到用户发送的合约注册指令时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型;

若所述触发条件为自定义触发类型,则获取用户上传的条件脚本,并将所述条件脚本添加至区块链中的注册缓存;

在监测到满足所述条件脚本定义的事务发生时,则根据预设智能合约执行对应的合约交易。

可选地,所述在监测到满足所述条件脚本定义的事务发生时,则根据预设智能合约执行对应的合约交易的步骤之后,还包括:

在接收到用户发送的查询指令时,获取当前用户的身份标识以及所述查询指令中的待查询信息,并基于零知识证明和所述身份标识判断所述当前用户是否具有所述待查询信息的信息读取权限;

若所述当前用户具有所述待查询信息的信息读取权限,则获取并显示所述待查询信息以便所述当前用户进行查看。

可选地,所述在接收到用户发送的查询指令时,获取当前用户的身份标识以及所述查询指令中的待查询信息,并基于零知识证明和所述身份标识判断所述当前用户是否具有所述待查询信息的信息读取权限的步骤之后,还包括:

若所述当前用户不具有所述待查询信息的信息读取权限,生成并显示当前不具有所述待查询信息的读取权限;

获取所述当前用户对应的用户读取权限,并根据所述用户读取权限显示所述当前用户可读取的相关信息,以便所述当前用户进行查看。

可选地,所述在接收到用户发送的合约注册指令时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型的步骤之后,还包括:

若所述触发条件类型为时间触发类型,则获取合约注册指令中的触发时间,将所述触发时间添加至所述注册缓存,并在监测到时间变量为所述触发时间时,根据所述智能合约执行对应的合约交易。

可选地,所述在接收到用户发送的合约注册指令时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型的步骤之后,还包括:

若所述触发条件类型为区块链高度触发类型,则获取合约注册指令中的区块链高度阈值,将所述区块链高度阈值添加至所述注册缓存,并在监测到区块链高度变量为所述区块链高度阈值时,根据所述智能合约执行对应的合约交易。

可选地,所述在接收到用户发送的合约注册指令时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型的步骤包括:

在接收到用户发送的合约注册指令时,获取所述用户的验证签名,并根据所述验证签名判断所述用户是否具有注册权限;

在所述用户具有注册权限时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型。

可选地,所述在监测到满足所述条件脚本定义的事务发生时,则根据预设智能合约执行对应的合约交易的步骤之后,还包括:

在接收到触发条件修改指令时,获取所述触发条件修改指令中的目标触发条件,并将所述目标触发条件替换所述注册缓存中条件脚本定义的已注册触发条件;

根据所述已注册触发条件以及目标触发条件生成对应的条件变化提醒消息,并将所述条件变化提醒消息发送至合约成员,以对所述合约成员进行提醒。

此外,为实现上述目的,本发明还提供一种智能合约的触发装置,所述智能合约的触发装置包括:

触发类型判断模块,用于在接收到用户发送的合约注册指令时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型;

条件脚本注册模块,用于若所述触发条件为自定义触发类型,则获取用户上传的条件脚本,并将所述条件脚本添加至区块链中的注册缓存;

智能合约执行模块,用于在监测到满足所述条件脚本定义的事务发生时,则根据预设智能合约执行对应的合约交易。

此外,为实现上述目的,本发明还提供一种智能合约的触发设备,所述智能合约的触发设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的智能合约的触发程序,其中所述智能合约的触发程序被所述处理器执行时,实现如上述的智能合约的触发方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有智能合约的触发程序,其中所述智能合约的触发程序被处理器执行时,实现如上述的智能合约的触发方法的步骤。

本发明提供一种智能合约的触发方法,即在接收到用户发送的合约注册指令时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型;若所述触发条件为自定义触发类型,则获取用户上传的条件脚本,并将所述条件脚本添加至区块链中的注册缓存;在监测到满足所述条件脚本定义的事务发生时,则根据预设智能合约执行对应的合约交易。通过上述方式,本发明通过在智能合约中注册所要完成的条件触发,并根据用户上传的条件脚本,设置智能合约的触发规则,并在发生满足所述触发规则的事务时,执行智能合约对应的合约交易。实现了合约的自动执行,无需调用业务员服务器进行合约调用,节省了合约执行成本,提高了合约的执行效率,解决了现有智能合约的执行成本高的技术问题。

附图说明

图1为本发明实施例方案中涉及的智能合约的触发设备的硬件结构示意图;

图2为本发明智能合约的触发方法第一实施例的流程示意图;

图3为本发明智能合约的触发方法第二实施例的流程示意图;

图4为本发明智能合约的触发方法第三实施例的流程示意图;

图5为本发明智能合约的触发装置第一实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例涉及的智能合约的触发方法主要应用于智能合约的触发设备,该智能合约的触发设备可以是PC、便携计算机、移动终端等具有显示和处理功能的设备。

参照图1,图1为本发明实施例方案中涉及的智能合约的触发设备的硬件结构示意图。本发明实施例中,智能合约的触发设备可以包括处理器1001(例如CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的硬件结构并不构成对智能合约的触发设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

继续参照图1,图1中作为一种计算机可读存储介质的存储器1005可以包括操作系统、网络通信模块以及智能合约的触发程序。

在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的智能合约的触发程序,并执行本发明实施例提供的智能合约的触发方法。

本发明实施例提供了一种智能合约的触发方法。

参照图2,图2为本发明智能合约的触发方法第一实施例的流程示意图。

本实施例中,所述智能合约的触发方法包括以下步骤:

步骤S10,在接收到用户发送的合约注册指令时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型;

本实施例中,为了解决现有智能合约的执行成本高的技术问题,通过在智能合约中注册所要完成的条件触发,并根据用户上传的条件脚本,设置智能合约的触发规则,并在发生满足所述触发规则的事务时,执行智能合约对应的合约交易。实现了合约的自动执行,无需调用业务员服务器进行合约调用,节省了合约执行成本,提高了合约的执行效率。具体地,用户可通过客户端向区块链发送合约注册指令,即用户将需要自动执行智能合约的触发规则进行注册。并具体根据所述合约注册指令中的触发条件类型进行触发条件注册,如自定义触发类型、时间触发类型或者是区块链高度触发类型。其中,可以通过判断所述触发条件中的变量类型,来判断所述触发条件类型,如变量为时间时,即为时间触发类型,变量为区块链高度时,即为区块链高度触发类型,变量为用户自定义的触发规则时,即为自定义触发类型。由此,通过判断所述触发条件中的变量类型是否为用户自定义的触发规则,以判断所述触发条件类型是否为自定义触发类型。其中自定义的触发规则可以是“当组团人数在当天10点前达到3人时,则开团”。触发规则即为“当组团人数在当天10点前达到3人”,合约交易,即为“开团”。

步骤S20,若所述触发条件为自定义触发类型,则获取用户上传的条件脚本,并将所述条件脚本添加至区块链中的注册缓存;

本实施例中,若判定所述触发条件中的变量类型为用户自定义的触发规则,如当组团人数在当天10点前达到3人时,则开团。触发规则即为“当组团人数在当天10点前达到3人”,合约交易,即为“开团”。用户可通过上传自己编辑的条件脚本,来设置所述智能合约的触发规则。在接收到用户上传的条件脚本时,将所述条件脚本添加至区块链中的注册缓存。然后解析所述条件脚本,获取所述条件脚本中的触发逻辑,并将所述触发逻辑生成监控命令添加至条件模块,在监控模块检测到所述满足所述触发逻辑的事务发生时,即执行所述智能合约中规则的合约交易。如“开团”或“下发工资”等。

步骤S30,在监测到满足所述条件脚本定义的事务发生时,则根据预设智能合约执行对应的合约交易。

本实施例中,通过监控模块进行事务监测,一旦事务满足触发条件,验证节点会首先对事务进行签名验证以确保事务的有效性,当验证节点通过验证之后事务将会被自动执行,即执行所述智能合约中所述事务对应的合约交易。

进一步地,所述步骤S10之后,还包括:

若所述触发条件类型为时间触发类型,则获取合约注册指令中的触发时间,将所述触发时间添加至所述注册缓存,并在监测到时间变量为所述触发时间时,根据所述智能合约执行对应的合约交易。

本实施例中,若所述触发条件中的变量类型为时间时,则所述合约的触发条件类型为时间触发类型。获取所述合约注册指令中的触发时间值,并将所述触发时间值作为触发条件存储至所述注册缓存中,以便通过监控模块监测满足所述触发时间的事件是否发生。若通过所述监控模块监测到时间变量达到所述触发时间值时,生成合约执行指令,以根据所述智能合约中的合约规定执行对应的合约交易,如“每个月10号的18:00下发工资”。

进一步地,所述步骤S10之后,还包括:

若所述触发条件类型为区块链高度触发类型,则获取合约注册指令中的区块链高度阈值,将所述区块链高度阈值添加至所述注册缓存,并在监测到区块链高度变量为所述区块链高度阈值时,根据所述智能合约执行对应的合约交易。

本实施例中,若所述触发条件中的变量类型为区块链高度时,则所述合约的触发条件类型为区块链高度触发类型。获取所述合约注册指令中的区块链高度值,并将所述区块链高度值作为触发条件存储至所述注册缓存中,以便通过监控模块监测满足触发区块链高度值的事件是否发生。其中,所述区块链高度随着添加至区块链中的事务块的增加而增加,因此若所述触发条件类型为区块链高度触发类型,即表示在区块链中事务块的个数达到阈值时,即进行智能合约规定的合约交易。通过所述监控模块监测到区块链高度变量达到所述触发区块链高度值时,生成合约执行指令,以根据所述智能合约中的合约规定执行对应的合约交易,如“区块链中的事务块的增加至1000”。

本实施例提供一种智能合约的触发方法,即在接收到用户发送的合约注册指令时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型;若所述触发条件为自定义触发类型,则获取用户上传的条件脚本,并将所述条件脚本添加至区块链中的注册缓存;在监测到满足所述条件脚本定义的事务发生时,则根据预设智能合约执行对应的合约交易。通过上述方式,本发明通过在智能合约中注册所要完成的条件触发,并根据用户上传的条件脚本,设置智能合约的触发规则,并在发生满足所述触发规则的事务时,执行智能合约对应的合约交易。实现了合约的自动执行,无需调用业务员服务器进行合约调用,节省了合约执行成本,提高了合约的执行效率,解决了现有智能合约的执行成本高的技术问题。

参照图3,图3为本发明智能合约的触发方法第二实施例的流程示意图。

基于上述图2所示实施例,本实施例中,所述步骤S10之前,还包括:

步骤S41,在接收到用户发送的查询指令时,获取当前用户的身份标识以及所述查询指令中的待查询信息,并基于零知识证明和所述身份标识判断所述当前用户是否具有所述待查询信息的信息读取权限;

本实施例中,为了便于智能合约对应的联盟成员及时了解合约执行条件或者合约执行结果等信息,通过零知识证明技术设置各个联盟成员的信息读取权限,以便赋予不同联盟成员对应的信息读取权限。具体地,在接收到用户发送的查询指令时,获取所述查询指令中的待查询信息以及获取发送所述查询指令的当前用户的身份标识,如身份号或者工号等。判断所述待查询信息对应的权限用户身份标识中是否存在所述当前用户的身份标识,若存在,则所述当前用户具有所述待查询信息的信息读取权限。

步骤S42,若所述当前用户具有所述待查询信息的信息读取权限,则获取并显示所述待查询信息以便所述当前用户进行查看。

本实施例中,若判定所述当前用户具有所述待查询信息的信息读取权限时,则获取所述待查询信息,并将所述待查询信息通过当前终端界面进行显示,以便所述当前用户进行查看。

进一步地,所述步骤S41之后,还包括:

若所述当前用户不具有所述待查询信息的信息读取权限,生成并显示当前不具有所述待查询信息的读取权限;

获取所述当前用户对应的用户读取权限,并根据所述用户读取权限显示所述当前用户可读取的相关信息,以便所述当前用户进行查看。

本实施例中,若判定所述当前用户不具有所述待查询信息的信息读取权限,则根据所述待查询信息生成对应的不具有读取权限的提醒消息,以便提醒当前用户当前不具有读取所述待查询信息的读取权限的情况。然后为了便于当前用户了解自身对应的读取权限,根据当前用户对应的用户读取权限,获取所述用户读取权限对应的相关信息,获取所述相关信息,并通过终端界面显示所述相关信息,以便当前用户进行对应的选择查看。具体实施例中,若所述相关信息超过预设信息阈值,则获取所述相关信息对应的信息类型以及信息摘要等,并显示所述信息类型以及信息摘要,以便当前用户进行对应的选择查看。

参照图4,图4为本发明智能合约的触发方法第三实施例的流程示意图。

基于上述图3所示实施例,本实施例中,所述步骤S10具体包括:

步骤S11,在接收到用户发送的合约注册指令时,获取所述用户的验证签名,并根据所述验证签名判断所述用户是否具有注册权限;

本实施例中,为了防止不法分子对合约条件进行篡改,保证智能合约的唯一性以及准确性,对进行合约注册的用户进行注册权限判断。具体地,在接收到用户发送的合约注册指令时,获取所述用户的验证签名,并获取所述验证签名中的密钥信息以及用户信息。将所述密钥信息以及用户信息与智能合约对应的权限用户信息进行对比,从而判断所述用户是否具有所述智能合约的注册权限。即判定所述验证签名中的密钥正确,且用户信息符合智能合约对应的权限用户信息,则判定所述用户具有智能合约的触发条件的注册权限。

步骤S12,在所述用户具有注册权限时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型。

本实施例中,若判定所述用户具有所述智能合约的注册权限,则具体根据所述合约注册指令中的触发条件类型进行触发条件注册,如自定义触发类型、时间触发类型或者是区块链高度触发类型。其中,可以通过判断所述触发条件中的变量类型,来判断所述触发条件类型,如变量为时间时,即为时间触发类型,变量为区块链高度时,即为区块链高度触发类型,变量为用户自定义的触发规则时,即为自定义触发类型。由此,通过判断所述触发条件中的变量类型是否为用户自定义的触发规则,以判断所述触发条件类型是否为自定义触发类型。

进一步地,所述步骤S30之后,还包括:

在接收到触发条件修改指令时,获取所述触发条件修改指令中的目标触发条件,并将所述目标触发条件替换所述注册缓存中条件脚本定义的已注册触发条件;

根据所述已注册触发条件以及目标触发条件生成对应的条件变化提醒消息,并将所述条件变化提醒消息发送至合约成员,以对所述合约成员进行提醒。

本实施例中,为了便于权限用户根据实际需要进行合约触发条件的变更,提供触发条件修改功能,即权限用户可通过该触发条件修改功能进行智能合约的触发条件的一键修改。具体地,在接收到权限用户触发的触发条件修改指令时,可对权限用户的身份进行验证,在判定所述权限用户为合法修改用户时,获取所述触发条件修改指令中的目标触发条件。然后将所述目标触发条件,与注册缓存中条件脚本定义的已注册触发条件进行替换,从而更改所述智能合约的触发条件。并在触发条件更换成功时,根据更换前的已注册触发条件以及更换后的目标触发条件生成对应的条件变化提醒消息,并将所述条件变化提醒消息发送至对应具有查看权限的合约成员,以便所述合约成员及时了解合约触发条件的更换。

此外,本发明实施例还提供一种智能合约的触发装置。

参照图5,图5为本发明智能合约的触发装置第一实施例的功能模块示意图。

本实施例中,所述智能合约的触发装置包括:

触发类型判断模块10,用于在接收到用户发送的合约注册指令时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型;

条件脚本注册模块20,用于若所述触发条件为自定义触发类型,则获取用户上传的条件脚本,并将所述条件脚本添加至区块链中的注册缓存;

智能合约执行模块30,用于在监测到满足所述条件脚本定义的事务发生时,则根据预设智能合约执行对应的合约交易。

进一步地,所述智能合约的触发装置还包括:

时间触发模块,用于若所述触发条件类型为时间触发类型,则获取合约注册指令中的触发时间,将所述触发时间添加至所述注册缓存,并在监测到时间变量为所述触发时间时,根据所述智能合约执行对应的合约交易。

进一步地,所述智能合约的触发装置还包括:

高度触发模块,用于若所述触发条件类型为区块链高度触发类型,则获取合约注册指令中的区块链高度阈值,将所述区块链高度阈值添加至所述注册缓存,并在监测到区块链高度变量为所述区块链高度阈值时,根据所述智能合约执行对应的合约交易。

进一步地,所述智能合约的触发装置还包括:

信息查询模块,用于在接收到用户发送的查询指令时,获取当前用户的身份标识以及所述查询指令中的待查询信息,并基于零知识证明和所述身份标识判断所述当前用户是否具有所述待查询信息的信息读取权限;

第一信息显示模块,用于若所述当前用户具有所述待查询信息的信息读取权限,则获取并显示所述待查询信息以便所述当前用户进行查看。

进一步地,所述智能合约的触发装置还包括:

权限提醒模块,用于若所述当前用户不具有所述待查询信息的信息读取权限,生成并显示当前不具有所述待查询信息的读取权限;

第二信息显示模块,用于获取所述当前用户对应的用户读取权限,并根据所述用户读取权限显示所述当前用户可读取的相关信息,以便所述当前用户进行查看。

进一步地,所述触发类型判断模块10具体包括:

注册权限判断单元,用于在接收到用户发送的合约注册指令时,获取所述用户的验证签名,并根据所述验证签名判断所述用户是否具有注册权限;

触发类型判断单元,用于在所述用户具有注册权限时,获取所述合约注册指令中的触发条件类型,并判断所述触发条件类型是否为自定义触发类型。

进一步地,所述智能合约的触发装置还包括:

触发条件修改模块,用于在接收到触发条件修改指令时,获取所述触发条件修改指令中的目标触发条件,并将所述目标触发条件替换所述注册缓存中条件脚本定义的已注册触发条件;

条件更换提醒模块,用于根据所述已注册触发条件以及目标触发条件生成对应的条件变化提醒消息,并将所述条件变化提醒消息发送至合约成员,以对所述合约成员进行提醒。

其中,上述智能合约的触发装置中各个模块与上述智能合约的触发方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。

此外,本发明实施例还提供一种计算机可读存储介质。

本发明计算机可读存储介质上存储有智能合约的触发程序,其中所述智能合约的触发程序被处理器执行时,实现如上述的智能合约的触发方法的步骤。

其中,智能合约的触发程序被执行时所实现的方法可参照本发明智能合约的触发方法的各个实施例,此处不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1