[发明专利]基于类型检测的智能合约信息流完整性验证方法及系统在审
| 申请号: | 202110293711.2 | 申请日: | 2021-03-19 |
| 公开(公告)号: | CN113051624A | 公开(公告)日: | 2021-06-29 |
| 发明(设计)人: | 胡镡文;庄毅;林尚威;章甫源;阚双龙;曹子宁 | 申请(专利权)人: | 南京航空航天大学 |
| 主分类号: | G06F21/64 | 分类号: | G06F21/64 |
| 代理公司: | 南京理工大学专利中心 32203 | 代理人: | 朱炳斐 |
| 地址: | 210016 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 类型 检测 智能 合约 信息 完整性 验证 方法 系统 | ||
1.一种基于类型检测的智能合约信息流完整性验证方法,其特征在于,所述方法包括以下步骤:
步骤1,为智能合约编程语言构建形式化语法、语义;
步骤2,构建智能合约的安全类型系统STC,用于检测智能合约信息流完整性;
步骤3,构建基于智能合约类型系统STC的类型验证器STV,自动为智能合约的状态变量寻找最优安全类型分配,即状态变量中被分配为可信的数量最多,使得智能合约满足信息流完整性。
2.根据权利要求1所述的基于类型检测的智能合约信息流完整性验证方法,其特征在于,步骤1中所述构建形式化语法,具体包括:
(1)将智能合约编程语言抽象为短语,这些短语为表达式或语句;
智能合约的表达式包括8种类型:值v、全局变量g、状态变量id、表达式组智能合约实例表达式NewExp、操作表达式OperatorExp、智能合约数组或映射表达式IndexAccess,和自定义类型的数据字段访问表达式MemberAccess;智能合约表达式的语法定义如下:
NewExp::=new idc()
OperatorExp::=opu exp|exp1 opb exp2
IndexAccess::=exp[]|exp1[exp2]
MemberAccess::=exp.id|exp.IndexAccess
其中,new为实例化合约的标识符,opu为一元操作符,opb为二元操作符,idc为合约名称变量;
智能合约的语句包括3种类型:简单语句SimpleStmt、语句块BlockStmt和语句序列;其中,SimpleStmt表示单个基本语句,包括函数调用FunctionCall、普通赋值语句exp1 op=exp2和接收函数调用返回值的赋值语句exp op=FunctionCall;BlockStmt表示一个语句块,包括分支结构语句if(exp)then stmt1 else stmt2、重复语句while(exp)stmt、变量定义语句letvar id op=exp in stmt、需求语句require(exp)in stmt和一个花括号语句块{stmt};函数调用FunctionCall包括三种类型:内部函数调用外部函数调用和底层函数调用底层函数调用包括三类:call底层函数调用delegatecall底层函数调用和callcode底层函数调用智能合约语句的语法定义如下:
(Statements)stmt::=SimpleStmt;|BlockStmt|stmt1 stmt2
SimpleStmt::=FunctionCall|exp1op=exp2|exp op=FunctionCall
LowLevelCall::=call|delegatecall|callcode
BlockStmt::=if(exp)then stmt1 else stmt2|while(exp)stmt|letvar id op=expin stmt|require(exp)in stmt|{stmt}
其中,idf为函数名称变量,op=为赋值操作符;
(2)在编写的智能合约中,函数类型分为普通函数normal function、构造函数constructor和回退函数fallback function;一个智能合约有且只有一个未命名的fallback function,其不能有输入或输出参数,并且必须有external可见性;其中,普通函数normal function的语法定义如下:
式中,idc表示智能合约的名称,idf表示函数的名称,表示函数的输入参数,表示函数的输出参数,Q表示函数的可见性;
构造函数constructor与普通函数normal function的区别在于:idf被关键字constructor替换;
回退函数fallback function的语法定义如下:
funf::=idc.function()external{stmt}
(3)智能合约包括状态变量声明和函数声明,其语法的定义如下:
(Contracts)ctr::=contract id{ctrPart}
ctrPart::=letvar id op=exp|fun|ctrPart ctrPart
步骤1中所述构建形式化语义具体包括:
(1)智能合约的表达式的操作语义形式为声明表达式exp在求值环境μ中计算为值v;同时使用dom(μ)和ran(μ)分别表示μ的定义域和值域;并假设按合约名索引的表CA存储NewExp的地址,以模拟随机合约地址;
(2)智能合约的语句的操作语义形式为其中μ,μ′分别为执行语句stmt之前和之后的求值环境,S表示stmt所属的调用方智能合约;同时假设函数定义存储在按函数名索引的表FD中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110293711.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种输液智能监测保护设备
- 下一篇:一种用于塑料板材的可快开拆卸式造粒装置





