智能合约的执行方法和系统与流程

文档序号:15934997发布日期:2018-11-14 02:14阅读:1101来源:国知局

本发明涉及区块链和智能合约技术领域,更具体的,涉及一种基于共识机制的智能合约的执行方法及系统。

背景技术

智能合约(以下也简称为“合约”)是一段代码和数据的集合,也叫“可编程合约”,即通过程序编码定义合约,预设执行条件,当触发执行条件时执行行为。其中的“智能”是执行上的智能,也就是说达到某个预设条件,合约自动执行。智能合约的本质是一些执行任务的集合,当满足合约中的触发条件或者预置条件后,会按照事先定义好的执行任务进行执行,一般情况下,执行任务可包括操作和交易,交易的执行是由用户发起的,用户对交易进行签名。



技术实现要素:

发明要解决的问题

然而,在传统方法中,智能合约的运行需要依附区块链系统,需要事先预存合约中涉及到的所有资源,需要在一个区块链中执行合约,但是这样会导致合约与区块链的耦合性强,不同区块链之间无法进行协同的操作,而且无法进行资源转移,资源的流动性差。因此,迫切需要一种能够使智能合约的运行与区块链在逻辑上分离的技术。

有鉴于此,本发明提供了一种基于共识机制的智能合约的执行方法及系统,实现了一种能够与区块链逻辑上分开运行的自动、可靠性高、资源使用灵活、与区块链间低耦合的分布式智能合约的执行机制。

解决问题的技术方案

根据本发明的一个实施方式,一种智能合约的执行方法,包括:

智能合约运行环境验证共识步骤,在与区块链逻辑上分离的预先构建的包括多个节点的智能合约运行环境中,对携带有参与待执行智能合约的用户的签名的待执行智能合约进行验证和共识,在所述验证和共识中,每个节点对所述待执行智能合约进行签名;

智能合约发送步骤,将通过验证并达成共识的待执行智能合约发送到所述区块链中;

区块链验证步骤,区块链由所述区块链针对通过验证并达成共识的待执行智能合约,验证所述用户的签名以及每个所述节点对所述待执行智能合约的签名;

智能合约存储步骤,将通过所述区块链的验证的待执行智能合约存储到区块链中;以及

智能合约执行步骤,当执行待执行智能合约时,由所述智能合约运行环境,从区块链读取并加载所述待执行智能合约来执行。

优选的,在智能合约运行环境验证共识步骤中,智能合约运行环境中的每个节点对智能合约均进行验证,根据每个节点的验证结果,智能合约运行环境对所述智能合约达成共识。

优选,当通过验证的节点数量占所有节点数量的比率大于预定量时,智能合约运行环境对所述智能合约达成共识。其中,所述预定量可以为1/2。

此外,智能合约运行环境对合约进行验证时,可以对合约内容、所述用户的签名和合约哈希中的至少任一者进行验证。

所述执行方法还可以包括:由区块链针对来自所述智能合约运行环境的通过验证并达成共识的待执行智能合约验证合约内容、合约哈希中的至少一者。

在智能合约存储步骤之前,所述执行方法还可以包括:智能合约运行环境读取并认证区块链的信息来确保待执行智能合约存储到区块链中。

所述执行方法还可以包括:当智能合约运行环境检测到之前发送的待执行智能合约的版本超时且区块链还没有存入该待执行智能合约时,由合约运行环境重新将待执行智能合约发送给区块链。

所述执行方法还可以包括:在智能合约执行步骤中,由智能合约运行环境中的每个节点对智能合约的执行结果进行验证和共识,并将达成共识的合约执行结果和合约状态存储到区块链上。

根据本发明的另一实施方式,一种智能合约的执行系统,包括:

应用端,在应用端处创建待执行智能合约;

用于执行智能合约的智能合约运行环境,与应用端连接以接收所述待执行智能合约,所述智能合约运行环境包括用于对待执行智能合约和执行时的智能合约进行验证和共识的多个节点;

