一种基于区块链的智能合约引擎系统及其合约执行方法与流程

文档序号:15832182发布日期:2018-11-07 07:26阅读:666来源:国知局
一种基于区块链的智能合约引擎系统及其合约执行方法与流程

本发明属于计算机数据处理与计算领域,尤其涉及一种基于区块链的智能合约引擎系统及其合约执行方法。

背景技术

“智能合约”的概念是1994年由密码学家尼克萨博(nickszabo)首次提出,在本质上是一种自动合约,类似于计算机程序设计中的if-then语句,当一个预先编好的条件被触发时,智能合约能够自动执行相应的合同条款。智能合约较为普遍的应用是金融领域,几乎每一类金融合约都可以用程序代码的形式写成智能合约。

“智能合约”的概念提出之后,没有找到很好的落地实践方法,直到区块链的出现。区块链2.0时代,则被定义为“区块链+智能合约”,可见智能合约在区块链中的重要性。

以太坊(ethereum)平台支持以太坊虚拟机(以太坊虚拟机(evm)),可使用贴近机器的基于堆栈字节码的低级类汇编语言写成,被称为“以太坊虚拟机代码”(以太坊虚拟机(evm)代码)。而对于开发应用合约编写人员,则可使用solidity、serpent、lll等图灵完备语言较为方便的编写智能合约,编译城虚拟机字节码后,可在虚拟机上解释执行。但是,虚拟机解释执行的速度较慢,在大量交易发生时可能会存在性能瓶颈;而且虚拟机上执行语言的表达能力受限,不便于扩展。

而超级帐本中的子项目fabric则采用轻量、可移植的docker容器作为其智能合约的执行环境。它可以实现资源隔离,具体是通过一种称作“chaincode”的方式来实现,相对于虚拟机代码执行的效率更高,支持用任意的高级语言来编写智能合约。但是docker本身启动时间长、效率较低,成为制约整体效率的性能瓶颈。

鉴于上述缺点,亟需提出一种新的智能合约引擎及方法。



技术实现要素:

本说明书实施例提供一种基于区块链的智能合约引擎系统及其合约执行方法,用以克服现有合约执行方法启动时间长、效率较低,制约整体效率的性能的缺陷,且具有很好的扩展性。

本说明书实施例采用下述技术方案:

第一方面,提供了一种基于区块链的智能合约引擎系统,所述合约引擎系统包括:用户接口层、智能合约系统层和区块链访问接口层;

所述用户接口层,用于向用户提供统一的接口,通过所述统一的接口,用户能够以完全相同的数据交互方式与所述智能合约系统层中的智能合约交互;

所述智能合约系统层,用于执行智能合约;

所述区块链访问接口层,用于为所述智能合约系统层中的智能合约提供统一的访问区块链数据的接口。

进一步可选的,所述智能合约系统层包括原生智能合约系统与以太坊虚拟机(evm)智能合约系统。

进一步可选的,所述原生智能合约系统和所述以太坊虚拟机(evm)智能合约系统并行的位于所述智能合约系统层的同一层级中,使得原生智能合约系统能够方便的替换和扩展所述以太坊虚拟机(evm)智能合约系统。

进一步可选的,所述统一的接口与太坊虚拟机(evm)智能合约系统的数据访问接口一致,从而用户在调用所述智能合约系统层中的智能合约时,不需要考虑调用的智能合约是原生智能合约还是以太坊虚拟机(evm)智能合约;

所述区块链访问接口层的接口与以太坊虚拟机(evm)智能合约系统的接口一致。

进一步可选的,所述智能合约系统层中的原生智能合约系统中的原生智能合约,依托于原生语言,且兼容以太坊虚拟机(evm)智能合约的数据结构。

第二方面,提供了一种基于所述的智能合约引擎系统的合约执行方法,包括:

s1.用户使用区块链系统语言编写原生智能合约,所述原生智能合约上层满足以太坊虚拟机(evm)智能合约系统的接口要求;

s2.依据所述原生智能合约注册的合约地址获取合约内容,调用exec执行接口,该接口能够根据函数签名执行合约的功能逻辑;

s3.上述原生智能合约经过原生编译器编译后生成目标机器的可执行代码,在机器上执行,通过区块链访问接口层调用区块链数据。

