SDKは、トランザクションの構築と送信、およびチェーンとノード自体のさまざまな側面を照会することをサポートしています。
SDKバージョン2は、古いV1ノードGRPC API( endpoints
モジュールからアクセス可能)と新しいV2 API( v2
モジュールを介してアクセス可能)の両方をサポートしています。 APIはより柔軟で、より多くの機能を持ち、パフォーマンスを向上させるため、APIを使用する必要があります。 V1 APIは、次のSDKバージョンで廃止されます。
最小限のサポートされている錆バージョンは、 Cargo.toml
マニフェストに記載されています。 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
for secence番号の更新手順get_finalization_summary
ブロック内のファイナライゼーションレコードの詳細。ノード情報は、 get_node_info
とget_peers_info
2つのエンドポイントに統合されており、後者はピアのリストとその詳細の両方を返します。
SDKは、Protobufスキーマから生成されたファイルに依存しています。これらのファイルはリポジトリにコミットしているため、SDKのユーザーがSDKを使用するためにProtoBufコンパイラをインストールする必要がありません。
スキーマが変更された場合、生成されたファイルを更新する必要がある場合があります。これは、 generate-protos
機能、すなわち、SDKをコンパイルすることで実行できます。
cargo build --features=generate-protos
これらのファイルの更新は、スキーマによって決定されたノードのAPIが変更され、SDKの新しいAPIをサポートする必要がある場合にのみ実行する必要があります。