与所述智能合约运行环境逻辑上分离的区块链,与智能合约环境电连接进行交互;

控制器,包括处理器和存储有程序指令的存储器,所述程序指令当由处理器执行时使得控制器被配置成与所述应用端、智能合约运行环境和区块链协同操作,执行如下步骤:

在与区块链逻辑上分离的包括多个节点的智能合约运行环境中,对携带有参与待执行智能合约的用户的签名的待执行智能合约进行验证和共识,在所述验证和共识中,每个节点对所述待执行智能合约进行签名;

将通过验证并达成共识的待执行智能合约发送到所述区块链中;

由所述区块链针对通过验证并达成共识的待执行智能合约,验证参与所述待执行合约的用户的签名以及每个所述节点对所述待执行智能合约的签名;

将通过所述区块链的验证的待执行智能合约存储到区块链中;以及

当执行待执行智能合约时,由所述智能合约运行环境,从区块链读取并加载所述待执行智能合约来执行。

发明效果

根据本发明的技术方案,通过将智能合约和区块链分开,使得智能合约模块和区块链模块从逻辑上相互独立,使用智能合约和多条区块链进行交互,实现了在多条区块链的跨链操作;同时独立开的智能合约代表了操作集合,区块链代表了数据存储,即,独立的环境将数据和操作分开;每条链可以为多个合约实体提供记账服务,同时每个合约实体可操作多条区块链,包括多种类型的区块链,例如同质区块链和异构区块链等,从根本上解决了多区块链之间的异构协同与可扩展性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明的在应用端创建的智能合约的实现方法的流程图;

图2为本发明的在应用端创建的的智能合约的实现方法的子流程图;

图3为本发明的第一实施方式的基于共识机制的智能合约的执行方法流程图;

图4为本发明的第二实施方式的基于共识机制的智能合约的执行系统的结构框图;

图5为本发明实施例1的基于共识机制的智能合约的执行方法在智能合约运行环境处的操作流程图;

图6为本发明实施例1的基于共识机制的智能合约的执行方法在区块链处的操作流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明中,智能合约运行环境是指,与区块链逻辑上分离的用于执行智能合约的独立的逻辑层,包括微芯片群、智能终端群、计算机集群、云服务器群等。其中每个微芯片、每个智能终端,每个计算机,每个云服务器可相当于智能合约运行环境中的每个节点。

下面,首先参照图1和图2对本发明的智能合约的实现方法进行详细说明。图1为本发明的在应用端创建的智能合约的实现方法的流程图。图2为本发明的在应用端创建的的智能合约的实现方法的子流程图。

本发明的智能合约可以是一种基于可视化的智能合约,在应用端处创建,其生成过程具体包括以下步骤:

s101:基于智能合约的设计需求,分别对预设法律本体库中的每个要素组合与要素组合中要素间的关联规则进行封装,生成多个不同的合约要素构件;

本实施例将法律本体引入到智能合约的设计过程中,基于数据挖掘和认知分析,从法律法规、现有典型的法律法规实例,以及合约实例中抽取出法律本体,并挖掘法律本体库中法律本体间的关联规则,形成预设法律本体库,其中每个法律本体为所述预设法律本体库中的要素。基于智能合约的设计需求,将预设法律本体库中的要素进行组合,形成要素组合,其中,要素组合中可以为1个或1个以上的要素的组合。

s102:根据目标智能合约的业务逻辑,在可视化界面中对多个所述合约要素构件进行编辑,生成所述目标智能合约;

具体的,请参阅图2,s102包括以下步骤:

s201:根据目标智能合约的设计需求,在可视化界面中对合约属性对应的多个合约要素构件进行编辑,生成所述目标智能合约的属性集,所述属性集包括合约名称、合约用户、创建时间、生效起始时间、生效截止时间和合约签名;

s202:根据所述目标智能合约的业务逻辑,将所述目标智能合约的执行流程分解为具有执行顺序的多个任务;

s203:确定每个所述任务是否为可选任务,并根据各个所述任务的执行顺序,在所述可视化界面中对每个所述任务对应的合约要素构件进行拖拽和组合;