第三方面,还提供了另一种基于所述的智能合约引擎系统的合约执行方法,包括:

s1.用户使用脚本高级语言编写太坊虚拟机(evm)智能合约;和/或通过以太坊虚拟机(evm)智能合约系统的接口,调用满足以太坊虚拟机(evm)智能合约系统的接口要求的原生智能合约;

s2.对于用户使用脚本高级语言编写的太坊虚拟机(evm)智能合约,智能合约经脚本语言编译器编译成以太坊虚拟机(evm)字节码,依据合约地址,以太坊虚拟机(evm)字节码中的至少部分在以太坊虚拟机(evm)合约引擎下,在以太坊虚拟机(evm)环境下解释执行;

对于经接口调用的原生智能合约,在原生智能合约引擎下,经过原生编译器编译后先生成机器可执行代码,然后在机器执行。

第四方面,还提供了另一种智能合约引擎系统的合约执行方法,其特征在于:

如果待执行的合约仅为原生智能合约,则通过以下步骤执行:

s1.令所述原生智能合约满足以太坊虚拟机(evm)智能合约系统的接口要求;

s2.依据所述原生智能合约注册的合约地址获取合约内容,调用exec执行接口,该接口能够根据函数签名执行合约的功能逻辑;

s3.上述原生智能合约经过原生编译器编译后生成目标机器的可执行代码,在机器上执行,通过区块链访问接口层调用区块链数据;

如果待执行的合约为太坊虚拟机(evm)智能合约,则智能合约经脚本语言编译器编译成以太坊虚拟机(evm)字节码,依据合约地址,以太坊虚拟机(evm)字节码中的至少部分在以太坊虚拟机(evm)合约引擎下,在以太坊虚拟机(evm)环境下解释执行;

如果待执行的合约为太坊虚拟机(evm)智能合约和通过以太坊虚拟机(evm)智能合约系统的接口调用的满足以太坊虚拟机(evm)智能合约系统的接口要求的原生智能合约,则通过以下步骤执行:

对于用户使用脚本高级语言编写的太坊虚拟机(evm)智能合约,智能合约经脚本语言编译器编译成以太坊虚拟机(evm)字节码,依据合约地址,以太坊虚拟机(evm)字节码中的至少部分在以太坊虚拟机(evm)合约引擎下,在以太坊虚拟机(evm)环境下解释执行;对于经接口调用的原生智能合约,在原生智能合约引擎下,经过原生编译器编译后先生成机器可执行代码,然后在机器执行。

进一步可选的,所述步骤s1中,用户使用区块链系统语言编写的原生智能合约,包括合约结构定义,合约要实现的功能函数及用户签名。

进一步可选的,基于所述原生智能合约满足以太坊虚拟机(evm)智能合约系统的接口要求,使得太坊虚拟机(evm)能够基于所述原生智能合约的功能函数和参数,执行所述原生智能合约的功能,创建合约实例,以及利用注册表机制创建及销毁所述原生智能合约。

本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:

(1)智能合约系统层包括原生智能合约系统与以太坊虚拟机(evm)智能合约系统,支持多种形式的合约引擎;

(2)采用原生智能合约系统和所述以太坊虚拟机(evm)智能合约系统并行的位于所述智能合约系统层的同一层级中,原生智能合约系统能够方便的替换和扩展所述以太坊虚拟机(evm)智能合约,技术方案功能上能够与以太坊虚拟机(evm)智能合约系统等价,并能够方便的进行扩展;

(3)使用一致性接口,不同形式的智能合约之间能够灵活调用,且系统在执行效率上优于以太坊虚拟机(evm)智能合约;

(4)支持多种执行器,并允许用户混合使用多种智能合约;

(5)能够克服现有合约执行方法启动时间长、效率较低,制约整体效率的性能的瓶颈缺陷。

附图说明

图1是本发明实施例所述的一种智能合约系统的结构图。

图2是本发明实施例所述的一种基于所述的智能合约引擎系统的合约执行方法的流程图。

图3是本发明实施例3中具体的实施示意图。

图4是本发明实施例4中具体的实施示意图。

具体实施方式

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

以下结合附图,详细说明本说明书各实施例提供的技术方案。

