其他分享
首页 > 其他分享> > Formal Verification of Smart Contracts Short Paper

Formal Verification of Smart Contracts Short Paper

作者:互联网

Formal Verification of Smart Contracts: Short Paper

ABSTRACT

提出将使用F*框架用于编写代码

1. INTRODUCTION

在这里插入图片描述
本文目的:通过静态分析方式查找漏洞
在这里插入图片描述

字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码。

在这里插入图片描述
将智能合约的验证分为双端方式:(基于语言的方式来证明)

1.直接对Solidity编程语言转换成F*语言 *

Solidity*
Runtime error就是在运行期间出现的错误,运行时错误不同于炸弹或系统垮掉,运行时错误一般不影响操作系统运行*.)时的安全性

2.将EVM字节码部分转换成F*语言

EVM* 将EVM字节码反编译为F*语言。
允许我们分析低级别的属性,例如完成呼叫或交易所需的气体量上限

文章目的:
本文目的

未来验证可靠性编译器的正确性

2. FROM SOLIDITY TO F*

提供的方式:
在这里插入图片描述
提出工具将Solidity转换为F* 语言,并提供了嵌入式F*的自动分析样本

研究中不包含循环语句

2.1具体的转换

合约转换为F模块——类型声明转换——合同属性打包成状态记录——合同方法转换成F?* 的功能——判断分支是返回还是抛出——赋值的转换——内置的方法调用被库调用替换

2.2检验易受攻击的模式

Solidity程序的缺陷:

其他运行时错误(如气体耗尽或调用堆栈溢出)都会触发异常。但在使用send函数时send and its variants are not guaranteed to succeed (send returns a bool).

3.字节码反编译码为F*

EVM*?作为EVM字节码的反编译器,用于分析Solidity源代码不可用的合约,并用于检验合约的低级属性
在这里插入图片描述
反编译器基于符号执行进行堆栈分析,以识别程序中的跳转目的地,并检测堆栈不足和溢出

4.结论

利用F* 来验证智能合约:

1.可以灵活捕捉并验证合同的程序的相关属性

2.便于利用其他静态工具进行验证

3.利用符号执行来进行验证
在这里插入图片描述

未来方向:

在这里插入图片描述

标签:Short,字节,验证,Contracts,Solidity,send,Paper,合约,EVM
来源: https://blog.csdn.net/qq_42932021/article/details/118726360