s204:确定所述目标智能合约是否存在嵌套合约子集,若存在,在所述可视化界面中,按嵌套逻辑对所述目标智能合约的子合约对应的合约要素构件进行编辑,并将所述子合约对应的合约要素构件与所述目标智能合约进行组合;

s205:根据每个所述任务的属性、状态、行为和与外界交互过程,在所述可视化界面中对每个所述任务对应的合约要素构件进行编辑,生成所述目标智能合约。

具体的,智能合约的创建时间、生效起始时间、生效截止时间分别可以根据合约的实际需要进行预先设定,合约签名为合约用户的签名。

需要说明的是,智能合约的属性集包括但不限于包括合约名称、合约用户、创建时间、生效起始时间、生效截止时间和合约签名。

在可视化界面中不同的子合约对应不同的合约要素构件,每个任务可以对应多个合约要素构件,根据各个所述任务的执行顺序,在所述可视化界面中对每个所述任务对应的合约要素构件进行拖拽和组合,并按嵌套逻辑对子合约对应的合约要素构件进行编辑,并将子合约对应的合约要素构件在相应的位置,与智能合约进行组合。

还需要说明的是,所述任务的属性包括任务名称、任务类型、前置条件和后置条件等。任务的状态包括未开始、进行中、休眠、丢弃、终止和完成。任务的行为为任务的具体执行动作。任务与外界交互过程是通过使用外界程序提供的应用程序接口(api)执行与外界其他程序交互的操作。

还需要说明的是,为了便于合约的可读、可执行,将可视化界面拖拽的合约要素构件解析成三种格式:文本格式(textformat)、代码格式(codeformat)、序列化结构对象格式(serializestructformat)。文本格式是按照指定合约模板(texttemplate),将合约要素构件解析成文本描述并填充到模板中,形成可读的自然语言文本描述合约,进而当作电子合约文本。代码格式是按照指定合约代码架构模板(codetemplate),将合约要素构件解析成代码描述并填充到模板中,形成编程人员或计算机可读的编程语言描述合约,便于后续合约代码编译,合约程序执行。序列化结构对象格式是按照合约用户描述模板(serializestructtemplate),将合约要素构件解析成面向对象属性描述并填充到模板中,形成计算机及接口等可读的序列化对象描述合约。相应的,所述目标智能合约包括三种形式:文本形式、代码形式和序列化结构对象形式。也就是说,在可视化界面中生成的合约可以解析成三种形式,也可以以三种形式进行存储。

s103:将所述目标智能合约分别发送到所述目标智能合约涉及的所有合约用户,使每个所述合约用户对所述目标智能合约进行签名,以使所述目标智能合约生效;

可以理解的是,只有所述目标智能合约涉及的所有合约用户都对所述目标智能合约进行签名后,所述目标智能合约才能生效。

在s103之前本实施例公开的智能合约的实现方法还包括:对所述目标智能合约进行形式化验证和测试,当所述目标智能合约存在错误时,提示所述目标智能合约存在错误。

具体的,对目标智能合约进行形式化验证和测试可以有多种实现方式,其中可选的形式化验证方法包括:利用可视化界面中提供的有向图或状态迁移图的图示化方法、基于活动网络图的方法、基于petri网的方法、基于statechart的方法、基于规则的方法、基于逻辑的方法、代数的方法等。这些方法具体实现过程是现有技术,在本发明技术方案中不再累述。当在形式化验证或测试过程中存在错误时,提示所述目标智能合约存在错误。

s104:将生效后的所述目标智能合约发送至智能合约运行环境,使所述智能合约运行环境对所述目标智能合约以工作流的方式进行调度执行。

