[发明专利]一种可更新的智能合约的动态验证方法在审
| 申请号: | 202110433470.7 | 申请日: | 2021-04-19 |
| 公开(公告)号: | CN113191774A | 公开(公告)日: | 2021-07-30 |
| 发明(设计)人: | 罗少龙;胥勇;柳发健 | 申请(专利权)人: | 深圳前海移联科技有限公司 |
| 主分类号: | G06Q20/40 | 分类号: | G06Q20/40;G06F8/41;G06F8/65 |
| 代理公司: | 深圳市中融创智专利代理事务所(普通合伙) 44589 | 代理人: | 叶垚平 |
| 地址: | 518000 广东省深圳市*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 更新 智能 合约 动态 验证 方法 | ||
本发明公开了一种可更新的智能合约的动态验证方法。该可更新的智能合约的动态验证方法包括以下步骤,步骤S1:编译器接收一份智能合约源代码作为输入;步骤S2:编译器接收一份验证条件作为输入;步骤S3:编译器输出经修改后的安全智能合约。本发明的可更新的智能合约的动态验证方法具有准确率高、可大规模验证扩展等优点。
技术领域
本发明涉及区块链技术领域,具体涉及一种可更新的智能合约的动态验证方法。
背景技术
现有的智能合约动态验证作者设计了一种源代码到源代码的Solidity编译器——Solythesis,用来对智能合约进行运行时的高效动态验证,确保合约的安全性。编译器接受Solidity合约源码和不变式,输出修改后的合约,该合约将拒绝所有违反不变式的交易。编译器通过不变式指定的条件生成Solidity语句并插入代码,在执行时合约将检查是否满足不变式。
上述方法在智能合约中插入代码,并将修改后的智能合约部署上链后,将不能再修改,该方法是在链下解析不变式并将不变式对应的Solidity代码插入智能合约中,不能在智能合约运行时刻动态解析验证条件,传统的形式化验证方法存在适用范围小、求解速度慢的问题,且存在较多假阳性的情况,因此需要新的方法来对智能合约进行高准确率的、可扩展的大规模验证。
发明内容
本发明提供了一种可更新的智能合约的动态验证方法,旨在解决上述问题。
根据本申请实施例提供的一种可更新的智能合约的动态验证方法,包括以下步骤:
步骤S1:编译器接收一份智能合约源代码作为输入;
步骤S2:编译器接收一份验证条件作为输入;
步骤S3:编译器输出经修改后的安全智能合约。
优选地,所述编译器的运行步骤包括:
步骤S10:转换并储存验证条件;
步骤S11:植入验证解释器;
步骤S12:添加验证函数调用;
步骤S13:输出结果。
优选地,所述步骤S10包括:在输入的智能合约源代码中添加一个string类型的storage变量且名称为verification,将输入的验证条件语言转换为字节码格式,并存储在verification变量中;
在智能合约源代码中添加一个setVerification函数,该函数的输入参数是一个string类型的变量,函数内部将这个参数赋值给verification变量,用于从外部更新verification变量的值,并限制该函数只能由智能合约的创建者调用。
优选地,所述步骤S11包括:在智能合约源代码中添加一个check函数用于验证,所述check函数的输入参数为一个string类型的变量且名称为information,表示函数调用时的函数名、传入的参数、调用位置经编码后的结果,函数内部为验证条件语言的解释器,将会依次执行存储在verification变量的字节码中的指令。
优选地,所述步骤S12包括:对智能合约源代码进行分析,找出其所有的函数,并在函数的第一行和最后一行插入一个check函数的调用语句,将函数名、函数的多个参数、当前位置的三种信息进行编码,转换为一个string类型的值并传入check函数中。
优选地,所述步骤S13包括:将处理后的智能合约代码输出,输出的智能合约代码为安全的经过验证的智能合约。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳前海移联科技有限公司,未经深圳前海移联科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110433470.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种偶氮染料产品的快速检测方法
- 下一篇:激光打标装置





