Formal Verification of Smart Contracts Short Paper

本文探讨了如何利用F*框架对Solidity智能合约进行双重验证,包括源代码到F*语言的转换以及EVM字节码的解析。通过静态分析,旨在发现运行时错误并增强编译器可靠性。研究特别关注gas消耗和堆栈操作,展示了F*在智能合约安全性和低级别特性分析中的潜力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.利用符号执行来进行验证
在这里插入图片描述

未来方向:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值