根据这一种智能合约的实现方法,在应用端基于智能合约的设计需求,分别对预设法律本体库中的每个要素组合与要素组合中要素间的关联规则进行封装,生成多个不同的合约要素构件,根据目标智能合约的业务逻辑,在可视化界面中对多个所述合约要素构件进行编辑,实现智能合约的可视化设计,解决了传统方法中设计智能合约必须要编写计算机程序的问题,使得非程序员也可以设计复杂的智能合约,且设计出的智能合约可以被形式化验证的同时又具备法律效力。应用端将智能合约发送至智能合约运行环境,智能合约运行环境以工作流的方式对智能合约进行调度执行,实现了智能合约的智能调度和可持续执行。

接下来,参照图3,对本发明的智能合约的执行方法进行详细说明。图3为本发明的第一实施方式的基于共识机制的智能合约的执行方法流程图。

如图3所示,本发明一种智能合约的执行方法,包括:

第一步骤s301(智能合约运行环境验证共识步骤),在包括多个节点的智能合约运行环境中,对携带有参与待执行合约的用户的签名的待执行智能合约进行验证和共识,在所述验证和共识中,每个节点对所述待执行智能合约进行签名;

第二步骤s302(区块链验证步骤),由区块链针对来自所述智能合约运行环境的通过验证并达成共识的待执行智能合约验证参与所述待执行合约的用户的签名以及每个所述节点对所述待执行智能合约的签名;

第三步骤s303(智能合约存储步骤),将通过区块链的验证的待执行智能合约存储到区块链中;以及

第四步骤s304(智能合约执行步骤),当执行所述待执行智能合约时,在所述智能合约运行环境中,从区块链读取并加载所述待执行智能合约来执行。

在第一步骤s301中,智能合约运行环境中的每个节点可以对智能合约均进行验证,根据每个节点的验证结果,智能合约运行环境对所述智能合约达成共识。

优选的,当通过验证的节点数量占所有节点数量的比率大于预定量时,智能合约运行环境对所述智能合约达成共识。其中,所述预定量为1/2以上。

此外,当智能合约运行环境对合约进行验证时,对合约内容、所述用户的签名和合约哈希中的至少任一者进行验证。

如图3所示的智能合约的执行方法,还可以包括:由区块链针对来自所述智能合约运行环境的通过验证并达成共识的待执行智能合约验证合约内容、合约哈希中的至少一者。

此外,在第三步骤s303之前,还可以包括:智能合约运行环境读取并认证区块链的信息来确保待执行智能合约存储到区块链中。

如图3所示的智能合约的执行方法,还可以包括:当智能合约运行环境检测到之前发送的待执行智能合约的版本超时且区块链还没有存入该待执行智能合约时,由合约运行环境重新将待执行智能合约发送给区块链。

如图3所示的智能合约的执行方法,还可以包括:在第四步骤s304中,由智能合约运行环境中的每个节点对智能合约的执行结果进行验证和共识,并将达成共识的合约执行结果和合约状态存储到区块链上。

接下来,参照图4,对本发明的智能合约的执行系统进行详细说明。图4为本发明的第一实施方式的基于共识机制的智能合约的执行系统的结构框图。

图4的智能合约的执行系统,包括:

应用端401,在应用端401处创建待执行智能合约;

用于执行智能合约的智能合约运行环境402,与应用端401连接以接收所述待执行智能合约,所述智能合约运行环境402包括用于对待执行智能合约和执行时的智能合约进行验证和共识的多个节点;

区块链403,与智能合约环境402连接进行交互;

控制器404,被配置成与所述应用端401、智能合约运行环境402和区块链403协同操作,使得智能合约的执行系统执行图3所示的步骤:

第一步骤s301,在包括多个节点的智能合约运行环境402中,对携带有参与待执行合约的用户的签名的待执行智能合约进行验证和共识,在所述验证和共识中,每个节点对所述待执行智能合约进行签名;

第二步骤s302,由区块链403针对来自所述智能合约运行环境402的通过验证并达成共识的待执行智能合约验证参与所述待执行合约的用户的签名以及每个所述节点对所述待执行智能合约的签名;

第三步骤s303,将通过区块链403的验证的待执行智能合约存储到区块链403中;以及

