一种基于区块链的智能合约状态监测系统及监测方法与流程

文档序号:17149228发布日期:2019-03-19 23:16阅读:1253来源:国知局
一种基于区块链的智能合约状态监测系统及监测方法与流程

本发明涉及一种信息技术的监测领域,特别是涉及一种基于区块链的智能合约状态监测系统及监测方法。



背景技术:

早在1997年,智能合约的概念就被nickszabo提出,发表于“formalizingandsecuringrelationshipsonpublicnetworks”以及“aformallanguageforanalyzingcontracts”两篇论文中,相对于传统纸质合约,智能合约具有信息化的优势,通过新兴的互联网和相关信息安全技术来加强其适用范围。

智能合约虽然很早就被提出,但实践却一直落后于理论,主要原因是缺乏有效机制来保证满足合约的可观察性、可验证性与自强制性。在区块链技术出现之前,合约方无法直接观察与验证其他合约方的执行动作,只能通过第三方审核各方合约执行的记录,导致合约执行效率低下,并且成本较高。区块链可追踪、不可篡改、安全、可靠以及分布式的特征,可有效满足nickszabo对智能合约的基本要求。因此,区块链和智能合约结成天然的联盟,互相配合,发挥重要作用。

由于智能合约通常需要多方交互,涉及多方利益,一旦上链很难更改,因此智能合约对正确性的要求很高,同时智能合约的执行效率也是系统有效运行的前提条件。这些都是基于区块链的智能合约高效运行的必要因素。

目前,为了保证智能合约执行的正确性,通常的做法是:1)合约代码在运行前可正确编译,并可进行用例调试,或是通过更加可靠的形式化方法进行验证;2)合约在运行时出现错误,则需将合约运行立即中断,合约所更改的数据状态进行回滚,系统将运行合约代码与区块链上所保存的合约代码进行对比验证,防止合约被恶意篡改。

然而,当前智能合约正确性的保障方法存在错误修复和性能提升上的不足。无法实时感知合约运行的状态,在合约出现错误时,所提供的错误日志有限,使合约修复复杂化,并且合约只注重正确性而忽视了合约的运行性能,无法得到合约在执行各个阶段的代码运行时间,使得合约性能提升困难化。因此需要进行运行时验证,是一种首先监测系统的运行情况,然后对系统是否符合给定的属性或规范进行判定的验证技术。



技术实现要素:

为了解决这些问题,本发明提出了一种基于区块链的智能合约状态监测系统,包括:

合约虚拟机,用于运行智能合约代码,所述合约虚拟机保证合约的独立性和隔离性,所述合约虚拟机内置多个监测模块,用于接收合约监测器发送的信息,并在监测点将其对应的监测属性或事件封装成格式化的消息传递给动态事件接收器;

合约监测器,所述合约监测器包括两个模块:一个是动态事件接收器,负责接收监测智能合约状态所得信息;一个是属性验证器,负责对智能合约状态展开分析,将分析结果向所述合约虚拟机进行反馈,完成一个合约监测通信循环。

优选的,合约监测器还包括策略器,所述属性验证器将监测属性分析结果发送给策略器,所述策略器根据接收的所述合约监测器的属性监测分析结果动态对合约代码进行插桩点的调整,所述合约虚拟机与所述合约监测器相互通信,在无外界干预的情况下,动态监测智能合约运行状态是否正确,实现对于所述智能合约的智能监测。

本发明的目的还在于提供一种基于区块链的智能合约状态监测方法,包括步骤:

(1)在智能合约运行前操作人员设置所述合约监测器,根据需求完成插桩的预备操作,以便完成合约代码在内存运行中的动态插桩;

(2)在智能合约运行过程中,所述合约虚拟机在监测点将其对应且符合需求的监测属性或事件封装成格式化的消息传递给所述合约监测器;

(3)所述合约监测器接收到消息后,对合约的监测属性进行验证分析,并将验证结果向所述合约虚拟机进行反馈,完成一个合约监测通信循环;

