1 个稳定版本
1.0.0 | 2024年1月15日 |
---|
#400 在 魔法豆
74,732 每月下载量
用于 19 个 crate(3 个直接使用)
72KB
1.5K SLoC
ethabi-decode
这个库是 ABI 编码数据的事件日志编解码器。它是 ethabi 的分支,重点是在可能无法使用 libstd
的环境中提供解码功能。
为了与受限的 no_std
环境兼容,此库的设计在几个方面与上游 ethabi 不同,包括
- 将 ABI 指定为代码而不是从 JSON 加载(不支持 SERDE)。
- 使用
Vec<u8>
代替std::string::String
用于所有者字符串。 - 与人类可读的错误和显示输出有关的一切都被删除。
构建
-
不使用
libstd
构建cargo build --no-default-features
-
使用
libstd
构建cargo build
示例
解码事件日志
use ethabi_decode::{Event, ParamKind, Token};
fn decode_event_log(topics: Vec<H256>, data: Vec<u8>) -> Vec<Token> {
let event = Event {
signature: "SomeEvent(address,int256)",
inputs: vec![
Param { kind: ParamKind::Address, indexed: true },
Param { kind: ParamKind::Int(256), indexed: false },
],
anonymous: false,
};
event.decode(topics, data).unwrap()
}
依赖项
~0.3–1.2MB
~24K SLoC