第四步骤s304,当执行所述待执行智能合约时,在所述智能合约运行环境中,从区块链403读取并加载所述待执行智能合约来执行。

下面,参照图5和图6,对本发明的图3所示的智能合约的执行方法中智能合约运行环境处和区块链处的操作进行更详细地说明。图5为本发明实施例1的智能合约的执行方法的智能合约运行环境处的操作流程图。

本发明的智能合约在智能合约运行环境中,所述智能合约运行环境中包括多个节点,智能合约运行环境处的智能合约的执行操作包括:

s501:对接收到的来自应用端的待执行合约进行验证和共识,所述待执行合约携带有参与所述待执行合约的用户的签名;

参与待执行合约的用户的数量可以为一个或一个以上,参与待执行合约的用户在待执行合约创建后,需要对所述待执行合约进行签名。

对接收到的来自应用端的待执行合约进行验证和共识,具体为:

根据预设选择策略,选择出所述智能合约运行环境中的一个节点作为头节点,其他节点作为从节点,使所述头节点和每个从节点分别验证参与所述待执行合约的用户的签名、所述待执行合约内容的合法性和所述待执行合约的哈希值的正确性,并分别对所述待执行合约进行签名;

当所述待执行合约通过至少预设比例的节点的共识,且至少预设比例的节点都确定所述待执行合约正确后,判定所述待执行合约为有效待执行合约。

每个节点分别根据对所述待执行合约的验证结果进行共识,所述待执行合约通过至少预设比例的节点的共识,且至少预设比例的节点都确定所述待执行合约验证通过为正确的合约后,判定所述待执行合约达成共识为有效待执行合约。

当判定所述待执行合约达成共识为有效待执行合约时,头节点将每个节点对所述待执行合约的签名添加到所述待执行合约中,将携带有每个节点对所述待执行合约的签名的所述待执行合约发送至区块链。

其中,合法性验证为验证所述待执行合约的内容和格式是否合法;对哈希值的验证,是利用哈希值算法对接收到的待执行合约进行计算,得到哈希值,并与接收到的带执行合约携带的哈希值进行比较。

需要说明的是,所述预设选择策略可以有多种实现方法,其中,两种可选的实现方式为:

预设选择策略一:

根据各个所述节点的空闲程度,将各个所述节点中空闲程度最大的节点作为头节点,其他节点作为从节点。

预设选择策略二:

在各个所述节点中随机指定一个节点作为主节点,其他节点作为从节点。

需要说明的是,在预设选择策略一和预设选择策略二中,对每个不同的智能合约,可以在智能合约运行环境中指派不同的节点作为头节点。

还需要说明的是,智能合约运行环境可以同时对多个智能合约进行处理,智能合约运行环境中的每个节点可以处理多个智能合约,在每个节点中的智能合约中的执行任务的状态包括:未开始、执行中和已结束。每个节点可以根据智能合约中的执行任务的状态对其进行处理。

s502:当所述待执行合约通过共识且确定为有效待执行合约后,将携带有每个所述节点对所述待执行合约的签名的所述待执行合约发送至区块链;

也就是说,智能合约运行环境中的每个节点都会对待执行合约进行签名,当所述待执行合约通过共识且确定为有效待执行合约后,智能合约运行环境将携带有每个所述节点对所述待执行合约的签名的所述待执行合约发送至区块链,使区块链根据所述待执行合约携带的所述智能合约运行环境中的节点对所述待执行合约的签名和所述待执行合约中用户的签名,对所述待执行合约进行验证。

需要说明的是,当对所述待执行合约不是有效待执行合约时,向所述应用端或所述智能合约运行环境的监控端发送所述待执行合约异常提示。

s503:当检测到所述待执行合约被成功记录到所述区块链中,获取所述区块链提供的资源锁定操作,对所述待执行合约的内容进行解析,得到所述待执行合约的多个执行任务,以及各个所述执行任务的顺序;

需要说明的是,在预设时间内未检测到所述待执行合约被成功记录到所述区块链中时,向所述应用端发送所述待执行合约入链失败提示。

