4 个版本 (破坏性更新)
0.4.0 | 2024年8月6日 |
---|---|
0.3.0 | 2024年7月19日 |
0.2.0 | 2024年7月9日 |
0.1.1 | 2024年6月24日 |
0.1.0 |
|
#6 in #anchor
每月130 次下载
43KB
535 代码行
Syndica Dyndexer Runtime
此crate提供对Syndica Dyndexer服务提供的运行时功能进行访问。
示例
一个简单的示例是使用anchor
功能,该功能包含一个Anchor事件的解析器,并可以将任何anchor事件作为输出记录
use std::sync::OnceLock;
use syndica_dyndexer_runtime::{processor, record_output, Event, Output};
use syndica_dyndexer_runtime::anchor::AnchorIdl;
const PROGRAM_ADDR: &str = "...";
const PROGRAM_IDL: &[u8] = include_bytes!("path/to/program-idl.json");
static IDL: OnceLock<AnchorIdl> = OnceLock::new();
#[processor]
fn process(event: Event) {
let idl = IDL.get_or_init(|| AnchorIdl::deserialize(PROGRAM_ADDR, PROGRAM_IDL));
if let Event::Transaction(transaction) = event {
let events = idl.parse_events(&transaction);
let signature = transaction.signature;
for (idx, event) in events.into_iter().enumerate() {
record_output(&Output::Object {
uid: format!("{signature}:{idx}"),
key: None,
value: &event.data,
});
}
}
}
依赖
~1.2–2.5MB
~53K SLoC