4 个版本
0.2.0-rc3 | 2022年9月21日 |
---|---|
0.1.0 | 2022年8月15日 |
#163 in #registry
每月下载量 35
24KB
446 行
chain-registry
用于与Cosmos链注册仓库交互的Rust API
警告
链注册未版本化且语法未强制执行。此库编写为忽略未识别或缺失的JSON字段,但无法保证对所有注册项都有效。
功能
- 用于序列化和反序列化chain.json、assets.json和IBC路径JSON文件的模型
- 简单的get/list方法用于检索链、资产和路径数据
- 一种缓存类型(目前仅支持IBC路径数据),提供了额外的过滤选项
待办事项
- 测试查询所有对象
- 按注册提交发布版本吗?
lib.rs
:
为Cosmos链注册提供的API
示例
使用一些执行链交易所需的信息填充配置结构体(无法编译)
use chain_registry::*;
#[derive(Clone, Default)]
struct BotConfig {
account_prefix: String,
chain_id: String,
rpc_endpoint: String,
default_asset: String,
ibc_paths: HashMap<String, IBCPath>
}
impl BotConfig {
pub fn set_default_asset(&mut self, asset: String) {
self.default_asset = asset;
}
pub fn add_ibc_path(&mut self, path: IBCPath) {
let key = format!("{}-{}", path.channel_1.chain_name, path.channel_2.chain_name);
self.ibc_paths.insert(&key, path);
}
}
impl Into<BotConfig> for ChainInfo {
fn into(self) -> BotConfig {
BotConfig {
account_prefix: self.bech32_prefix,
chain_id: self.chain_id,
// realistically you should test for health endpoints before choosing
rpc_endpoint: self.apis.rpc[0].address,
..Default::default()
}
}
}
#[tokio::main]
fn main() {
let chain = get_chain("osmosis").await.unwrap();
let assets = get_assets("osmosis").await.unwrap();
let osmosis_hub_path = get_path("osmosis", "cosmoshub").await.unwrap();
let mut config: BotConfig = chain.into();
config.set_default_asset(assets[0]);
config.add_ibc_path(osmosis_hub_path);
// ...
}
为使用REST API或索引器而预先加载IBC路径缓存(无法编译)
use chain_registry::*;
#[tokio::main]
fn main {
// This can take a long time as it has to send an individual request for each path
// in the registry.
let cache = RegistryCache::try_new().await.unwrap();
// Instead of simply querying for an IBCPath, you can filter by Tag.
let use_osmosis = cache.get_paths_filtered(Tag::Dex("osmosis".to_string()));
}
依赖项
~8–25MB
~364K SLoC