1.本发明属于智能合约技术领域,特别涉及一种基于状态机同步和控制的智能合约系统。
背景技术:
2.随着区块链和智能合约技术的不断发展,很多交易、存证、商业合同等应用都使用了智能合约技术。区块链2.0以后提出的智能合约,让区块链应用更具便捷性和拓展性。由于智能合约公开透明,不可篡改,自动执行等特点,大大提高了交易的效率,也规避了很多人为作弊的情况。但是智能合约仍然有运行状态无法跟踪,出现异常难以控制等问题。
3.目前行业内有基于可视化的智能合约系统,例如中国专利201910074994“基于可视化界面的智能合约调用方法、装置及系统”中提出的,这种方法需要用户终端在可视化界面中选择可用的区块链系统,在区块链系统中选择可用的智能合约,再选择合约中的目标方法。这种方法在合约的配置和调用的过程中利用可视化技术为用户提供了便利,但是这种仅仅考虑了智能合约的可视化调用,并没有针对智能合约的运行状态以及可能出现的异常情况做可视化的跟踪。又如中国专利cn109614093a“可视化智能合约系统以及智能合约的处理方法”中公开了提供合约构件生成智能合约的模版,并根据智能合约的模版的种类生成可视化的流程,通过所述流程生成可视化流程图,最后利用可视化流程图来执行所述智能合约。这种方法将智能合约的执行流程也进行了可视化,便于用户对智能合约进行实施和跟踪;但是这种方法同样没有考虑到智能合约运行异常时的状态转换过程。
4.由sea项目(https://www.sohu.com/a/359649158_100070857)提出的可视化智能合约系统,同样是考虑了智能合约的生成以及运行状态可视化,并且也考虑到了智能合约的状态与条件之间的响应关系。但是这种方法是生成智能代码,生成后,合约自动的运行并支持可视化跟踪,并没有实现状态和代码之间的双向锁定,因此就缺少了对智能合约的动态控制功能。
5.智能合约可能出现的严重问题是一旦智能合约代码部署后,代码就会自动启动执行,执行的结果也很难回滚。这代表智能合约代表必须是完全正确,而且所有可能发生的情况都事先分析清楚。问题是真实世界,总是有突发事件发生,而智能合约代码很难都考虑到这些突发事件,目前的智能合约工作都没有考虑该技术问题,通过在bing.com以及百度上收集资料,现有的智能合约设计一般都是死绑定,合约部署完成后,不能改,执行时候智能合约的代码无法更改。
技术实现要素:
6.本发明为了解决现有技术存在的一项或多项技术问题,创造性的提供一种基于状态机同步和控制的智能合约系统,获得可以调整的智能合约语言和环境。
7.本发明的目的在于提出一种基于状态机同步和控制的智能合约系统,包括:
智能合约控制子系统以及智能合约执行子系统,其中所述智能合约外部控制子系统与所述智能合约执行子系统通过系统双锁定模型维持双锁定的机制,即所述智能合约控制子系统所显示的状态与所述智能合约执行子系统的状态保持一致;所述智能合约控制子系统用于指示执行所述智能合约执行子系统内部存储的相关数据;所述智能合约控制子系统以及所述智能合约执行子系统重新部署或选择一个新智能合约系统;所述智能合约控制子系统以及所述智能合约执行子系统将所述相关数据部署在所述新智能合约系统上,继续执行。
8.优选的,所述智能合约执行子系统将所述相关数据放在区块链系统中。
9.优选的,所述系统双锁定模型中包括状态机与智能合约并行处理的机制,所述机制包含两条运行流程,一个是状态机的流程,另外一个是智能合约代码的流程,并且这两个流程是双锁定的,互相影响,互相牵制,所述智能合约的代码与状态机有一一对应的关系。
10.优选的,对所述智能合约的代码执行具有严格的管控,每一步所述智能合约执行被立刻报告给合约相关单位,所述智能合约控制子系统可以获得所述智能合约执行的状态。
11.优选的,所述智能合约控制子系统具有阻止智能合约代码继续执行的权限,在智能合约执行过程中更换新的智能合约。
12.优选的,所述更换新的智能合约包含如下步骤:所述智能合约控制子系统要求所述智能合约系统存储相关数据;所述智能合约控制子系统的参与单位重新开发并部署所述新的智能合约;所述智能合约控制子系统将前一步步存储的所述相关数据部署在所述新的智能合约上,启动新的智能合约并使所述新的智能合约开始执行。
13.优选的,所述双锁定模型采用动态双重锁定协议,实施步骤如下:将所述智能合约以状态机表述获得所述智能合约控制子系统状态机表述和所述智能合约执行子系统状态机,定义所述智能合约所有的运行状态,所述智能合约控制子系统包含状态机表述,而未包含状态机内部执行代码,而所述智能合约执行子系统状态机包含执行代码;在所述智能合约控制子系统内部署相同的状态机以及后台系统;所述智能合约执行子系统启动所述后台系统的执行所述智能合约,或如果发现异常状态所述后台系统停止执行所述智能合约,或者接收所述后台系统送来的状态改变信息或异常状态信息,并且将所述状态改变信息或所述异常状态信息显示给客户,其中:所述智能合约执行子系统启动所述后台系统的执行包括:所述智能合约执行子系统向所述后台系统发送信息,从而开始执行所述智能合约;所述如果发现异常状态所述后台系统停止执行智能合约包括:如果有突发事件,而现在的所述智能合约并未考虑并包含对于所述突发事件的处理,所述智能合约执行子系统停止所述后台系统的执行,并且要求所述后台系统存储系统数据;所述接收所述后台系统送来的状态改变信息,并且将所述信息显示给客户包括:当所述后台系统发送状态改变信息后,所述智能合约执行子系统改变状态机的状态,并且将所述状态改变信息显示给客户。
14.所述接收所述后台系统送来的异常状态信息,并将所述异常状态信息显示给客户
包括:在界面上通知客户异常状态出现,并开启新的智能合约系统。
15.优选的,所述后台系统的工作流程包括:接受启动:所述智能合约控制子系统控制所述后台系统以及所述智能合约执行子系统开始执行智能合约;执行所述智能合约并传送状态改变信息给所述智能合约控制子系统:所述智能合约控制子系统执行所述智能合约的代码;如果状态发生改变,则所述智能合约控制子系统将状态改变的信息传送给所述智能合约执行子系统,所述状态改变的信息包括以前的状态,改变后的状态以及状态改变的关联信息;接收停止信息并停止执行:如果收到所述智能合约控制子系统发送的停止信息,则所述后台系统停止执行任何智能合约并存储系统数据,所述系统数据存放在指定区域,例如区块链系统内;发现异常状态,将异常状态信息发送到所述智能合约控制子系统包括:所述后台系统作业时出现异常现象,以至于代码无法再继续前进,首先将相关数据存储在指定区域,将异常事件信息发送给所述智能合约控制子系统。
16.优选的,所述动态双重锁定模型为后台状态机向前台状态机锁定,包括3种动态双重锁定模型:第一种,只需要通知状态机,后台状态机无需等待前台状态机的答复;第二种,必须等待前台状态机认可后,才前进至后台状态机;以及第三种,混合模型,即将第一种和第二种混合。
17.优选的,所述智能合约系统运行时,用户可以从可视化页面看到智能合约执行的状态,而这状态是由外部状态机和后台内部状态机控制,这两状态机是双锁定的,当智能合约的前台可视化页面出现异常情形时,表明智能合约无法再继续前进,是状态机中未明确定义的状态,如果由所述后台系统发现,所述后台系统存储数据后,立刻通知外部控制系统;如果由外部系统或是客户发现,立刻通知后台执行系统停止执行,存储数据;客户重新开发新的智能合约和新的状态机,以及控制区的显示界面,以替代之前的合约执行。
18.本发明的有益效果:基于状态机同步和控制的智能合约系统,获得可以调整的智能合约语言和环境,智能合约的实施根据事件环境变化,更为灵活,适应使用环境性强。
19.根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
20.附图说明
21.后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:图1为根据本发明实施例的秋千模型原理结构图。
22.图2为根据本发明实施例的状态与条件之间的关系图。
23.图3为根据本发明实施例的进入条件的状态转换示意图。
24.图4为根据本发明实施例的智能合约的状态转换在正常情况下转换示意图。
25.图5为根据本发明实施例的状态6进入边缘状态的示意图。
26.具体实施方式
27.为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。
28.如图1所示,本实施例的基于状态机同步和控制的智能合约系统,包括:智能合约控制子系统以及智能合约执行子系统,其中智能合约外部控制子系统与智能合约执行子系统通过系统双锁定模型维持双锁定的机制,即智能合约控制子系统所显示的状态与智能合约执行子系统的状态必须保持一致;智能合约控制子系统用于指示执行智能合约执行子系统内部存储的相关数据,例如智能合约执行子系统将数据放在区块链系统中;智能合约控制子系统以及智能合约执行子系统重新部署或选择一个新智能合约系统;智能合约控制子系统以及智能合约执行子系统将相关数据部署在新智能合约系统上,继续执行。
29.系统双锁定模型是为了解决智能合约的状态跟踪和异常处理的问题所提出的一种状态机同步和控制的智能合约系统架构,又可以称为秋千模型,即状态机与智能合约并行处理的机制,这种机制包含两条运行流程,一个是状态机的流程,另外一个是智能合约代码的流程,并且这两个流程是双锁定的,互相影响,互相牵制。而代码也和状态机有一对一的对应。例如每一个状态都有其对应的代码。
30.由于在执行的时候,外部状态机和内部执行代码是一对一对应,交互像秋千一样。外部启动内部执行,而内部执行后通知外部系统的内部状态,而外部系统可以显示内部状态给客户。由于外部显示系统和内部执行系统是双锁定的,内部执行的系统处在的状态,和外部系统显示的状态是一致的。而两边交互的信息都存储在区块链上,保证双方不能欺诈。
31.智能合约的代码执行有严格的管控,每一步智能合约执行的立刻报告给合约相关单位,智能合约控制子系统可以获得智能合约执行的状态。
32.智能合约控制子系统具有阻止智能合约代码继续执行的权限,在智能合约执行过程中更换新的智能合约,更换新的智能合约包含如下步骤:智能合约控制子系统要求智能合约系统存储相关数据;智能合约控制子系统的参与单位重新开发并部署新的智能合约;智能合约控制子系统将前一步步存储的相关数据部署在新的智能合约上,启动新的智能合约并使新的智能合约开始执行。
33.双锁定模型采用动态双重锁定协议,实施步骤如下:将智能合约以状态机表述获得智能合约控制子系统状态机表述和智能合约执行子系统状态机,定义智能合约所有的运行状态,智能合约控制子系统包含状态机表述,而未包含状态机内部执行代码,而智能合约执行子系统状态机包含执行代码;
在智能合约控制子系统内部署相同的状态机以及后台系统;智能合约执行子系统启动后台系统的执行智能合约,或如果发现异常状态后台系统停止执行智能合约,或者接收后台系统送来的状态改变信息或异常状态信息,并且将状态改变信息或异常状态信息显示给客户,其中:智能合约执行子系统启动后台系统的执行包括:智能合约执行子系统向后台系统发送信息,从而开始执行智能合约;如果发现异常状态后台系统停止执行智能合约包括:如果有突发事件,而现在的智能合约并未考虑并包含对于突发事件的处理,智能合约执行子系统停止后台系统的执行,并且要求后台系统存储系统数据;接收后台系统送来的状态改变信息,并且将信息显示给客户包括:当后台系统发送状态改变信息后,智能合约执行子系统改变状态机的状态,并且将状态改变信息显示给客户。
34.接收后台系统送来的异常状态信息,并将异常状态信息显示给客户包括:在界面上通知客户异常状态出现,并开启新的智能合约系统。
35.后台系统的工作流程包括:接受启动:智能合约控制子系统控制后台系统以及智能合约执行子系统开始执行智能合约;执行智能合约并传送状态改变信息给智能合约控制子系统:智能合约控制子系统执行智能合约的代码;如果状态发生改变,则智能合约控制子系统将状态改变的信息传送给智能合约执行子系统,状态改变的信息包括以前的状态,改变后的状态以及状态改变的关联信息;接收停止信息并停止执行:如果收到智能合约控制子系统发送的停止信息,则后台系统停止执行任何智能合约并存储系统数据,系统数据存放在指定区域,例如区块链系统内;发现异常状态,将异常状态信息发送到智能合约控制子系统包括:后台系统作业时出现异常现象,以至于代码无法再继续前进,首先将相关数据存储在指定的地方(例如区块链系统),将异常事件信息发送给智能合约控制子系统。
36.动态双重锁定模型为后台状态机向前台状态机锁定,包括3种动态双重锁定模型:只需要通知状态机,后台状态机无需等待前台状态机的答复;必须等待前台状态机认可后,才前进至后台状态机;以及混合模型。
37.在一般情形下会选择第一个,这是由于代码可以自动执行,这是智能合约的一个重要功能;而第二个选择却是每一步都需要前台状态机的客户控制。但是一些特殊的场景下,客户会选择第二个。此外,客户也可以选择在一般情形下进行第一个选择的操作,但是在关键状态下(critical states)智能合约只能使用第二个选择,因此就产生了混合模型这第三个选择。
38.一、发现异常状态运行时,用户可以从可视化页面看到智能合约执行的状态,而这状态是由外部状态机和后台内部状态机控制,这两状态机是双锁定的。 当智能合约的前台可视化页面出现异常情形,例如:系统长久无法前进;后台系统报告异常情形出现;有外界突发事件发生,而
当前智能合约没有覆盖的突发事件发生,例如地震、火灾、银行倒闭事件。
39.异常状态出现这表明智能合约无法再继续前进,是状态机中未明确定义的状态。如果这是后台发现,后台存储数据后,立刻通知外部控制系统;如果这是外部系统或是客户发现,立刻通知后台执行系统停止执行,存储数据。
40.客户可以重新开发新的智能合约和新的状态机,以及控制区的显示界面,这些都开发好了再部署,以替代之前的合约执行。
41.二、状态机表述智能合约开发模型可以使用conditions分析,分析event/conditions和state的关系图。limbo state代表任何不确定的events发生,智能合约的执行需要进行判断而且是可以调整的。
42.本发明状态图和传统状态图不同点在于,每一个状态都有一个“异常状态”出口。在任何一个状态下,如果出现任何事件,状态机无法前进,就会自动转到异常状态。
43.传统上,状态机有的情况下在状态上有行动 (moore machine,中文为moore状态机),有的情况是状态间路径上有行动(mealy machine,中文为mealy状态机)。这两种状态机在数学上是对等的,没有差距,而本发明这两种状态机都可以使用。
44.如图2所示,系统状态根据进入条件和离开条件进行判断,如果满足条件,就进入转换到下一个状态。问题在于有突发事件发生,而状态机的模型不知道如何进行,这时系统就会进入异常状态。
45.三、状态机和智能合约代码的开发:状态机和智能合约代码同步开发智能合约代码编开发上,可以先开发状态机图,然后在状态机图内嵌入代码。这种方式是传统软件工程方式。 例如,在一个房屋租赁的智能合约中,对于房屋的使用权是否到期这样的判断,就可以改变合约的状态,响应的也会调用不同的智能合约代码。
46.if currentdate
ꢀꢀ
《
ꢀꢀ
expireddate :
ꢀꢀꢀꢀ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑ꢀ
未到期状态
ꢀꢀꢀꢀ
房租未到期的代码片段
ꢀꢀꢀꢀꢀꢀꢀꢀ
水电费缴纳代码片段else currentdata 》= expireddata:
ꢀꢀꢀꢀ‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑ꢀ
到期状态
ꢀꢀꢀꢀ
房租到期后的功能代码
ꢀꢀꢀꢀꢀꢀꢀꢀ
家具检查代码片段
ꢀꢀꢀꢀꢀꢀꢀꢀ
押金返还代码片段end if这里面的水电费缴纳,家具检查,押金返还等功能逻辑对于大部分房屋租赁的合约来说,都是通用的,只需要根据实际情况,更改参数就可以使用。这种开发方式,可以是代码和状态机保持一致步骤。
47.现有技术有许多方法,例如从分析代码导出状态机。这些都是传统软件工程,但是这种方法有时存在的技术缺陷在于导出来的状态机非常大,以至于系统无法控制。本发明采用更为简单便捷的方法,即先开发状态机,再开发代码。当然这两种方法都可以使用。
48.四、双锁定模型的开发流程开发流程具体包括:1) 定义状态: 将智能合约的生命周期中所有经历的状态都进行定义。例如,开始
状态,结束状态,等候特定条件出发的中间状态等。
49.2) 定义条件:合约状态能够变迁的触发条件。例如租房合同中的房租到期,这里到期时间就是一种条件。需要再开发过程中定义好多有的和状态相关的条件。
50.3)建立关联:定义出所有的条件后,还要根据合约的逻辑划分出每个条件与状态之间的关系,例如条件a是状态1的进入条件,条件b是状态1的离开条件等。
51.4) 定义事件:由条件触发使状态发生变迁,这反应了智能合约的特定执行逻辑,将这一特定的逻辑定义为事件。事件的信息包括当前状态,进入条件,以及一些合约中的逻辑变量。
52.5)开发状态机:状态机需要包含所有定义的状态,状态之间用定义的条件进行连接,包括进入条件和离开条件。根据智能合约的逻辑关系,梳理各个状态之间的前后顺序以及变迁关系。
53.6)界面开发:界面用于跟踪展示智能合约的运行状态,给用户提供更友好的部署、管理和监控智能合约的方式。
54.7)连接2个状态机和界面:上面开发系统需要连接,成为一个整体系统。
55.8)数据上链:开发数据存储的接口,这类接口需要分别应用于智能合约控制区和状态机执行区。用于将这两个区域的数据都上传到区块链中进行保存。
56.这8个步骤概括了双锁定机制开发的一般流程,在特定的需求中,还可以适当的添加和扩充一些额外的功能。
57.优选实施例1:以公开拍卖的智能合约为例说明公开拍卖智能合约的参与者共有卖家和买家两种角色,卖家提供商品供拍卖,买家竞相出价,在竞价结束后出价最高者购买竞品。在合约竞价状态下,买家可以不断修改竞拍价格,也可以放弃购买。买家在出价之后,要向系统预先存入大于等于竞拍价格的资金,否则竞拍价格无效。再竞拍状态结束后,系统将按照出价扣除出价最高者的预存资金,并将竞拍交付给出价最高者。系统退回其他竞拍者预存的资金以及出价最高者预存资金的余额。
58.需要注意两点:一、非最高出价者没有资格购买竞品;二、出价最高者不可以弃买竞品。
59.整理一下这个公开拍卖的智能合约的几种状态:
· 状态1,合约开始状态,由卖家公开竞拍,经系统审核通过,符合拍卖资格,则合约生成。
60.· 状态2,合约竞拍状态,由买家不断出价,出价过程时,要预存大于等于出价的资金。卖家可以申请取消拍卖。
61.· 状态3,合约竞拍结束状态,这一状态停止所有买家的出价操作,停止卖家的撤回操作。
62.· 状态4,审核状态,系统开始审核所有出价历史以及资金预存条件是否符合,从符合条件的买家中选出出价最高的竞拍者。
63.· 状态5,公示状态,将选出的出价最高的价格信息和出价记录和买家信息进行公示。
64.· 状态6,公示结束状态,停止接受质疑,并根据是否有质疑申请以及质疑是否成立来决定拍卖是否成立。
65.· 状态7,合约履行状态,扣除出价最高买家的预存资金,扣除的金额与所出价格相等。将卖家的竞品交付给买家。退回所有参与买家的预存的资金,如过最高买家的资金有剩余,则也将剩余金额退回。如果是卖家取消了拍卖,那么要扣除违约金。
66.· 状态8,合约结束状态,关闭合约,将合约操作的所有历史信息上链保存,释放系统资源。
67.根据状态变迁的模型定义,总结状态的进入条件和离开条件:
· 状态1的进入条件:卖家发起竞拍
· 状态1的离开条件:竞拍符合资格(卖家合法,竞拍品合规,起拍价合理,交纳违约押金等)
· 状态2的进入条件:状态1的成功离开
· 状态2的离开条件:1)到了竞拍结束时间,2)卖家取消拍卖
· 状态3的进入条件:状态2因其“离开条件1)”成功离开
· 状态3的离开条件:成功停止了所有操作
· 状态4的进入条件:状态3的成功离开
· 状态4的离开条件:审核操作全部完成
· 状态5的进入条件:状态4的成功离开
· 状态5的离开条件:到了公示结束时间
· 状态6的进入条件:状态5的成功离开
· 状态6的离开条件:停止接收质疑,当前系统内无接收到的质疑,或接收到的质疑不成立。
68.· 状态7的进入条件:1)状态6的成功离开,2)状态2因其“离开条件2)”成功离开
· 状态7的离开条件:合约履行操作完成
· 状态8的进入条件:状态7的成功离开
· 状态8的离开条件:信息上链结束,资源释放成功。
69.总结状态的转换过程如图3所示,状态的进入条件隐含了当前状态的来源状态。也就是说,规定了可进入的前置状态的集合。智能合约的状态转换在正常情况下如图3和图4那样的转换,但是如果遇到特殊的情况,例如状态6转换到状态7时,如果离开条件不成立,即,在公示结束后,发现接受到的质疑,并且质疑是成立的,那么就说明拍卖出现了问题,需要特殊干预。
70.优选实施例2:双锁定通信案例智能合约双重锁定控制区与执行区通信的代码分两部分,一部分运行与控制区,一部分运行与执行区。伪代码如下所示:控制区//示例中假设该合约有三种状态//receive state from statemachinestate = getstate(statemachine1);state.unlock() // 获得执行区状态机发来的信息
condition = null;if state.index == "state1":
ꢀꢀꢀꢀ
state.showinterface("state1")
ꢀꢀ
// 显示当前状态
ꢀꢀꢀꢀ
check_exitcondition("state1")
ꢀꢀ
// 检查离开条件
ꢀꢀꢀꢀ
condition = generate_entercondition(state.index.next())
ꢀꢀ
//生成进入下一状态的条件else if state.index == " state2":
ꢀꢀꢀꢀ
state.showinterface("state2")
ꢀꢀꢀꢀ
check_exitcondition(state.index)
ꢀꢀꢀꢀ
condition = generate_entercondition(state.index.next())else
ꢀꢀ
state.index == "state3":
ꢀꢀꢀꢀ
state.showinterface("state3")
ꢀꢀꢀꢀ
check_exitcondition("state3")
ꢀꢀꢀꢀ
condition = generate_entercondition(state.index.next())endifif state =='undefined'
ꢀꢀꢀꢀ
state.showinterface("limbo")
ꢀꢀ
//显示异常状态
ꢀꢀꢀꢀ
callexceptionhandler()
ꢀꢀ
//进行异常处理
ꢀꢀꢀꢀ
condition = generate_entercondition(state.index.next())endifsendcondition(condition) //向执行区发送条件信息state.lock()
ꢀꢀ
//锁定当前合约状态执行区//receive condition from controllercondition = getcondition(controller1);
ꢀꢀ
// 获得控制区controller1发来的条件ret = checkcondition(condition)
ꢀꢀ
//检查condition是否合规if ret == false:
ꢀꢀꢀꢀ
sendstate(controller1);
ꢀꢀ
//向控制区发送状态,等待控制区传送合规的条件信息endifstate.unlock()
ꢀꢀ
//解锁状态,准备执行info = nullif condtion.state == ''state1":
ꢀꢀꢀꢀ
state.transform("state1")
ꢀꢀ
// 进入状态
ꢀꢀꢀꢀ
state = event.execute("state1")
ꢀꢀ
// 执行该状态的事件,并返回状态信息;
ꢀꢀꢀꢀ
info = generateinfo("state1")
ꢀꢀ
//生成当前状态的信息else if condtion.state == " state2":
ꢀꢀꢀꢀ
state. transform ("state2")
ꢀꢀꢀꢀ
state = event.execute ("state2")
ꢀꢀꢀꢀ
info = generateinfo ("state3")else
ꢀꢀ
condtion.state == "state3":
ꢀꢀꢀꢀ
state. transform ("state2")
ꢀꢀꢀꢀ
state = event.execute ("state2")
ꢀꢀꢀꢀ
info = generateinfo ("state3")end ifif state == "undefind"
ꢀꢀ
//如果进入异常状态
ꢀꢀꢀꢀ
info = exceptioninfo()
ꢀꢀ
//返回异常信息endifstate.info = info
ꢀꢀ
//将信息传递到状态的成员变量中,准备发送state.sendstate(controller1) //向执行区controller1发送条件信息state.lock()
ꢀꢀ
//锁定当前合约状态优选实施例3异常状态案例如图5所示,每个状态都有异常状态,例如状态6,除了有正常路线,还有异常状态。由于异常事件可以多变,而且一旦进入异常状态,本次的智能合约执行就停止,不能再进行了,所有异常状态情况只需要一个异常状态就足够。
71.基于状态机同步和控制的智能合约系统,获得可以调整的智能合约语言和环境,智能合约的实施根据事件环境变化,更为灵活,适应使用环境性强。
72.虽然本发明已经参考特定的说明性实施例进行了描述,但是不会受到这些实施例的限定而仅仅受到附加权利要求的限定。本领域技术人员应当理解可以在不偏离本发明的保护范围和精神的情况下对本发明的实施例能够进行改动和修改。
技术特征:
1.一种基于状态机同步和控制的智能合约系统,其特征在于包括:智能合约控制子系统以及智能合约执行子系统,其中所述智能合约外部控制子系统与所述智能合约执行子系统通过系统双锁定模型维持双锁定的机制,即所述智能合约控制子系统所显示的状态与所述智能合约执行子系统的状态保持一致;所述智能合约控制子系统用于指示执行所述智能合约执行子系统内部存储的相关数据;所述智能合约控制子系统以及所述智能合约执行子系统重新部署或选择一个新智能合约系统;所述智能合约控制子系统以及所述智能合约执行子系统将所述相关数据部署在所述新智能合约系统上,继续执行。2.根据权利要求1所述的一种基于状态机同步和控制的智能合约系统,其特征在于:所述智能合约执行子系统将所述相关数据放在区块链系统中。3.根据权利要求1所述的一种基于状态机同步和控制的智能合约系统,其特征在于:所述系统双锁定模型中包括状态机与智能合约并行处理的机制,所述机制包含两条运行流程,一个是状态机的流程,另外一个是智能合约代码的流程,并且这两个流程是双锁定的,互相影响,互相牵制,所述智能合约的代码与状态机有一一对应的关系。4.根据权利要求3所述的一种基于状态机同步和控制的智能合约系统,其特征在于:对所述智能合约的代码执行具有严格的管控,每一步所述智能合约执行被立刻报告给合约相关单位,所述智能合约控制子系统可以获得所述智能合约执行的状态。5.根据权利要求1所述的一种基于状态机同步和控制的智能合约系统,其特征在于:所述智能合约控制子系统具有阻止智能合约代码继续执行的权限,在智能合约执行过程中更换新的智能合约。6.根据权利要求5所述的一种基于状态机同步和控制的智能合约系统,其特征在于:所述更换新的智能合约包含如下步骤:所述智能合约控制子系统要求所述智能合约系统存储相关数据;所述智能合约控制子系统的参与单位重新开发并部署所述新的智能合约;所述智能合约控制子系统将前一步步存储的所述相关数据部署在所述新的智能合约上,启动新的智能合约并使所述新的智能合约开始执行。7.根据权利要求1所述的一种基于状态机同步和控制的智能合约系统,其特征在于:所述双锁定模型采用动态双重锁定协议,实施步骤如下:将所述智能合约以状态机表述获得所述智能合约控制子系统状态机表述和所述智能合约执行子系统状态机,定义所述智能合约所有的运行状态,所述智能合约控制子系统包含状态机表述,而未包含状态机内部执行代码,而所述智能合约执行子系统状态机包含执行代码;在所述智能合约控制子系统内部署相同的状态机以及后台系统;所述智能合约执行子系统启动所述后台系统的执行所述智能合约,或如果发现异常状态所述后台系统停止执行所述智能合约,或者接收所述后台系统送来的状态改变信息或异常状态信息,并且将所述状态改变信息或所述异常状态信息显示给客户,其中:所述智能合约执行子系统启动所述后台系统的执行包括:所述智能合约执行子系统向所述后台系统发送信息,从而开始执行所述智能合约;所述如果发现异常状态所述后台系统停止执行智能合约包括:如果有突发事件,而现
在的所述智能合约并未考虑并包含对于所述突发事件的处理,所述智能合约执行子系统停止所述后台系统的执行,并且要求所述后台系统存储系统数据;所述接收所述后台系统送来的状态改变信息,并且将所述信息显示给客户包括:当所述后台系统发送状态改变信息后,所述智能合约执行子系统改变状态机的状态,并且将所述状态改变信息显示给客户;所述接收所述后台系统送来的异常状态信息,并将所述异常状态信息显示给客户包括:在界面上通知客户异常状态出现,并开启新的智能合约系统。8.根据权利要求7所述的一种基于状态机同步和控制的智能合约系统,其特征在于:所述后台系统的工作流程包括:接受启动:所述智能合约控制子系统控制所述后台系统以及所述智能合约执行子系统开始执行智能合约;执行所述智能合约并传送状态改变信息给所述智能合约控制子系统:所述智能合约控制子系统执行所述智能合约的代码;如果状态发生改变,则所述智能合约控制子系统将状态改变的信息传送给所述智能合约执行子系统,所述状态改变的信息包括以前的状态,改变后的状态以及状态改变的关联信息;接收停止信息并停止执行:如果收到所述智能合约控制子系统发送的停止信息,则所述后台系统停止执行任何智能合约并存储系统数据,所述系统数据存放在指定区域,例如区块链系统内;发现异常状态,将异常状态信息发送到所述智能合约控制子系统包括:所述后台系统作业时出现异常现象,以至于代码无法再继续前进,首先将相关数据存储在指定区域,将异常事件信息发送给所述智能合约控制子系统。9.根据权利要求7所述的一种基于状态机同步和控制的智能合约系统,其特征在于:所述动态双重锁定模型为后台状态机向前台状态机锁定,包括3种动态双重锁定模型:第一种,只需要通知状态机,后台状态机无需等待前台状态机的答复;第二种,必须等待前台状态机认可后,才前进至后台状态机;以及第三种,混合模型,即将第一种和第二种混合。10.根据权利要求1所述的一种基于状态机同步和控制的智能合约系统,其特征在于:所述智能合约系统运行时,用户可以从可视化页面看到智能合约执行的状态,而这状态是由外部状态机和后台内部状态机控制,这两状态机是双锁定的,当智能合约的前台可视化页面出现异常情形时,表明智能合约无法再继续前进,是状态机中未明确定义的状态,如果由所述后台系统发现,所述后台系统存储数据后,立刻通知外部控制系统;如果由外部系统或是客户发现,立刻通知后台执行系统停止执行,存储数据;客户重新开发新的智能合约和新的状态机,以及控制区的显示界面,以替代之前的合约执行。
技术总结
本发明提供一种基于状态机同步和控制的智能合约系统,包括:智能合约控制子系统以及智能合约执行子系统,其中所述智能合约外部控制子系统与所述智能合约执行子系统通过系统双锁定模型维持双锁定的机制,即所述智能合约控制子系统所显示的状态与所述智能合约执行子系统的状态保持一致;所述智能合约控制子系统用于指示执行所述智能合约执行子系统内部存储的相关数据;所述智能合约控制子系统以及所述智能合约执行子系统重新部署或选择一个新智能合约系统;所述智能合约控制子系统以及所述智能合约执行子系统将所述相关数据部署在所述新智能合约系统上,继续执行。基于状态机同步和控制的智能合约系统,获得可以调整的智能合约语言和环境,智能合约的实施根据事件环境变化,更为灵活,适应使用环境性强。适应使用环境性强。适应使用环境性强。
技术研发人员:蔡维德
受保护的技术使用者:天民(青岛)国际沙盒研究院有限公司
技术研发日:2021.05.13
技术公布日:2022/3/8