10 个版本
0.4.2 | 2024年7月30日 |
---|---|
0.4.1 | 2024年3月24日 |
0.3.5 | 2024年3月27日 |
0.3.2 | 2023年8月4日 |
0.0.4 |
|
#5 in #antelope
每月151 次下载
用于 2 crates
490KB
5.5K SLoC
Substreams
for Antelope
该库包含 Antelope 块的生成 protobuffer,以及提取和解析块数据的辅助方法。
📖 文档
https://docs.rs/substreams-antelope
其他资源
安装
$ cargo add substreams-antelope
用法
请参考 Docs.rs 了解从 Antelope 块中提取操作和事务迭代器的辅助方法。
Cargo.toml
[dependencies]
substreams = "0.5"
substreams-antelope = "0.4"
src/lib.rs
use substreams::prelude::*;
use substreams::errors::Error;
use substreams_antelope::{Block, ActionTraces};
#[substreams::handlers::map]
fn map_action_traces(block: Block) -> Result<ActionTraces, Error> {
let mut action_traces = vec![];
for trx in block.transaction_traces() {
for trace in trx.action_traces {
action_traces.push(trace);
}
}
Ok(ActionTraces { action_traces })
}
或者,使用 actions()
辅助方法从 myaccount
账户中过滤所有 Statelog
类型的操作。您可以通过指定要包含操作的合约账户名称列表作为参数,如果想要从任何合约账户获取此签名的操作,则该列表可以为空。
src/lib.rs
#[substreams::handlers::map]
fn map_actions(param_account: String, block: substreams_antelope::Block) -> Result<Actions, substreams::errors::Error> {
Ok(Actions {
transfers: block.actions::<abi::contract::actions::Transfer>(&["eosio.token"])
.map(|(action, trace)| Transfer {
// set action fields
})
.collect(),
})
}
使用 Abigen
要为您的智能合约生成 ABI 绑定,您可以将包含智能合约 ABI 的 abi/contract.abi.json
文件以及以下 build.rs
文件添加到项目的根目录。这将确保包含您的智能合约 Rust 绑定的 src/abi/contract.rs
模块始终在项目中生成。
build.rs
fn main() {
substreams_antelope::Abigen::new("Contract", "abi/gems.blend.abi.json")
.expect("failed to load abi")
.generate()
.expect("failed to generate contract")
.write_to_file("src/abi/gems.blend.abi.rs")
.expect("failed to write contract");
}
发布
- 在 workspace Cargo.toml 中升级版本
- 提交更改
- 标记发布
- 按照以下顺序发布包:
core
,abigen
,substreams-antelope
。
依赖项
~5–7.5MB
~137K SLoC