#cosmos #cosmwasm #tendermint #cosmrs #client

cosm-utils

为 tendermint_rpc 和 cosmrs 提供简单的实用特性和函数

3个版本

0.1.2 2023年5月20日
0.1.1 2023年5月11日
0.1.0 2023年5月9日

#57#tendermint

每月 47 次下载
用于 wasm-deploy

Apache-2.0

115KB
3K SLoC

cosm-utils

为 tendermint-rpc 和 cosmrs 提供简单的实用特性扩展。

目标

此软件包处于非常早期的发展阶段。不建议在生产环境中使用。我目前正在将此用于其他项目的开发目的。

此软件包的目标是为与 tendermint_rpc 交互提供简单的实用方法。

灵感

从 cosm-tome 分支,但侧重于更容易维护和更模块化的方法。

软件包状态

特性

features 开发状态
tendermint 0.34
tendermint 0.37
自动 tendermint 版本协商

客户端

后端API 开发状态
Tendermint RPC HTTP/S
Tendermint RPC Websocket

模块

Cosmos模块 开发状态
认证
授权 🚫
银行
Tendermint 🔨
危机 🚫
分配 🚫
证据 🚫
费率授予 🚫
治理 🚫
铸币 🚫
参数 🚫
减产 🚫
质押 🚫
交易 🔨
升级 🚫
归属 🚫
CosmWasm 🔨
IBC 🚫

用法

只需导入 prelude 并直接在支持的客户端上使用提供的方法。

    // bring traits into scope
    use std::str::FromStr;

    use cosm_utils::{
        prelude::*,
        chain::{
            coin::{Coin, Denom},
            request::TxOptions,
        },
        config::cfg::ChainConfig,
        modules::{
            auth::model::Address,
            bank::{
                api::{BankCommit, BankQuery},
                model::SendRequest,
            },
        },
        signing_key::key::{Key, SigningKey},
    };
    use tendermint_rpc::{Client, HttpClient, WebSocketClient};

    // Get you're relevant info
    // Here are some examples of what that could look like
    let mnemonic = "clump subway install trick split fiction mixed hundred much lady loyal crime fuel wrap book loud mammal plunge round penalty cereal desert essence chuckle";
    let address = "cosmos1ya34jc44vvqzdhmwnfhkax7v4l3sj3stkwy9h5";
    let key = SigningKey {
        name: "test".to_string(),
        key: Key::Mnemonic(mnemonic.to_string()),
    };
    let chain_cfg = ChainConfig {
        denom: "uatom".to_string(),
        prefix: "cosmos".to_string(),
        chain_id: "cosmoshub-4".to_string(),
        derivation_path: "m/44'/118'/0'/0/0".to_string(),
        gas_price: 0.025f64,
        gas_adjustment: 1.3f64,
    };
    let req = SendRequest {
        from: Address::from_str(address).unwrap(),
        to: Address::from_str(address).unwrap(),
        amounts: vec![Coin {
            denom: Denom::from_str(chain_cfg.denom.as_str()).unwrap(),
            amount: 1u128,
        }],
    };
    let tx_options = TxOptions::default();

    // Create your client as usual
    let rpc_endpoint = "http://localhost:26657";
    let client = HttpClient::new(rpc_endpoint).unwrap();

    // Then use the provided methods
    let res = client
        .bank_send_commit(&chain_cfg, req, &key, &tx_options)
        .await
        .unwrap();

依赖关系

~28–41MB
~781K SLoC