需要说明的是,在本说明书实施例中,支持多种形式的合约引擎,涉及但不限于以下两种合约引擎:

(1)以太坊虚拟机(evm)合约引擎

用户可使用高级语言(如高级脚本语言solidity)方便的编写智能合约,通过solc编译器或remix集成开发环境开发和测试,最后通过合约创建或调用接口来部署或调用合约。

(2)原生智能合约引擎

使用区块链系统所使用的原生语言编写智能合约,即“原生智能合约”来实现合约业务开发,合约经过编译后生成机器码在机器上直接执行,执行效率较虚拟机执行更高,也更贴近系统。而合约调用接口与上述方法一致。原生智能合约兼容以太坊虚拟机(evm)合约的数据访问接口。同时也提供了注册表机制,用户可以实现合约的创建与销毁。

实施例一

参照图1所示,为本说明书实施例提供的一种基于区块链的智能合约引擎系统的步骤示意图,其中,所述合约引擎系统包括:用户接口层、智能合约系统层和区块链访问接口层;

所述用户接口层,用于向用户提供统一的接口,通过所述统一的接口,用户能够以完全相同的数据交互方式与所述智能合约系统层中的智能合约交互;

所述智能合约系统层,用于执行智能合约;

所述区块链访问接口层,用于为所述智能合约系统层中的智能合约提供统一的访问区块链数据的接口。

进一步可选的,所述智能合约系统层包括原生智能合约系统与以太坊虚拟机(evm)智能合约系统。

进一步可选的,所述原生智能合约系统和所述以太坊虚拟机(evm)智能合约系统并行的位于所述智能合约系统层的同一层级中,使得原生智能合约系统能够方便的替换和扩展所述以太坊虚拟机(evm)智能合约系统。

进一步可选的,所述统一的接口与太坊虚拟机(evm)智能合约系统的数据访问接口一致,从而用户在调用所述智能合约系统层中的智能合约时,不需要考虑调用的智能合约是原生智能合约还是以太坊虚拟机(evm)智能合约;

所述区块链访问接口层的接口与以太坊虚拟机(evm)智能合约系统的接口一致。

进一步可选的,所述智能合约系统层中的原生智能合约系统中的原生智能合约,依托于原生语言,且兼容以太坊虚拟机(evm)智能合约的数据结构。

实施例二

参照图2所示,为本说明书实施例提供的一种基于所述的智能合约引擎系统的合约执行方法,如果待执行的合约仅为原生智能合约,则通过以下步骤执行:

s1.令所述原生智能合约满足以太坊虚拟机(evm)智能合约系统的接口要求;

s2.依据所述原生智能合约注册的合约地址获取合约内容,调用exec执行接口,该接口能够根据函数签名执行合约的功能逻辑;

s3.上述原生智能合约经过原生编译器编译后生成目标机器的可执行代码,在机器上执行,通过区块链访问接口层调用区块链数据;

如果待执行的合约为太坊虚拟机(evm)智能合约,则智能合约经脚本语言编译器编译成以太坊虚拟机(evm)字节码,依据合约地址,以太坊虚拟机(evm)字节码中的至少部分在以太坊虚拟机(evm)合约引擎下,在以太坊虚拟机(evm)环境下解释执行;

如果待执行的合约为太坊虚拟机(evm)智能合约和通过以太坊虚拟机(evm)智能合约系统的接口调用的满足以太坊虚拟机(evm)智能合约系统的接口要求的原生智能合约,则通过以下步骤执行:

对于用户使用脚本高级语言编写的太坊虚拟机(evm)智能合约,智能合约经脚本语言编译器编译成以太坊虚拟机(evm)字节码,依据合约地址,以太坊虚拟机(evm)字节码中的至少部分在以太坊虚拟机(evm)合约引擎下,在以太坊虚拟机(evm)环境下解释执行;对于经接口调用的原生智能合约,在原生智能合约引擎下,经过原生编译器编译后先生成机器可执行代码,然后在机器执行。

进一步可选的,所述步骤s1中,用户使用区块链系统语言编写的原生智能合约,包括合约结构定义,合约要实现的功能函数及用户签名。

