7 个稳定版本

9.0.0 2021 年 7 月 28 日
8.0.0 2021 年 7 月 28 日
7.5.0 2021 年 3 月 24 日
7.4.0 2020 年 6 月 24 日
7.1.0 2019 年 12 月 4 日

#evmc 中排名第 3

Apache-2.0

55KB
1K SLoC

evmc-declare

这是对 EVMC 的 Rust 接口。

此包包含一个声明宏,用于轻松创建与 EVMC 兼容的 VM 实现。


lib.rs:

evmc-declare 是一个属性风格的程序宏,用于自动生成 EVMC API 的 FFI 代码,并尽可能减少样板代码。

evmc-declare 可以通过将属性应用于实现来自 evmc-vm crate 的 EvmcVm 特质的任何结构来使用。

该宏接受三个参数:一个有效的 UTF-8 风格的 VM 名称,一个以逗号分隔的能力列表,以及一个版本字符串。

示例

#[evmc_declare::evmc_declare_vm("This is an example VM name", "ewasm, evm", "1.2.3-custom")]
pub struct ExampleVM;

impl evmc_vm::EvmcVm for ExampleVM {
    fn init() -> Self {
            ExampleVM {}
    }

    fn execute(&self, revision: evmc_vm::ffi::evmc_revision, code: &[u8], message: &evmc_vm::ExecutionMessage, context: Option<&mut evmc_vm::ExecutionContext>) -> evmc_vm::ExecutionResult {
            evmc_vm::ExecutionResult::success(1337, None)
    }
}

依赖关系

~1.7–4MB
~77K SLoC