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 在 魔法豆
369 每月下载次数
用于 concordium-smart-contract…
1MB
17K SLoC
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_info
和get_peers_info
,后者现在返回 peers 列表及其详细信息。
对于开发者
SDK 依赖于从 protobuf 架构 生成的文件。这些文件已提交到存储库,以便 SDK 用户无需安装 protobuf 编译器即可使用 SDK。
偶尔需要根据架构更改更新生成的文件。这可以通过使用 generate-protos
功能编译 SDK 来完成,例如
cargo build --features=generate-protos
仅当节点的 API(由架构确定)更改且我们需要在 SDK 中支持新的 API 时,才应更新这些文件。
依赖关系
~25–37MB
~527K SLoC