#wasm-module #blockchain #parity #gas-metering #smart-contracts #wasm

无 std WASM-Instrument

对 wasm 模块进行仪器化和转换

5 个版本 (3 个破坏性更新)

0.4.0 2022 年 11 月 26 日
0.3.0 2022 年 9 月 11 日
0.2.0 2022 年 6 月 8 日
0.1.2 2022 年 6 月 6 日
0.1.1 2022 年 1 月 18 日

#918魔法豆

Download history 37045/week @ 2024-03-14 42557/week @ 2024-03-21 41128/week @ 2024-03-28 48168/week @ 2024-04-04 44363/week @ 2024-04-11 40518/week @ 2024-04-18 36516/week @ 2024-04-25 32573/week @ 2024-05-02 32793/week @ 2024-05-09 32382/week @ 2024-05-16 43503/week @ 2024-05-23 39589/week @ 2024-05-30 29719/week @ 2024-06-06 33311/week @ 2024-06-13 35312/week @ 2024-06-20 26684/week @ 2024-06-27

每月下载量 131,403 次
用于 175 个crate(9 个直接使用)

MIT/Apache

96KB
2.5K SLoC

WASM-Instrument

一个包含用于基于 wasm 的区块链和智能合约的 wasm 模块仪器化和转换的 Rust 库。

提供的功能

这是一个提供功能的不完整列表。有关详细信息,请参阅文档

Gas 计量

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

栈高度限制器

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

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

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

许可证

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

有关详细信息,请参阅LICENSE-APACHE和LICENSE-MIT。

贡献

除非您明确声明,否则您提交给wasm-instrument的任何有意贡献,根据Apache-2.0许可证的定义,应如上所述双重许可,没有任何额外的条款或条件。

依赖项

~305KB