#abi #solidity #evm #ethereum #encoding #codec

无 std linera-alloy-sol-types

编译时 ABI 和 EIP-712 实现

1 个不稳定版本

0.7.4 2024 年 5 月 30 日

#28#solidity

Download history 145/week @ 2024-05-26 107/week @ 2024-06-02 76/week @ 2024-06-09 97/week @ 2024-06-16 22/week @ 2024-06-23 78/week @ 2024-06-30 25/week @ 2024-07-07 101/week @ 2024-07-14 80/week @ 2024-07-21 104/week @ 2024-07-28 95/week @ 2024-08-04 129/week @ 2024-08-11 107/week @ 2024-08-18

450 每月下载
用于 17 个 crate(9 个直接使用)

MIT/Apache

650KB
14K SLoC

linera-alloy-sol-types

支持 ABI 和 EIP-712 的 Ethereum 类型系统的编译时表示。

此 crate 提供了一个面向开发者的 Ethereum 类型系统接口,通过表示 Solidity 类型。请参阅 type_system.md 以了解详细信息,以及 crate 文档 以获取更多信息

功能

  • 静态表示 Solidity 类型
  • ABI 编码和解码
  • EIP-712 编码和解码
  • EIP-712 域对象 w/ serde 支持

使用方法

有关更多详细信息,请参阅 crate 文档

// Declare a solidity type in standard solidity
sol! {
    struct Foo {
        bar: u256;
        baz: bool;
    }
}

// A corresponding Rust struct is generated!
let foo = Foo {
    bar: 42.into(),
    baz: true,
};

// Works for UDTs
sol! { type MyType is uint8; }
let my_type = MyType::from(42u8);

// For errors
sol! {
    error MyError(
        string message,
    );
}

// And for functions!
sol! { function myFunc() external returns (uint256); }

许可

此 crate 是 parity 团队编写的 ethabi crate 的重大重构。该代码库根据 MIT 许可证使用。我们在包含 ethabi 代码的文件中保留了原始许可证通知。

依赖关系

~5–8MB
~157K SLoC