يتمتع SDK بدعم لبناء وإرسال المعاملات ، والاستعلام عن جوانب مختلفة من السلسلة والعقدة نفسها.
يدعم الإصدار 2 SDK كلاً من API Old V1 Node GRPC (يمكن الوصول إليه عبر وحدة endpoints
) بالإضافة إلى API V2 الجديد (يمكن الوصول إليه عبر وحدة v2
). يجب على المستخدمين الجدد استخدام واجهة برمجة التطبيقات لأنها أكثر مرونة ، ولديها المزيد من الميزات ، وأداء أفضل. سيتم إهمال API V1 في إصدار SDK التالي.
تم ذكر إصدار الصدأ المدعوم الحد الأدنى في Cargo.toml
بيان. سوف يرافق عثرة MSRV على الأقل نسخة صغيرة من SDK.
يتم نشر SDK على cates.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 للجزء الأكبر بعضها البعض. ومع ذلك ، تم تقسيم بعض نقاط النهاية في واجهة برمجة تطبيقات V2 لجعل من الممكن فقط الاستعلام عن بيانات مطلوبة بشكل شائع. الاختلافات الرئيسية هي
تم تقسيم نقطة نهاية 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.
في بعض الأحيان ، هناك حاجة إلى تحديث الملفات التي تم إنشاؤها ، إذا تغيرت المخططات. يمكن القيام بذلك عن طريق تجميع SDK باستخدام ميزة generate-protos
، أي ،
cargo build --features=generate-protos
يجب تحديث هذه الملفات فقط عندما تكون واجهة برمجة تطبيقات العقدة ، التي تحددها المخططات ، التغييرات ونحتاج إلى دعم واجهة برمجة التطبيقات الجديدة في SDK.