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

无 std radix-wasm-instrument

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

1 个稳定版本

1.0.0 2024 年 3 月 19 日

#85 in #parity

Download history 193/week @ 2024-03-13 929/week @ 2024-03-20 918/week @ 2024-03-27 973/week @ 2024-04-03 708/week @ 2024-04-10 1264/week @ 2024-04-17 1129/week @ 2024-04-24 1221/week @ 2024-05-01 944/week @ 2024-05-08 1269/week @ 2024-05-15 852/week @ 2024-05-22 714/week @ 2024-05-29 793/week @ 2024-06-05 597/week @ 2024-06-12 700/week @ 2024-06-19 817/week @ 2024-06-26

2,955 每月下载量
6 个 crate 中使用 (通过 radix-engine)

MIT/Apache

185KB
4.5K SLoC

radix-wasm-instrument

radix-wasm-instrumentparitytech/wasm-instrument 的分支,以下为变更内容

  • 将依赖项 parity-wasm 替换为 wasmparser

一个 Rust 库,包含一系列 wasm 模块仪表化和转换功能,主要用于基于 wasm 的区块链和智能合约。

提供功能

以下是非详尽的功能列表。请参阅 文档 获取详细信息。

Gas 计量

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

堆栈高度限制器

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

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

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

许可证

wasm-instrument 根据 MIT 许可证和 Apache 许可证(版本 2.0)分发,由您选择。

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

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在wasm-instrument中的任何贡献,应双授权,如上所述,不附加任何额外条款或条件。

依赖关系

~3MB
~57K SLoC