[发明专利]一种完备的智能合约形式规范实现方法有效

专利信息
申请号: 201910828641.9 申请日: 2019-09-03
公开(公告)号: CN110705974B 公开(公告)日: 2022-07-05
发明(设计)人: 邱炜伟;李伟;李启雷;梁秀波;尹可挺;张丁文 申请(专利权)人: 杭州趣链科技有限公司
主分类号: G06F11/36 分类号: G06F11/36;G06Q20/06
代理公司: 杭州求是专利事务所有限公司 33200 代理人: 邱启旺
地址: 310051 浙江省杭州市*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 完备 智能 合约 形式 规范 实现 方法
【权利要求书】:

1.一种完备的智能合约形式规范方法,其特征在于,该方法具体包括如下步骤:

(1)确定智能合约函数的可达性:判断该智能合约函数是收敛还是发散,若发散则不可达,若收敛则继续判断该智能合约函数是否正常返回,若不能正常返回则不可达,否则可达;

(2)确定智能合约函数的返回结果:描述该智能合约函数满足可达性时,返回结果满足的谓词;

(3)确定智能合约函数的状态及状态转移:所述的状态包括前置状态、中间状态和后置状态;所述的前置状态、中间状态和后置状态分别具有如下特征:

前置状态为该智能合约函数调用前智能合约函数的入参和状态变量满足的谓词;对一次智能合约函数的调用,前置状态存在且唯一确定;前置状态的描述称为前置从句,前置从句对该智能合约函数来说是恒成立的公理;当其他函数调用该智能合约函数时,前置从句是调用之前的形式验证点,在调用之前对智能合约函数进行形式验证;

中间状态为该智能合约函数调用过程中,智能合约函数的状态变量满足的谓词;对一次智能合约函数的调用,中间状态存在且一般有多个;中间状态的描述称为中间从句,中间从句在智能合约语句处进行形式验证,同时对该智能合约函数的状态转移起到引理的作用,辅助形式验证的推导;

后置状态为该智能合约函数调用后,智能合约函数的状态变量满足的谓词;对一次智能合约函数的调用,后置状态存在且唯一确定;后置状态的描述称为后置从句,后置从句在该智能合约函数调用结束之后对智能合约函数进行形式验证;后置从句的谓词需要覆盖状态转移的所有情形状态转移为智能合约函数在调用前后状态变量的变化;即对每个状态变量其在该智能合约函数调用前后,若发生了转移,则描述在何种条件下,发生了何种转移,若未发生转移,则描述在何种条件下,后置状态和前置状态保持不变;确定智能合约函数的状态转移为描述该智能合约函数满足可达性时,状态变量符合的谓词;

根据每个状态的特征进行确定智能合约函数的状态;智能合约函数在调用前后状态变量的变化即为状态转移。

2.根据权利要求1所述的完备的智能合约形式规范方法,其特征在于,所述的步骤(3)中,当智能合约函数为构造函数时,前置状态为Nil。

3.根据权利要求1所述的完备的智能合约形式规范方法,其特征在于,所述的步骤(3)中,对于循环中的第n次迭代时某个确定的中间状态,称为第n迭代态;由第n迭代态的谓词组成的中间从句,是必不可少的推导条件。

4.根据权利要求1所述的完备的智能合约形式规范方法,其特征在于,所述的步骤(3)中,当智能合约函数为析构函数时,后置状态为Nil。

5.根据权利要求1所述的完备的智能合约形式规范方法,其特征在于,所述的步骤(3)中,步骤(2)中返回结果满足的谓词和步骤(3)中智能合约函数的入参和状态变量满足的谓词,指包含这些数据的逻辑表达式;若数据类型是一个对象,则通过对象域访问相应域的值获取基本数据,对基本数据进一步进行描述。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910828641.9/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top