13 个版本
0.4.1 | 2023 年 12 月 28 日 |
---|---|
0.4.0 | 2023 年 3 月 14 日 |
0.3.0 | 2023 年 3 月 6 日 |
0.2.7 | 2022 年 3 月 16 日 |
0.2.2 | 2020 年 11 月 20 日 |
#260 in 魔法豆
每月下载量 72
44KB
735 行
Ergo 节点接口库
一个 Rust 库,使与 Ergo 节点交互和使用变得简单。
此 crate 使用伟大的 ergo-lib(以前称为 sigma-rust)来解析 Ergo 节点和其他 Ergo 相关数据类型中的 ErgoBox
。
目前支持的功能包括
- 编写离链 dApp 的核心 Ergo 节点端点。
- 在支持端点之上提供辅助函数,以简化 dApp 开发者的体验。
- 用于 UTXO-set 扫描的高级接口。
目前版本中不支持所有 Ergo 节点端点,因为当前目标是使离链 dApp 开发者的体验尽可能稳固。长期目标是全面覆盖所有端点。
模块
以下是目前实现并作为 Ergo 节点接口库一部分的模块。
节点接口
此模块包含核心 NodeInterface
结构体,用于与 Ergo 节点交互。所有端点都作为 NodeInterface
结构体的方法实现。
let node = NodeInterface::new(api_key, ip, port);
println!("Current height: {}", node.current_block_height());
此外,还实现了一些辅助方法,例如
/// A CLI interactive interface for prompting a user to select an address
pub fn select_wallet_address(&self) -> Result<P2PKAddressString>
/// Returns a sorted list of unspent boxes which cover at least the
/// provided value `total` of nanoErgs.
/// Note: This box selection strategy simply uses the largest
/// value holding boxes from the user's wallet first.
pub fn unspent_boxes_with_min_total(&self, total: NanoErg) -> Result<Vec<ErgoBox>>
扫描
此模块包含 Scan
结构体,允许开发者轻松处理 UTXO-set 扫描。每个 Scan
都与一个特定的 NodeInterface
相关联,这受到扫描按节点保存的事实启发。
Scan
结构体为您提供了以下能力
- 向 Ergo 节点注册新扫描。
- 从您的注册扫描中获取盒子/序列化的盒子。
- 将扫描ID保存/读取到本地文件。
使用扫描接口注册扫描以跟踪Oracle池的示例
let oracle_pool_nft_id = "08b59b14e4fdd60e5952314adbaa8b4e00bc0f0b676872a5224d3bf8591074cd".to_string();
let tracking_rule = object! {
"predicate": "containsAsset",
"assetId": oracle_pool_nft_id,
};
let scan = Scan::register(
&"Oracle Pool Box Scan".to_string(),
tracking_rule,
node,
).unwrap();
本地配置
此模块提供了一些辅助函数,用于从本地 node-interface.yaml
文件中保存/读取,该文件包含Ergo节点ip/端口/api密钥。这使得dApp开发人员能够更快地将他们的dApp运行起来,而无需手动实现此类逻辑。
可用的示例函数
/// Create a new `node-interface.config` with the barebones yaml inside
pub fn create_new_local_config_file() -> Result<()>
/// Opens a local `node-interface.yaml` file and uses the
/// data inside to create a `NodeInterface`
pub fn new_interface_from_local_config() -> Result<NodeInterface> {
文档
可以通过运行以下命令访问文档
cargo doc --open
贡献
请参阅CONTRIBUTING
依赖项
~19–38MB
~642K SLoC