كيفية نشر العقود الذكية على شبكة Hedera Hashgraph [تعليمي]

هذه المقالة مخصصة لإحدى الوظائف الرئيسية في Hedera Hashgrapgh Distributed Ledger - نشر عقود Solidity الذكية.

Hashgraph هي تقنية لدفتر الأستاذ الموزعة باستخدام DAG (Directed Acyclic Graph). وقد تم استخدامه بالفعل في التعلم الآلي (نموذج الثقة القائم على شبكة بايز) والمجمعين والإحصاء. في هذه الحالة ، لا يتم تخزين البيانات في كتل ، ولكن يتم توزيعها بواسطة الأحداث.

تستخدم أنظمة DAG أيضًا لحل مشكلة الجنرالات البيزنطيين. كقاعدة عامة ، كل مشروع يقوم بتطوير سجل موزع له طريقته الخاصة لمزامنة العقد ، أي خوارزمية الإجماع الخاصة بهم.

خوارزمية توافق Hashgraph

يقوم كل مدقق بجمع معاملاته ، واختيار المشارك الآخر بشكل عشوائي ، ويقوم بنقل المعلومات حول المعاملات إلى المشارك ، وكذلك المعلومات التي أبلغتها العقد الأخرى عند اتصاله به.

الوظيفة بسيطة للغاية: المدقق "يستمع" ، ويستقبل جميع الرسائل التي تأتي إليه ، وبعد ذلك ، يختار المشارك الآخر بشكل عشوائي ويرسل له جميع المعاملات جنبا إلى جنب مع بلده.
تضمن Hashgraph أنه مع العدد النهائي للخطوات (جولات عمل البروتوكول) ، تصل جميع العقد إلى نفس الحالة. البروتوكول يعمل بسرعة كافية وقابلة للتطوير بسهولة.

في الشبكة ، لا يوجد زعيم. طالما بقيت 2/3 عقدًا صادقة ، يؤمن البروتوكول مستوى عالٍ من الأمان.

لكي تتم مزامنة العقد وتحقيق الاتفاق بينها ، توجد أيضًا عملية تبادل بين المشاركين الآخرين في الشبكة بشكل عشوائي.

حول مشروع Hedera

تتطور شبكة Hedgash Hashgraph العامة بتوجيه من Leemon Baird ، باستخدام بروتوكول يحمل نفس الاسم. سوف يكون للمنصة خدمات ملفات ومحافظ وعقود ذكية في وظائفها.

بحلول مارس 2019 ، تم الانتهاء من الجماهير. تبلغ قيمة العملة المشفرة الأصلية للشبكة ، Hbar ، حوالي $ 0.12.

هنا يمكنك معرفة المزيد حول حالة الشبكة. الشبكة الرئيسية و testnet متاحة حاليًا ، لكن العقود الذكية التي تهمنا متوفرة فقط في testnet في الوقت الحالي.

ابدء

التسجيل (KYC)

يجب عليك التسجيل في البوابة وتمرير دليل الهوية. انه مهم! التسجيل في البوابة ممكن كجزء من مرحلة الاختبار. في وقت نشر هذا المقال ، كان المجتمع ينتظر جولة ثانية من الاختبار ، والتسجيل غير متاح لبعض الوقت الآن.

فيما يلي إرشادات التسجيل وعملية KYC من خلال الرابط.

اختيار الشبكة

دعنا نختار الشبكة للعمل التالي. تتوفر وظيفة العقود الذكية في الوقت الحالي فقط في testnet ، لذلك دعونا نختار testnet.

الوصول إلى الشبكة

سيطلب المدخل منك توفير رمز وصول إلى الشبكة ، والذي يمكن استلامه عبر البريد الإلكتروني ، من خلال ترك الطلب على موقع الويب.

أدخل الرمز ، وستقوم Hedera بإرجاع المعلومات التالية:

ستكون هناك حاجة لهذه البيانات في المستقبل.

المفاتيح العامة والخاصة

قم بالتحميل من مولد GitHub الرئيسي واطلق باستخدام الأمر

java -jar hedera-sdk-keygen-1.2-run.jar

سوف نحصل على:

نشر العقود الذكية

كجزء من المشروع ، تم تطوير عدد من الأدوات (SDK) لإنشاء تطبيقات غير مركزية على منصة Hashgraph. Hedera حاليا يدعم رسميا SDK فقط على جافا. يتم دعم Rust و С و GO و Python بواسطة Launchbadge.

دعنا نفكر في نشر العقد الذكي على Java SDK

لنبدأ نشر العقد الذكي ، ولننظر في هذا على مثال العقد الذي تم إنشاؤه "HelloWorld". لنعدّل الأمثلة \ node.properties.sample. يجب أن نوضح البيانات التي شوهدت على صفحة البوابة الإلكترونية.

في الأمثلة \ src \ main \ resources \ scExamples ، دعنا نفكر في الملفات التالية:

  • HelloWorld.sol - رمز العقد الذكي المستند إلى Solidity ، لمراجعتك
  • HelloWorld.info.txt - يحتوي على ABI لعقدنا الذكي ، كما هو موضح بالمثال
  • HelloWorld.bin - هناك حاجة دائمًا إلى الملف الذي يحتوي على رمز بايت للعقد المترجم ، حيث سنشير إلى هذا الملف من وقت لآخر.

رمز الاتصال الذكي:

براغما صلابة ^ 0.5.3 ؛
عقد HelloWorld {
 دالة getInt () العوائد الخالصة العامة (uint) {
  عودة 42.
 }
 
 دالة getString () إرجاع خالص عام (ذاكرة سلسلة) {
  عودة "جون يقول مرحبا" ؛
 }
}

دعنا نأخذ بعين الاعتبار رمز الملف القابل للتنفيذ: \ أمثلة \ src \ main \ java \ com \ hedera \ أمثلة \ simpleDemoContractHelloWorld.java. سنقوم بتحميل العقد على الشبكة وطرق الاتصال منه.

يقرأ هذا السطر الكود الثنائي للعقد:

مزيد من أدناه طريقتين والتي سوف ندعو من العقد. لاحظ أن الثوابت تحدد ABI وحيد السطر للعقد الذكي:

دعونا نطلق الملف الجاري تنفيذه الحالي. سوف نتلقى ما يلي:

تهانينا! لقد أطلقت للتو عقدك الذكي الأول على منصة Hedera Hashgraph!

الدعوات:

  1. Hedera Hashgraph Whitepaper
  2. Hedera Hashgraph Dev - русскоговорящее сообщество
  3. Hedera International Discord Room