SDK มีการสนับสนุนการสร้างและส่งธุรกรรมและสำหรับการสอบถามแง่มุมต่าง ๆ ของห่วงโซ่และโหนดเอง
SDK เวอร์ชัน 2 รองรับทั้งโหนด V1 OLD NODE GRPC API (เข้าถึงได้ผ่านโมดูล endpoints
) รวมถึง V2 API ใหม่ (เข้าถึงได้ผ่านโมดูล v2
) ผู้ใช้ใหม่ควรใช้ API เนื่องจากมีความยืดหยุ่นมากขึ้นมีคุณสมบัติมากขึ้นและทำงานได้ดีขึ้น V1 API จะเลิกใช้ในเวอร์ชัน SDK ถัดไป
เวอร์ชันสนิมที่รองรับน้อยที่สุดนั้นระบุไว้ในรายการ Cargo.toml
manifest การชน MSRV จะมาพร้อมกับ SDK รุ่นเล็ก ๆ น้อย ๆ
SDK ถูกเผยแพร่บน Crates.io
cargo add concordium-rust-sdk
โครงสร้างหลักของ SDK คือไคลเอนต์ที่รักษาการเชื่อมต่อกับโหนดและรองรับการสืบค้นโหนดและส่งข้อความไปยัง ลูกค้ารายนี้สามารถ clonable ได้อย่างถูก
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 APIs ส่วนใหญ่สะท้อนซึ่งกันและกัน อย่างไรก็ตามจุดสิ้นสุดบางจุดถูกแบ่งใน V2 API เพื่อให้สามารถสอบถามข้อมูลที่ต้องการได้เร็วขึ้นเท่านั้น ความแตกต่างหลักคือ
V1
endpoint get_block_summary
ถูกแบ่งออกเป็น
get_block_events
(สำหรับเหตุการณ์การทำธุรกรรมเช่นผลลัพธ์ของการทำธุรกรรมที่ส่งโดยผู้ใช้)get_block_special_events
(สำหรับกิจกรรมพิเศษเช่น CCD MINTING และรางวัลการมอบหมาย/เบเกอร์)get_chain_parameters
สำหรับพารามิเตอร์ห่วงโซ่get_update_next_sequence_numbers
สำหรับลำดับลำดับของคำแนะนำการอัปเดตget_finalization_summary
สำหรับรายละเอียดของบันทึกการสรุปในบล็อก ข้อมูลโหนดได้รับการรวมเป็นจุดปลายสองจุดคือ get_node_info
และ get_peers_info
ซึ่งหลังซึ่งตอนนี้ส่งคืนทั้งรายชื่อเพื่อนและรายละเอียดของพวกเขา
SDK อาศัยไฟล์ที่สร้างขึ้นจาก schemas protobuf ไฟล์เหล่านี้มีความมุ่งมั่นไปยังพื้นที่เก็บข้อมูลเพื่อให้ผู้ใช้ SDK ไม่จำเป็นต้องติดตั้งคอมไพเลอร์ Protobuf เพื่อใช้ SDK
บางครั้งมีความจำเป็นต้องอัปเดตไฟล์ที่สร้างขึ้นหาก schemas เปลี่ยนไป สามารถทำได้โดยการรวบรวม SDK โดยใช้คุณสมบัติ generate-protos
เช่น
cargo build --features=generate-protos
การอัปเดตไฟล์เหล่านี้ควรทำเมื่อ API ของโหนดกำหนดโดย schemas การเปลี่ยนแปลงและเราจำเป็นต้องสนับสนุน API ใหม่ใน SDK