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.利用符号执行来进行验证

未来方向:

Formal Verification of Smart Contracts Short Paper相关推荐

  1. 阅读论文Formal verification of smart contracts based on users and blockchain behaviors models

    1 题目(Formal verification of smart contracts based on users and blockchain behaviors models) 1.1 作者.出 ...

  2. Reversing Ethereum Smart Contracts: Part 2

    In my previous tutorial, we began reversing engineering the Greeter.sol contract. Specifically, we l ...

  3. Understanding Ethereum Smart Contracts

    You might have heard the term "smart contract," and you might even know that they are &quo ...

  4. How to Secure Your Smart Contracts: 6 Solidity Vulnerabilities and how to avoid them (Part 2)

    While Part 1 discussed some more high profile or obvious vulnerabilities, this post will be about vu ...

  5. Formal Verification (五) coverage、sign-off flow

    coverage type formal和simulation一样,也是基于coverage-driven的验证方式:针对formal的coverage metrics,可以分为以下几种(不同工具定义 ...

  6. full paper(long paper),short paper,oral,poster,workshop,findings

    注:本文参考以下资源整理而来: 参考1:https://blog.csdn.net/keneyr/article/details/103210960 参考2:https://www.zhihu.com ...

  7. Part 2 — Making Sense of Smart Contracts

    The term "smart contract" has no clear and settled definition. The idea has long been hype ...

  8. How to Secure Your Smart Contracts: 6 Solidity Vulnerabilities and how to avoid them (Part 1)

    In a previous post we discussed the future of Ethereum's scalability by analyzing the concepts prese ...

  9. Formal Verification (一) 形式验证的分类、发展、适用场景

    资料分享:百度网盘 提取码:csdn Definition Formal Verification:利用数学分析的方法,通过算法引擎建立模型,对待测设计的状态空间进行穷尽分析的验证. Kinds of ...

最新文章

  1. 英语模板末尾【希望可以记着】
  2. sqllite配置(参考别人)
  3. 写一个会导致死锁的线程
  4. 简述计算机配件选购原则,计算机专业理论期末考试试题
  5. 写底部样式一定要加的属性
  6. 【机器学习入门笔记6:OpenCV像素的读取与写入】20190204
  7. 前华远房地产任大炮任志强:我一定不要清华的毕业生
  8. 如何分析线程转储– IBM VM
  9. [html] 你认为写出什么样的html代码才是好代码呢?
  10. Spring Data REST 远程代码执行漏洞(CVE-2017-8046)分析与复现
  11. 生成word_Word如何生成目录?3个步骤轻松掌握!
  12. 小孔成像实验探究的软件_小孔成像法观察日食
  13. matlab如何把实验结果记录在文件中,实验一Matlab基本操作
  14. Hololens2 与Unity 远程连接调试程序和调试部署
  15. nbu备份脚本 linux,netbackup备份教程详解
  16. 为什么10M、20M的宽带只有大约1、2M的下载速度——网速KB/s与Kbps(Kb/s)的区别
  17. 【python小技巧】 批量将.png格式图片转换为.jpg格式图片
  18. 罗技G304接收器无反应问题,现象及解决方法
  19. Android新闻客户端实训-Day1类Day2接口基操
  20. 不应将商业行为政治化!

热门文章

  1. ASP.NET MVC过滤器的使用
  2. 按钮控制动画的暂停与开始
  3. 心系区域发展,高德用一体化出行服务平台“聚”力区域未来
  4. 线程池创建与注入,以及线程池参数失效
  5. Java 发邮件-带附件且正文html格式
  6. python 爬取视频
  7. 有哪些期货交易理念(期货交易的概念及主要特征)
  8. MACOS打包ZIP文件解压时报错
  9. UG NX 12 基准平面
  10. php 闭包函数 instanceof Closure