[发明专利]一种跨链智能合约的形式验证方法在审
申请号: | 202310463101.1 | 申请日: | 2023-04-26 |
公开(公告)号: | CN116402613A | 公开(公告)日: | 2023-07-07 |
发明(设计)人: | 李双玖;程学林;王强 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06Q40/04 | 分类号: | G06Q40/04;G06F21/57;G06F21/44;G06F16/27 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 贾玉霞 |
地址: | 310058 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 智能 合约 形式 验证 方法 | ||
1.一种跨链智能合约的形式验证方法,其特征在于,该方法具体包括如下步骤:
(1)定义智能合约执行过程中上下文的语义,包括世界状态、虚拟机状态、执行上下文三组状态变量;
(2)根据现有漏洞类型,定义跨链智能合约的形式化验证规范,用于后续验证;
所包括的形式化验证规范如下:
对于采用签名验证方式的跨链消息验证,形式化验证规范为:
(1)签名必须通过校验,且签名人地址必须为事先规定的验证人地址;
(2)验证人地址不能通过非法的方式进行更改;
对于采用默克尔树验证方式的跨链消息验证,形式化验证规范为:
以默克尔树根节点作为起点,遍历默克尔树路径:对于每一层的中间节点,该层的中间节点的根哈希必须等于下一层该中间节点对应的所有子节点的哈希总和;而对于最后一层的叶子节点,叶子节点的哈希必须等于交易内容的哈希;
对于资产铸造,形式化验证规范为:
质押的代币数量必须等于铸造的代币数量;
(3)将输入的一系列智能合约合并为一个合约C;
(4)将合约C编译成字节码,解析字节码构建流程控制图;字节码中的基本代码块构成图中节点,字节码中的跳转指令构成节点的边;
(5)在所述流程控制图基础上进行符号执行,得到一组符号化路径;
(6)基于所述符号化路径,分析是否存在相关漏洞,即是否满足步骤(2)中定义的形式化验证规范,从而对符号化路径进行筛选;
(7)基于步骤(6)筛选后的路径,再做进一步分析,过滤误报,剔除假阳性。
2.根据权利要求1所述跨链智能合约的形式验证方法,其特征在于,所述步骤(5)中,在所述流程控制图基础上进行符号执行,具体包括:
从入口节点开始,获取要执行的状态,在状态的上下文中符号化地执行每条指令,直到没有剩余状态,或者达到规定的限制;当遇到条件跳转指令JUMPI时,查询约束求解器Z3,分别确定两个分支条件在当前路径上是否可证明为真,或可证明为假;如果其中一个分支可证明为真,则将程序计数器更新到可证明为当前分支所在的目标地址;如果其中一个分支可证明为假,则将程序计数器更新到另一个分支所在的目标地址;如果都不可证明,则两个分支都是可能的,那么以深度优先搜索的方式探索两条路径,更新每条路径上的状态,同时更新流程控制图中的边;最终,产生一组符号化的路径。
3.根据权利要求1所述跨链智能合约的形式验证方法,其特征在于,所述步骤(6)具体包括:
将所述符号化的路径和步骤(2)中的形式化验证规范转化为数学逻辑表达式,然后采用SMT求解器Z3进行推导证明;若符号化的路径满足形式化验证规范,则证明该符号化的路径安全,将该路径从这组符号化的路径中剔除;若不满足,则记录造成不满足结果的状态变量的值,并定位到合约中的错误代码。
4.根据权利要求1所述跨链智能合约的形式验证方法,其特征在于,所述步骤(6)中,是否满足对于采用签名验证方式的跨链消息验证的操作具体为:
假设验证人地址存储在位置o处,solidity通过函数ecrecover验证签名,并返回签名人地址S,当且仅当S=σt[a]s[o]时,当前路径才是可满足的;其中,σt表示世界状态的最终值;[a]s表示帐户存储内容;[o]表示位置o处,即验证人地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310463101.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种巷道防冲支架柔性顶梁
- 下一篇:一种电动脚托