4 个版本 (重大变更)

0.4.0 2022 年 12 月 9 日
0.3.0 2022 年 12 月 9 日
0.2.0 2022 年 4 月 21 日
0.1.2 2022 年 4 月 14 日

#10 in #fvm

Download history 3983/week @ 2024-03-14 3205/week @ 2024-03-21 1986/week @ 2024-03-28 3918/week @ 2024-04-04 4435/week @ 2024-04-11 3826/week @ 2024-04-18 1464/week @ 2024-04-25 2072/week @ 2024-05-02 2332/week @ 2024-05-09 1749/week @ 2024-05-16 1332/week @ 2024-05-23 1734/week @ 2024-05-30 2269/week @ 2024-06-06 2077/week @ 2024-06-13 2106/week @ 2024-06-20 1392/week @ 2024-06-27

8,426 每月下载次数
7 个 crate 中使用 (via fvm)

MIT/Apache

190KB
4.5K SLoC

fvm-wasm-instrument

这最初是一个 wasm-instrumet,进行了一些 FVM 特定更改,但后来已重构成远离 parity-wasm,后者已达到 EOL。

fvm-wasm-instrument 是一个 Rust 库,包含一组 WASM 模块仪器化和转换工具,主要用于基于 wasm 的区块链和智能合约。

提供的功能

此库提供两个功能

  • 气体计量。
  • 堆栈高度限制。

气体计量

通过直接将必要的代码注入到 wasm 模块中,将气体计量添加到您的平台。这允许在不同执行引擎(解释器、JIT 编译器)之间拥有统一的气体计量实现。

堆栈高度限制器

WASM 标准以及任何足够复杂的执行引擎都没有指定在执行中止或故障之前可以支持多少个 wasm 堆栈项。即使是同一执行引擎在不同操作系统或主机架构上也可能支持不同数量的堆栈项,并且完全有权这样做。

这种不确定性可能会导致在区块链环境中使用时出现共识失败。

为了解决这个问题,我们可以注入一些代码来在运行时测量堆栈高度,并在达到预定义的限制时终止执行。选择足够小的这个限制,使其小于任何合理参数化的执行引擎所支持的大小,可以解决这个问题:所有执行引擎都会在触及任何特定实现限制之前达到注入的限制。

许可

fvm-wasm-instrument 以 MIT 许可证和 Apache 许可证(版本 2.0)的条款进行分发,由您选择。

请参阅 LICENSE-APACHE 和 LICENSE-MIT 了解详情。

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义,您提交的任何有意加入 fvm-wasm-instrument 的贡献,将按上述方式双重许可,没有任何附加条款或条件。

依赖项

约4.5MB
约107K SLoC