#交易 #版本 # #区块链 #转账 #端点 #康德

concordium-rust-sdk

用于使用康德区块链的SDK

11个稳定版本

4.3.0 2024年3月25日
4.2.0 2024年2月15日
4.0.0 2024年1月22日
3.2.0 2023年11月23日
2.3.0 2023年3月20日

#650魔法豆

Download history 130/week @ 2024-04-16 520/week @ 2024-04-23 70/week @ 2024-04-30 6/week @ 2024-05-07 13/week @ 2024-05-14 45/week @ 2024-05-21 48/week @ 2024-05-28 109/week @ 2024-06-04 42/week @ 2024-06-11 29/week @ 2024-06-18 22/week @ 2024-06-25 26/week @ 2024-07-02 39/week @ 2024-07-09 65/week @ 2024-07-16 151/week @ 2024-07-23 110/week @ 2024-07-30

369 每月下载次数
用于 concordium-smart-contract…

自定义许可

1MB
17K SLoC

CI

Rust的SDK,用于与康德区块链交互

SDK支持构建和发送交易,以及查询链的各个方面和节点本身。

SDK版本2支持旧版V1节点GRPC API(通过endpoints模块访问)以及新的V2 API(通过v2模块访问)。新用户应使用API,因为它更灵活,功能更丰富,性能更好。V1 API将在下一个SDK版本中弃用。

最低支持的Rust版本

最低支持的Rust版本在Cargo.toml清单中声明。MSRV提升将伴随着SDK至少一个次要版本的提升。

将其添加到您的项目中

SDK发布在crates.io

[dependencies]
concordium-rust-sdk = "2"

版本

  • 节点版本兼容性:5.4+

基本用法

SDK的核心结构是Client,它维护与节点的连接并支持查询节点并向其发送消息。此客户端可轻松克隆。

Client使用new方法构造。

use concordium_rust_sdk::*;

#[tokio::main(flavor = "multi_thread")]
async fn main() -> anyhow::Result<()> {
    // Establish a connection to the node running locally and listening on port 20000
    let mut client = v2::Client::new(v2::Endpoint::from_str("https://127.0.0.1:20000")?).await?;

    // Query consensus information and print it as JSON
    let consensus_info = client.get_consensus_info().await?;
    println!("{}", serde_json::to_string_pretty(&consensus_info).unwrap());
    Ok(())
}

签名交易

transactions::send 包含了构建和发送交易的方法。还有一个配套的模块 transactions::construct,如果只需要构建交易而不需要立即签名,则可以使用它。

每个支持的交易都有一个构造方法,该方法需要交易所需的最小数据。一旦交易被构建,就可以使用 send_block_item 端点将其发送到节点和链。

示例

有多个示例展示了不同端点的基本用法。它们可以在 示例 目录中找到。

作为一个基本的示例,请参阅 v2_send_transfer,以获取构建和发送转账交易的完整示例。

所有示例都可以使用以下命令编译

cargo build --release --example $NAME

例如

cargo build --release --example v2_send_transfer

可选功能

SDK 具有一个可选的 postgres 功能,它启用与用于按受影响账户索引交易的节点日志的 postgres 数据库接口的功能。

文档

渲染的文档可在 https://docs.rs/concordium-rust-sdk/latest/ 找到

从 V1 迁移到 V2

V1 和 V2 API 中的端点大部分相互映射。然而,某些端点在 V2 API 中被拆分,以便可以更快地查询常用数据。主要区别在于

  • V1 端点 get_block_summary 已拆分为

    • get_block_events(用于交易事件,即用户发送的交易的结果)
    • get_block_special_events(用于特殊事件,如 CCD 发行、以及委托/烘焙奖励)
    • get_chain_parameters 用于链参数
    • get_update_next_sequence_numbers 用于更新指令的序列号
    • get_finalization_summary 用于块中最终记录的详细信息
  • 节点信息已合并到两个端点,即 get_node_infoget_peers_info,后者现在返回 peers 列表及其详细信息。

对于开发者

SDK 依赖于从 protobuf 架构 生成的文件。这些文件已提交到存储库,以便 SDK 用户无需安装 protobuf 编译器即可使用 SDK。

偶尔需要根据架构更改更新生成的文件。这可以通过使用 generate-protos 功能编译 SDK 来完成,例如

cargo build --features=generate-protos

仅当节点的 API(由架构确定)更改且我们需要在 SDK 中支持新的 API 时,才应更新这些文件。

依赖关系

~25–37MB
~527K SLoC