SDK支持构建和发送交易,以及查询链和节点本身的各个方面。
SDK版本2支持旧的V1节点GRPC API(可通过endpoints
模块访问)以及新的V2 API(可通过v2
模块访问)。新用户应该使用API,因为它更灵活,具有更多功能,并且性能更好。 V1 API将在下一个SDK版本中弃用。
Cargo.toml
清单中陈述了最小支持的Rust版本。 MSRV颠簸将至少伴随SDK的次要版本。
SDK在Crates.io上发布。
cargo add concordium-rust-sdk
SDK的核心结构是维持与节点的连接并支持查询节点并向其发送消息的客户端。这个客户是便宜的。
Client
是使用新方法构建的。
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 ( "http://localhost: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
渲染文档可从https://docs.rs/concordium-rust-sdk/latest/获得
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
,后者现在返回同行列表及其详细信息。
SDK依赖于Protobuf模式生成的文件。这些文件是将存储库授予的,因此SDK的用户不必安装Protobuf编译器即可使用SDK。
有时,如果模式更改,则需要更新生成的文件。这可以通过使用generate-protos
功能(即
cargo build --features=generate-protos
仅在节点的API(由模式下,更改,我们需要支持SDK中的新API)时,才能完成更新这些文件。