(4)通过多次的迭代通信循环,实现智能合约的动态监测。

优选的,所述方法还包括:在监测系统进行迭代通信和智能合约的所述动态监测过程中,所述策略器根据接收的所述合约监测器的属性监测分析结果动态调整运行代码插桩点,实现所述智能合约的运行时状态信息的智能监测。

优选的,所述方法还包括:对所述智能合约的状态信息进行展示,如果发现智能合约存在执行问题,智能合约执行被中止且及时进行相关处理,避免产生不必要的损失。

采用本发明的有益效果在于:动态代码插桩是非侵入性的,可以在内存中将监测模块无侵入的植入合约运行程序中,实现代码动态插桩。在获得更丰富的状态信息的同时不会影响存储的合约代码的内容。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:

图1为根据本发明实施例的基于区块链的智能合约的状态监测系统结构以及监测方法原理图。

具体实施方式

为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此的描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。

参见图1,本实施例中,基于区块链的智能合约状态监测系统,包括:合约虚拟机,用于运行智能合约代码,并可保证合约的独立性和隔离性。合约虚拟机内置多个监测模块,用于接收合约监测器发送的信息,并在监测点将其对应的监测属性或事件封装成格式化的消息传递给动态事件接收器;合约监测器,合约监测器包括两个模块:一个是动态事件接收器,负责接收监测智能合约状态所得信息;一个是属性验证器,负责对智能合约状态展开分析,将分析结果向合约虚拟机进行反馈,完成一个合约监测通信循环;合约监测器还包括策略器,属性验证器将监测属性分析结果发送给策略器,策略器根据接收的合约监测器的属性监测分析结果动态对合约代码进行插桩点的调整,合约虚拟机与所述合约监测器相互通信,在无外界干预的情况下,可动态监测智能合约运行状态是否正确,实现对于合约的智能监测。

关于智能合约执行状态的采集方法,通常使用代码插桩的方法。合约的插桩分为静态代码插桩以及动态代码插桩。静态代码插桩对合约的代码具有侵入性,会导致执行合约代码无法与区块链上的合约存档代码进行正确比对;动态代码插桩则是非侵入性的,可以在内存中将监测模块无侵入的植入合约运行程序中,实现代码动态插桩。动态插桩在获得更丰富的状态信息的同时不会影响存储的合约代码的内容,只是在运行时插桩。本智能合约状态监测方法选用动态插桩方式,包括以下步骤:

(1)在智能合约运行前操作人员设置合约监测器,根据需求完成插桩的预备操作,以便完成合约代码在内存运行中的动态插桩;

(2)在智能合约运行过程中,合约虚拟机在监测点将其对应且符合需求的监测属性或事件封装成格式化的消息传递给合约监测器;

(3)合约监测器接收到消息后,对合约的监测属性进行验证分析,并将验证结果向合约虚拟机进行反馈,完成一个合约监测通信循环;

(4)通过多次的迭代通信循环,可实现智能合约的动态监测;

(5)对于设置策略器的监测系统,在监测系统进行迭代通信和智能合约动态监测过程中,策略器根据接收的合约监测器属性监测分析结果动态调整运行代码插桩点,实现智能合约的运行时状态信息的智能监测;

(6)对智能合约的状态信息进行展示,如果发现智能合约存在执行问题,智能合约执行被中止且及时进行相关处理,避免产生不必要的损失。

采用本实施例的应用场景,动态代码插桩是非侵入性的,可以在内存中将监测模块无侵入的植入合约运行程序中,实现代码动态插桩。在获得更丰富的状态信息的同时不会影响存储的智能合约代码的内容。虽然本发明已经参考特定的说明性实施例进行了描述,但是不会受到这些实施例的限定而仅仅受到附加权利要求的限定。本领域技术人员应当理解可以在不偏离本发明的保护范围和精神的情况下对本发明的实施例能够进行改动和修改。

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