资源锁定操作包括每个执行任务可能涉及的资源锁定范围。

s504:确定当前执行任务的类型,所述当前执行任务的类型包括操作和交易;

需要说明的是,当前执行任务的类型为操作时,例如查询操作,不涉及资源,当前执行操作的类型为交易时,涉及资源。

s505:所述当前执行任务的类型为操作时,执行所述当前执行任务并对所述当前执行任务的执行结果进行验证和共识;

当所述当前执行任务的类型为操作时,通知每个所述节点执行所述当前执行任务,并使每个节点分别对所述当前执行任务的执行结果进行验证;

当所述当前执行任务的执行结果通过至少预设比例的节点的共识后,判定所述当前执行任务执行完毕。

还需要说明的是,当所述当前执行任务的执行结果未通过共识时,更换所述头节点,返回执行所述当所述当前执行任务的类型为操作时,通知每个所述节点执行所述当前执行任务,这一步骤。

s506:当所述当前执行任务的类型为交易时,根据所述资源锁定操作对所述当前执行任务涉及的资源进行锁定,使每个所述节点分别根据锁定的资源和所述当前执行任务构建交易体并签名,当所述交易体通过各个所述节点的验证和共识,确定所述交易体为有效交易体后将所述交易体发送到区块链记账,所述交易体携带有每个所述节点对各自构建的交易体的签名;

通知所述头节点根据所述资源锁定操作对所述当前执行任务涉及的资源进行锁定,所述头节点和每个所述从节点分别根据锁定的资源和所述当前执行任务构建交易体,并分别对各自构建的交易体进行签名和验证;

当所述交易体通过至少预设比例的节点的共识,且所述至少预设比例的节点都确定所述交易体正确后,判定所述交易体为有效交易体;通知所述头节点将每个所述节点的签名添加到所述有效交易体中,并将携带有每个所述节点的签名的所述有效交易体发送到区块链进行记账。

具体的,所述预设比例可以根据实际情况进行预先设定,例如,51%。

需要说明的是,当所述交易体不是有效交易体时,通知所述头节点对已锁定的资源进行解锁,更换所述头节点,并返回执行通知所述头节点根据所述资源锁定操作对所述当前执行任务涉及的资源进行锁定,这一步骤。

还需要说明的是,具体的,所述头节点和所述从节点可以使用utxo算法构造交易体。

合约中每个执行任务的资源只有在执行该执行任务对应的交易时才被锁定,避免了传统的智能合约的实现中,所有合约所涉及的资源需要在合约创建的时候就全部被锁定,从而最大化了资源使用的灵活性,提高了资源的流通性。

s507:当所述当前执行任务的执行结果达成共识或当在预设时间内检测到所述交易体在所述区块链入链后,判断所述当前执行任务是否为所述待执行合约的最后一个执行任务;

若是,执行s508;若否,执行s509;

s508:所述待执行合约执行结束;

s509:按照各个所述执行任务的顺序,获取所述当前执行任务的下一执行任务作为当前执行任务,并返回执行确定当前执行任务的类型,这一步骤。

本实施例打破了传统合约的局限性,智能合约运行环境通过共识机制“提前”对合约中的交易进行了验证,增加了交易的可靠性,通过智能合约运行环境的签名代替了用户的签名,使得合约不需要用户的驱动就可以自动运行,实现了用户的长期委托。

并且根据业务要求,合约中每个执行任务涉及的资源只有在执行该执行任务对应的交易时才被锁定,智能合约运行环境可以在执行的过程中动态的锁定所需要的资源,从而最大化了资源使用的灵活性,提高了资源的流动性。

本实施例同时弱化了智能合约运行环境和区块链的强耦合关系,将智能合约模块独立出来,使得合约模块可以在多种设备上运行,如:微芯片、智能终端、计算机集群、云服务器等。

图6为本发明实施例1的智能合约的执行方法的区块链处的操作流程图。在区块链处的操作包括以下步骤:

