argotorg/hevm

GitHub: argotorg/hevm

hevm 是专为智能合约设计的 EVM 符号执行引擎,支持形式化验证、等价性检查和符号化单元测试,能比模糊测试更彻底地覆盖执行路径。

Stars: 329 | Forks: 74

# hevm hevm 是以太坊虚拟机 (EVM) 的一个实现,专为智能合约的符号执行、等价性检查和(符号)单元测试而设计。`hevm` 可以对智能合约进行符号执行,执行符号等价性测试,并运行任意 EVM 代码。特别是,它能够以符号化的方式运行 [Forge](https://book.getfoundry.sh/forge/writing-tests) 测试套件,从而比模糊测试 更加彻底。 ## 文档与支持 面向用户的文档可在 [hevm book](https://hevm.dev/) 中找到。 我们有一个公开的 Matrix 聊天室,位于[这里](https://matrix.to/#/%23hevm%3Amatrix.org)。 ## 通过静态二进制文件安装 每个[发布版本](https://github.com/argotorg/hevm/releases)都提供了适用于 x86 Linux 和 macOS 的静态二进制文件。这些二进制文件需要安装 `z3`。 您可以通过包管理器安装 `z3`,例如在 Ubuntu 上使用 `apt install z3`,或在 macOS 上使用 `brew install z3`。 ## Forge 项目快速用户指南 对于一个 Forge 项目,您可以运行: ``` cd my-forge-project forge clean forge build --ast hevm test --prefix test # will symbolically execute all tests prefixed with "test" ``` 有关如何在 Forge 项目中使用 hevm 的更全面指南,请参阅我们的 [Forge std-test 教程](https://hevm.dev/std-test-tutorial.html) ## 通过 nix 安装 hevm nix 包可在 [nixpkgs](https://search.nixos.org/packages?channel=unstable&show=haskellPackages.hevm) 中找到, 并可以通过以下方式安装: - flakes: `nix profile install nixpkgs#haskellPackages.hevm` - legacy: `nix-env -iA haskellPackages.hevm` 可以通过以下命令直接从此仓库的 `main` 分支安装 hevm flake: ``` nix profile install github:argotorg/hevm ``` ## 开发 我们使用 `nix` 来管理项目依赖。要开始 hevm 的开发,您首先应该[安装 nix](https://nixos.org/download.html)。 安装 nix 后,您可以从仓库根目录运行 `nix develop` 以进入包含所有必需开发依赖的开发 shell。 进入 shell 后,您可以使用常规的 `cabal` 命令来构建和测试 hevm: ``` $ cabal run hevm -- test --root myproject # run the cli $ cabal run test # run the tests $ cabal repl test # enter the repl for the test.sh $ cabal run ethereum-tests # run the ethereum standard tests # 运行启用了 profiling 的 CLI binary $ cabal run --enable-profiling hevm -- +RTS -s -p -RTS ``` ## 历史 `hevm` 最初是作为 [dapptools](https://github.com/dapphub/dapptools/) 项目的一部分开发的,并于 2022 年 8 月由以太坊基金会的形式化方法团队分叉到此仓库。
标签:EVM, Forge, Foundry, Haskell, SMT求解器, Web3, Z3, 云安全监控, 以太坊, 加密货币, 区块链安全, 单元测试, 形式化验证, 智能合约, 符号执行, 等价性检查, 防御性安全, 静态分析