SDK memiliki dukungan untuk membangun dan mengirim transaksi, dan untuk meminta berbagai aspek rantai dan simpul itu sendiri.
SDK Versi 2 mendukung Node GRPC API lama (dapat diakses melalui modul endpoints
) serta API V2 baru (dapat diakses melalui modul v2
). Pengguna baru harus menggunakan API karena lebih fleksibel, memiliki lebih banyak fitur, dan berkinerja lebih baik. V1 API akan sudah usang dalam versi SDK berikutnya.
Versi karat yang didukung minimal dinyatakan dalam manifes Cargo.toml
. Bump msrv akan disertai dengan setidaknya benjolan versi kecil dari SDK.
SDK diterbitkan di Crates.io.
cargo add concordium-rust-sdk
Struktur inti SDK adalah klien yang mempertahankan koneksi ke node dan mendukung permintaan node dan mengirim pesan ke sana. Klien ini dikloning dengan murah.
Client
dibangun menggunakan metode baru.
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
berisi metode untuk membangun dan mengirim transaksi. Ada transactions::construct
yang dapat digunakan jika transaksi hanya perlu dibangun, tetapi tidak segera ditandatangani.
Setiap transaksi yang didukung memiliki metode untuk membangunnya yang membutuhkan data minimal yang diperlukan untuk transaksi. Setelah transaksi dibangun, ia dapat dikirim ke node dan rantai menggunakan titik akhir send_block_item
.
Ada sejumlah contoh yang menunjukkan penggunaan dasar dari titik akhir yang berbeda. Mereka dapat ditemukan di direktori contoh.
Sebagai contoh dasar, lihat v2_send_transfer untuk contoh lengkap membangun transaksi transfer dan mengirimkannya.
Semua contoh dapat dikompilasi
cargo build --release --example $NAME
Misalnya
cargo build --release --example v2_send_transfer
Dokumentasi yang diberikan tersedia di https://docs.rs/concordium-rust-sdk/latest/
Titik akhir di V1 dan V2 API untuk sebagian besar saling mencerminkan. Namun beberapa titik akhir dibagi dalam API V2 untuk memungkinkan hanya untuk menanyakan data yang biasanya dibutuhkan lebih cepat. Perbedaan utamanya adalah
V1
endpoint get_block_summary
telah dibagi menjadi
get_block_events
(untuk acara transaksi, yaitu, hasil transaksi yang dikirim oleh pengguna)get_block_special_events
(untuk acara khusus seperti ccd minting, dan imbalan delegasi/baker)get_chain_parameters
untuk parameter rantaiget_update_next_sequence_numbers
untuk nomor urutan instruksi pembaruanget_finalization_summary
untuk detail catatan finalisasi dalam blok. Informasi node telah dikonsolidasikan menjadi dua titik akhir, get_node_info
, dan get_peers_info
, yang terakhir yang sekarang mengembalikan daftar rekan dan detailnya.
SDK bergantung pada file yang dihasilkan dari skema protobuf. File -file ini berkomitmen pada repositori sehingga pengguna SDK tidak harus menginstal protobuf untuk menggunakan SDK.
Kadang -kadang ada kebutuhan untuk memperbarui file yang dihasilkan, jika skema berubah. Ini dapat dilakukan dengan menyusun SDK menggunakan fitur generate-protos
, yaitu,
cargo build --features=generate-protos
Memperbarui file -file ini hanya boleh dilakukan ketika API simpul, ditentukan oleh skema, berubah dan kita perlu mendukung API baru di SDK.