s601:当接收到智能合约运行环境发送的待执行合约时,根据所述待执行合约携带的所述智能合约运行环境对所述待执行合约的签名和所述待执行合约中用户的签名,对所述待执行合约进行验证;

s602:当所述待执行合约通过验证后,对所述待执行合约执行入链操作;

s603:当接收到所述智能合约运行环境发送的交易体时,根据所述交易体携带的智能合约运行环境对所述交易体的签名和所述交易体的哈希值,对所述交易体进行验证,所述交易体对应所述待执行合约中的任一执行任务;

具体的,s603的执行过程如下:

根据所述交易体,以及所述智能合约运行环境预先发送的公钥环,验证所述智能合约运行环境中每个节点对所述交易体的签名;

验证所述交易体的哈希值的正确性;

当签名和所述交易体相符的数量,以及所述哈希值和所述交易体相符的数量占所述智能合约运行环境中节点数量的比例超过预设比例时,判定对所述交易体的验证通过。

s604:当验证通过并达成共识,确定所述交易体为有效交易体后,对所述交易体对应的交易执行建块和入链操作。

从区块链的角度来讲,本实施例公开的基于共识机制的智能合约的执行方法,区块链处理传统交易的机制并没有改变,根据业务需要,可以选择提供资源锁定操作,并在处理的交易是智能合约中的交易时,验证签名的对应由传统的用户改为验证智能合约运行环境中的节点。

区块链在验证交易时,根据交易来源的不同,分为两种类型:

类型一:

交易来源于用户,采用传统验证方式,验证用户对该交易的签名。

类型二:

交易来源于智能合约,根据交易体携带的参与智能合约的用户的签名、智能合约运行环境对所述交易体的签名和所述交易体的哈希值,对所述交易体进行验证。

本实施例公开的基于共识机制的智能合约的执行方法,打破了传统合约的局限性,通过共识机制,使用智能合约运行环境代替用户签名,使得合约中的操作可以在不需要用户驱动的情况下可以自动执行,使得用户可以长期委托,真正的实现了智能合约的自动化执行。区块链既能处理来自用户的交易也能处理来自智能合约的交易,提高了区块链处理交易的灵活性,增加了交易的安全性和可靠性,区块链可以为智能合约运行环境提供资源锁操作,智能合约运行环境在合约的执行中通过资源锁来动态锁定资源,使得用户可以更加灵活的使用资源,增加了资源的流动性。

本实施例公开的基于共识机制的智能合约的执行方法,打破了传统合约的局限性,通过共识机制,使用智能合约运行环境代替用户签名,使得合约中的操作可以在不需要用户驱动的情况下可以自动执行,使得用户可以长期委托,真正的实现了智能合约的自动化执行。区块链既能处理来自用户的交易也能处理来自智能合约的交易,提高了区块链处理交易的灵活性,增加了交易的安全性和可靠性,区块链可以为智能合约运行环境提供资源锁操作,智能合约运行环境在合约的执行中通过资源锁来动态锁定资源,使得用户可以更加灵活的使用资源,增加了资源的流动性。

接下来,对本发明的实施方式的智能合约的执行方法和系统的应用例进行说明。

应用例1—转账

下面,以用户a将一百万元转账给用户b的合约为例进行说明。此时,区块链例如为资金链。

当用户a在应用端处,创建转账给用户b一百万元的智能合约,对智能合约进行签名后,应用端将其发送到智能合约运行环境。则在包括多个节点的智能合约运行环境中,对携带有参与待执行合约的用户a的签名的待执行转帐智能合约进行验证和共识,在所述验证和共识中,每个节点对所述待执行智能合约进行签名。

然后,由资金链针对来自所述智能合约运行环境的通过验证并达成共识的待执行智能合约验证参与所述待执行合约的用户a的签名以及每个所述节点对所述待执行智能合约的签名。

然后,将通过资金链的验证的待执行智能合约存储到资金链中;

