Das SDK unterstützt das Konstruktion und Senden von Transaktionen sowie für die Abfrage verschiedener Aspekte der Kette und des Knotens selbst.
Die SDK -Version 2 unterstützt sowohl die alte V1 -Knoten -GOD -API (über das endpoints
zugänglich) als auch die neue V2 -API (über das v2
-Modul zugänglich). Neue Benutzer sollten die API verwenden, da sie flexibler ist, mehr Funktionen hat und besser funktioniert. Die V1 -API wird in der nächsten SDK -Version veraltet.
Die minimal unterstützte Rust -Version wird in der Fracht angegeben. Cargo.toml
Manifest. Eine MSRV -Beule wird von mindestens einer kleinen Version des SDK begleitet.
Der SDK wird auf crate.io veröffentlicht.
cargo add concordium-rust-sdk
Die Kernstruktur des SDK ist der Client, der eine Verbindung zum Knoten unterhält und das Abfragen des Knotens und das Senden von Nachrichten an ihn unterstützt. Dieser Kunde ist billig klonbar.
Der Client
wird mit der neuen Methode konstruiert.
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 ( ( ) )
}
Die transactions::send
enthält Methoden zum Erstellen und Senden von Transaktionen. Es gibt ein begleitendes transactions::construct
, das verwendet werden kann, wenn Transaktionen nur konstruiert, aber nicht sofort signiert werden müssen.
Jede unterstützte Transaktion verfügt über eine Methode, um sie zu konstruieren, die für die Transaktion minimale Daten benötigt. Sobald eine Transaktion konstruiert ist, kann sie mit dem Endpunkt send_block_item
an den Knoten und die Kette gesendet werden.
Es gibt eine Reihe von Beispielen, die die grundlegende Verwendung der verschiedenen Endpunkte zeigen. Sie können im Beispielverzeichnis gefunden werden.
Als grundlegendes Beispiel finden Sie v2_Send_Transfer für ein vollständiges Beispiel für die Erstellung einer Transfertransaktion und das Senden.
Alle Beispiele können mit kompiliert werden
cargo build --release --example $NAME
Zum Beispiel
cargo build --release --example v2_send_transfer
Die gerenderte Dokumentation finden Sie unter https://docs.rs/concordium-rust-sdk/latest/
Die Endpunkte in V1- und V2 -APIs spiegeln sich größtenteils gegenseitig wider. Einige Endpunkte wurden jedoch in der V2 -API aufgeteilt, um es möglich zu machen, nur Daten zu abfragen, die häufig schneller benötigt werden. Die Hauptunterschiede sind
Der V1
Endpoint get_block_summary
wurde aufgeteilt in
get_block_events
(für Transaktionsereignisse, dh die Ergebnisse von Transaktionen, die von Benutzern gesendet werden)get_block_special_events
(für besondere Ereignisse wie CCD -Meilen und Delegation/Baker -Belohnungen)get_chain_parameters
für Kettenparameterget_update_next_sequence_numbers
für Sequenznummern von Aktualisierungsanweisungenget_finalization_summary
Für die Details der Abschlussdatensätze in einem Block. Die Knoteninformationen wurden in zwei Endpunkte zusammengefasst, get_node_info
und get_peers_info
, von denen letztere nun sowohl die Liste der Kollegen als auch deren Details zurückgibt.
Der SDK stützt sich auf Dateien, die aus Protobuf -Schemata generiert wurden. Diese Dateien sind dem Repository verpflichtet, damit Benutzer des SDK den Protobuf -Compiler nicht installieren müssen, um die SDK zu verwenden.
Gelegentlich müssen die generierten Dateien aktualisiert werden, wenn sich die Schemas ändern. Dies kann durch Kompilieren des SDK mit der Funktion generate-protos
erfolgen, dh, dh,
cargo build --features=generate-protos
Die Aktualisierung dieser Dateien sollte nur erfolgen, wenn die API des Knotens, die durch die Schemas ermittelt wird, ändert und wir die neue API in der SDK unterstützen müssen.