#substreams #firehose #antelope #thegraph #pinax #api-bindings

substreams-antelope-core

Antelope 链的 Substreams 开发套件,包含 Firehose 块模型和辅助函数

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 2023年1月10日

#5 in #antelope

Download history 4/week @ 2024-06-07 2/week @ 2024-06-14 2/week @ 2024-06-28 34/week @ 2024-07-05 109/week @ 2024-07-26 23/week @ 2024-08-02 7/week @ 2024-08-09 12/week @ 2024-08-16

每月151 次下载
用于 2 crates

MIT/Apache

490KB
5.5K SLoC

Substreams for Antelope

github crates.io docs.rs GitHub Workflow Status

该库包含 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 中升级版本
  • 提交更改
  • 标记发布
  • 按照以下顺序发布包: coreabigensubstreams-antelope

依赖项

~5–7.5MB
~137K SLoC