当执行转账智能合约时,在所述智能合约运行环境中,从资金链读取并加载智能合约,根据转账智能合约,将用户a的一百万元转账给用户b。

由于智能合约运行环境和区块链,均对合约进行了验证,因此可以保证智能合约运行的可靠性,保证了转账安全。

此外,由于智能合约运行环境与区块链相分离,使得智能合约模块和区块链模块从逻辑上相互独立,因此,运行该转账合约时,可以访问不止一个资金链,因此,例如当用户a存储在某一个资金链上钱款不足以或无法转账给用户b时,该转账合约能够简单地访问移用户a的其他的资金链上将其转账给用户b,而无需再基于其他的资金链重新创建转账合约。

应用例2—房屋购买协议

下面,以用户a与用户b之间的房屋购买合约为例进行说明。此时,例如存在两个区块链:用于存储代币的资金链以及用于记录用户房产的房产链。

当用户a想要花100代币购买用户b的房子时,用户a与用户b可以在应用端创建如下合约:只要用户b收到用户a转给b的100代币,就将用户b的房子的所有权转给用户a。

首先,当用户a和b在应用端处,房屋购买合约,由用户a和b对智能合约进行签名后,应用端将其发送到智能合约运行环境。则在包括多个节点的智能合约运行环境中,对携带有参与待执行合约的用户a和b的签名的待执行房屋购买合约进行验证和共识,在所述验证和共识中,每个节点对所述待执行智能合约进行签名。

然后,由资金链和房产链针对来自所述智能合约运行环境的通过验证并达成共识的待执行智能合约验证参与所述待执行合约的用户a和b的签名以及每个所述节点对所述待执行智能合约的签名。

然后,将通过资金链和房产链的验证的待执行智能合约存储到资金链和房产链中;

当执行合约时,在所述智能合约运行环境中,从资金链和房产链中读取并加载智能合约,根据房屋购买合约,当用户a通过资金链将100代币转账给b时,智能合约访问房产链,自动将房产链中的用户b的房子的所有权转给用户a。

由于智能合约运行环境和区块链,均对合约进行了验证,因此可以保证智能合约运行的可靠性,保证了房屋购买合约履行安全。

此外,由于房屋购买合约运行环境与资金链和房产链相分离,使得智能合约模块和资金链以及房产链模块从逻辑上相互独立,因此,运行该房屋购买合约时,使用智能合约与资金链和房产链进行交互,实现了在资金链和房产链两个区块链之间的跨链操作。

而且,通过本发明的智能合约执行方法,打破了传统合约的局限性,通过共识机制,使用智能合约运行环境代替用户签名,使得合约中的操作可以在不需要用户驱动的情况下可以自动执行,使得用户可以长期委托,真正的实现了智能合约的自动化执行。区块链既能处理来自用户的交易也能处理来自智能合约的交易,提高了区块链处理交易的灵活性,增加了交易的安全性和可靠性,区块链可以为智能合约运行环境提供资源锁操作,智能合约运行环境在合约的执行中通过资源锁来动态锁定资源,使得用户可以更加灵活的使用资源,增加了资源的流动性。

以上,结合应用例,对一个智能合约访问或涉及一个区块链和两个区块链的例子进行了说明,但本发明不限于此,本发明也能够用于一个智能合约访问或涉及三个以上区块链的情况,而且还能够用于多个智能合约访问一个区块链的情况,以及多个智能合约访问多个区块链的多链多合约(mcmc:multichainmulticontract)的情形。这些情形当然也落入本发明的范围。

根据本发明的技术方案,通过将智能合约和区块链分开,使得智能合约模块和区块链模块从逻辑上相互独立,使用智能合约和多条区块链进行交互,实现了在多条区块链的跨链操作;同时独立开的智能合约代表了操作集合,区块链代表了数据存储,即,独立的环境将数据和操作分开;每条链可以为多个合约实体提供记账服务,同时每个合约实体可操作多条区块链,包括多种类型的区块链,例如同质区块链和异构区块链等,从根本上解决了多区块链之间的异构协同与可扩展性。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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