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)時,才能完成更新這些文件。