智能合约中的形式验证

智能合约的正式验证是加密货币领域的新兴趋势,其重点是减少智能合约的错误和漏洞实例,这些实例导致了许多备受关注的黑客事件和地方性安全问题.

在硬件和软件系统方面,形式验证具有广泛的应用。随着系统复杂性的增加,尤其是硬件的复杂性,它变得尤为重要。在区块链网络中,一连串的智能合约漏洞和漏洞导致对改进智能合约编程和审计的需求.

智能合约中的正式验证

形式验证的背景

正式验证用途 形式方法 检查硬件或软件系统的设计是否符合一组特定的属性。形式化方法是用于硬件,软件系统的规范,开发和验证的一种特殊类型的数学技术。使用形式方法来证明或否定预期算法的正确性称为形式验证.

Martin Davis早在1954年就开发了第一台计算机生成的数学证明,这一点受到赞誉。这一概念在1960年代开始受到人们的青睐,以验证早期语言(例如Pascal和Java)中计算机程序的正确性。继一些著名的计算机错误之后,例如 奔腾FDIV错误 在1994年,人们普遍认为需要进行正式验证.

测试软件或硬件系统可以分为两个大致阶段:

  1. 验证
  2. 确认

验证是确定产品是否满足用户需求.

验证是测试产品是否符合规格.

验证包括生成与产品的设计规格(即算法,硬件芯片)相关的抽象数学模型,而用于生成模型的形式化方法主要来自理论计算机科学基础.

在硬件系统中,形式验证已变得极为重要,几乎每个主要的硬件制造商都在这里使用形式验证来确保其产品的鲁棒性。但是,它在软件中的使用并不像在硬件中那样普遍,这主要归因于硬件制造的商业性质。.

但是,随着区块链和加密货币的出现,这种动态开始发生变化,在区块链和加密货币中,相当多的价值转移是在分散的网络中自动执行的。与传统系统相比,智能合约的价值更高,因此其正确性已成为迫切关注的问题。.

一种 历史简介 要了解合同代码中简单漏洞的后果,就需要使用智能合约漏洞.

为什么将其用于智能合约?

据最近 学习 在将近100万个以太坊智能合约上执行,其中每合约10秒内将34,200个标记为易受攻击的合约。通过分析智能合约的跟踪漏洞可以达到这个惊人的数字:

  • 寻找无限期锁定资金的合同
  • 合约不慎将资金泄漏给任意用户
  • 可以被任何人杀死的合同

再加上与为区块链编程智能合约相关的一般逻辑复杂性和新颖性,一旦将其致力于区块链,它们的不变性将使漏洞更具破坏性.

Brian Marick和Daejun Park提供了出色的选择 分析 智能合约漏洞以及形式验证如何帮助减轻其实例的风险。本质上,开发人员通常有两种方法无法从智能合约中获得所需的东西.

  1. 误解的意图
  2. 实施该意图时犯错

这些标准错误中的许多错误可能导致巨额资金被锁定,例如 平价钱包 或以太坊的 递归发送漏洞 在里面 DAO事件. 形式验证是数学上确认特定漏洞不会导致破坏性利用媒介的一种方式.

形式规范被用作计算机可以检查的智能合约所需的精确输出或结果。一旦合同编译为字节码,并且随后的正式验证证明编译后的字节码已实现规范,则随后进行验证。但是,手动执行正式验证是一个艰巨的过程,有时会带来自己的错误。即使是验证正式证明结果也可能带有细微差别.

像这样的工具 Coq证明助理 旨在帮助促进有关程序属性的机械化证明的开发,目前已被几种新兴的加密货币使用,它们使用的语言嵌入了Coq中。.

尽管智能合约审核通过代码审查提供了急需的保证层,但是智能合约的正式验证可以通过进一步的数学分析来帮助减少漏洞实例。随着智能合约变得越来越普遍,形式验证的应用在行业中将变得越来越普遍。.

形式验证的当前应用

多个平台已经在集成形式验证,或计划很快进行形式验证。评估在这些平台中运行的智能合约的安全性对于衡量其在消除关键漏洞方面的有效性至关重要.

Zilliqa

Zilliqa是一个高吞吐量的区块链,旨在托管可扩展和安全的去中心化应用程序(dapps)。 Zilliqa背后的几个技术开发人员是早期研究的作者,该研究发现了数千个智能合约的弱点.

Zilliqa

Zilliqa使用一种称为Scilla的新编程语言,该语言由Zilliqa团队和其他一些分支机构的成员设计。 Scilla是嵌入在Coq Proof Assistant中的中级语言。它旨在成为高级语言的翻译目标,以便在将合同编译为字节码之前执行分析和验证.

特佐斯

Tezos是用 OCaml 它的智能合约语言是基于OCaml的Michelson。之所以选择OCaml,是因为它的功能性编程提供了速度,明确的语法和语义以及实现形式化证明的能力。 Tezos还使用Coq Proof Assistant来促进智能合约的正式验证.

Tezos指南

Tezos联合创始人Arthur Breitman 已发布 有关某些验证的详细信息 迈克尔逊合同 在Coq中,包括去年在他们的testnet上签订的多重签名合同。 Tezos最近启动了,因此其形式验证的应用应该为使用该方法提高智能合约安全性的状态提供一个很好的衡量标准。困扰着Solidity合同的漏洞利用是否会在Tezos中发挥出来还需要一段时间,但是评估智能合约在Tezos上的安全性可能非常说明持续趋势.

卡尔达诺

卡尔达诺语是用Haskell编写的,其智能合约语言是基于Haskell的Plutus.

卡尔达诺指南

卡尔达诺设计有卡尔达诺计算层(CCL),该层由两层组成:

  1. 正式指定的虚拟机和语言框架
  2. 正式指定的语言,可帮助验证智能合约代码

目标是创建一种环境,以简化确保合同按设计运行的过程而没有灾难性漏洞的过程。值得注意的是,卡尔达诺并未使用以太坊的EVM等有限的堆栈设计,因此无需担心堆栈算术流程,即可轻松轻松地正式验证智能合约.

以太坊

以太坊一直在研究形式验证的合并,有多个项目正在研究其潜力。其中一份出版物,“使智能合约更智能,”侧重于智能合约错误,并提出缓解这些错误的方法,包括改善以太坊的操作语义以促进形式验证.

以太坊指南

以太坊的气体限制使其成为现实 具有挑战性的 进行正式验证。此外,了解Solidity程序含义的唯一方法是将其编译为字节码。编译器变化迅速,因此验证工具也需要适应变化率。考虑到以太坊的网络和历史,以太坊中的智能合约的正式验证表面上将为减轻漏洞的有效性提供最好的衡量标准,而正式验证已在网络中得到广泛使用.

结论

形式验证是一项非常复杂且艰巨的任务。尽管如此,它已成为硬件行业的通用标准,并且有可能在软件领域继续获得动力。区块链和加密货币网络(通常进行高价值转移)将肯定会加速这种效应。衡量正式合同智能验证的积极影响可能需要花费几年的时间,因为我们只看到应该成为该行业更广泛趋势的开端。.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me