进一步可选的,基于所述原生智能合约满足以太坊虚拟机(evm)智能合约系统的接口要求,使得太坊虚拟机(evm)能够基于所述原生智能合约的功能函数和参数,执行所述原生智能合约的功能,创建合约实例,以及利用注册表机制创建及销毁所述原生智能合约。

实施例三

本说明书实施例提供了一种基于所述的智能合约引擎系统的合约执行方法,包括:

s1.用户使用区块链系统语言编写原生智能合约,所述原生智能合约上层满足以太坊虚拟机(evm)智能合约系统的接口要求;

s2.依据所述原生智能合约注册的合约地址获取合约内容,调用exec执行接口,该接口能够根据函数签名执行合约的功能逻辑;

s3.上述原生智能合约经区块链访问接口层调用,经过原生编译器编译后生成机器可执行代码,在机器上执行。

进一步可选的,所述步骤s1中,用户使用区块链系统语言编写的原生智能合约,包括合约结构定义,合约要实现的功能函数及用户签名。

进一步可选的,基于所述原生智能合约满足以太坊虚拟机(evm)智能合约系统的接口要求,使得太坊虚拟机(evm)能够基于所述原生智能合约的功能函数和参数,执行所述原生智能合约的功能,创建合约实例,以及利用注册表机制创建及销毁所述原生智能合约。

具体的,参照图3所示:

1用户使用区块链系统语言编写智能合约,上层满足以太坊虚拟机(evm)智能合约系统的接口,在实现中调用区块链访问接口。

具体地,包含如下部分:

用户实现业务或应用对应的原生智能合约,含合约结构定义,要实现的功能函数功能及签名。

实现兼容以太坊虚拟机(evm)的一致性接口:依据合约参数执行功能、创建合约实例。

利用注册表机制,支持创建及销毁合约。

上述合约内容编写完成后,依据注册的合约地址获取合约内容,调用exec执行接口,该接口实现依据函数签名执行合约的功能逻辑。

2上述原生智能合约经过原生编译器编译后生成目标机器的可执行代码,在机器上执行,通过区块链访问接口层调用区块链数据。。

实施例四

本说明书实施例提供了一种基于所述的智能合约引擎系统的合约执行方法,包括:

s1.用户使用脚本高级语言编写太坊虚拟机(evm)智能合约;和/或通过以太坊虚拟机(evm)智能合约系统的接口,调用满足以太坊虚拟机(evm)智能合约系统的接口要求的原生智能合约;

s2.对于用户使用脚本高级语言编写的太坊虚拟机(evm)智能合约,智能合约经脚本语言编译器编译成以太坊虚拟机(evm)字节码,依据合约地址,以太坊虚拟机(evm)字节码中的至少部分在以太坊虚拟机(evm)合约引擎下,在以太坊虚拟机(evm)环境下解释执行;

对于经接口调用的原生智能合约,在原生智能合约引擎下,经过原生编译器编译后先生成机器可执行代码,然后在机器执行。

具体的,参照图4所示:

1用户使用脚本高级语言(如solidity)编写智能合约,对于较为复杂数据结构及脚本语言无法表达场景下,通过调用满足以太坊虚拟机(evm)智能合约系统的接口(如通过填充合约地址等参数,调用call合约调用接口),调用原生智能合约。

2智能合约经脚本语言编译器编译成以太坊虚拟机(evm)字节码,依据合约地址,以太坊虚拟机(evm)字节码部分在以太坊虚拟机(evm)合约引擎下,在以太坊虚拟机(evm)环境下解释执行。

3经调用合约接口调用原生智能合约的部分,在原生智能合约引擎下,经过原生编译器编译后先生成机器可执行代码,然后在在机器执行。

改种方案功能上能够与以太坊虚拟机(evm)智能合约系统等价,并能够进行扩展;在执行效率上优于以太坊虚拟机(evm)智能合约。

本发明是一种支持多种合约引擎及实现方法,是可使用多种合约语言编写智能合约的系统。有必要指出的是,以下具体实施方式只是对本发明的进一步说明,本质上本发明可以适用于一切使用原生语言开发智能合约语言的实施例。

本发明提出的基于区块链多合约引擎的智能合约系统,可以兼容虚拟机智能合约系统,并能够提高执行性能,可以灵活扩展。

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

本说明书实施例中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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