تطمح لتصبح خبيرا من كوردا؟ سيغطي برنامج كوردا التعليمي التالي كل ما تحتاج لمعرفته حول تطوير تطبيق كوردا.
لقد قطعت Blockchain شوطًا طويلاً. لقد حلت فكرة تقنية دفتر الأستاذ الموزع العديد من نقاط الضعف التي تمر بها المنظمات الحالية. الهدف الرئيسي هو أن تصبح أكثر كفاءة وأمانًا وقابلية للتطوير دون استثمار ملايين الدولارات.
Corda عبارة عن منصة blockchain مفتوحة المصدر توفر نظامًا بيئيًا عالميًا لـ blockchain. يوفر خصوصية صارمة مع استخدام العقود الذكية. كما أنه يساعد الأعمال على إجراء المعاملات مباشرة وتوفير نهج فعال من حيث التكلفة لتبسيط العمليات التجارية.
الاختلاف الرئيسي هو كيفية تعامل Corda مع المعاملات. إنها DLT التي تريد تحسين جدوى blockchain وسرعتها وقابليتها للتوسع من خلال عدم وجود دفتر أستاذ كامل مع كل نظير. إذا كان من الممكن إتمام معاملة بين نظيرين دون إبلاغ الشبكة بالكامل ، فستستخدم Corda هذا النهج. وهي مصممة أيضًا لتشمل الأطراف الأخرى التي تسهل متابعة المعاملة ومعرفة صلاحيتها. إنها تقنية دفتر الأستاذ الموزع للأعمال.
لنبدأ مع برنامج Corda blockchain التعليمي الخاص بنا الآن!
قريبا: دليل المبتدئين لدورة تطوير كوردا
كيف يتم تنظيم دروس تطوير كوردا?
سنغطي كوردا بالتفصيل. سنحاول في معظم الأقسام تغطية مفاهيم كوردا المهمة.
تشمل المفاهيم الأساسية التي سنغطيها ما يلي.
- حالة
- اتفافية
- أقسام التدفق
سيقوم البرنامج التعليمي الخاص بنا بإنشاء تطبيق IOU. IOU تعني “I Owe yoU”. هذا عرض بسيط لحقيقة أن شخصًا ما يمتلك المال من شخص آخر. سنغطي المفهوم بمزيد من التفصيل لاحقًا.
لتبسيط الأمور ، سنستخدم لغة برمجة Kotlin. بصفتك متعلمًا ، سيكون من الرائع أن تعرف لغة Kotlin ، ولكنها ليست مهارة ضرورية يجب عليك اتباع البرنامج التعليمي.
أدوات
قبل أن نبدأ مع برنامج Corda التعليمي للمبتدئين ، سنحتاج إلى الأدوات التالية. هناك أيضًا أدوات blockchain يحب المطور حقًا استخدامها بشكل متكرر. ومع ذلك ، لن نغطيهم اليوم.
- كوتلن
- جرادل
- شخص سخيف
- IntelliJ
- سطر الأوامر
اعتبارًا من بيئة التطوير المتكاملة ، سنستخدم IntelliJ. سوف يبسط تطورنا.
دروس كوردا
ما هو كوردا?
أفضل تعريف لـ Corda blockchain هو المصدر المفتوح الذي يحل مشاكل الأعمال من خلال توفير شبكة blockchain قابلة للتشغيل البيني. تشمل ميزاته الرئيسية الخصوصية الصارمة والكفاءة والمعاملات المباشرة باستخدام تقنية العقود الذكية.
يمكن كتابة العقود الذكية المستخدمة في Corda باستخدام لغات JVM أو Java. تُعرف dApps داخل منصة Corda باسم CorDapps. كما أنها توفر شبكة عقد نظير إلى نظير مع القدرة على استخدام البنية التحتية لكاتب العدل. تُستخدم البنية التحتية للتحقق من المعاملات وتسلسلها دون الحاجة إلى بث تفاصيل المعاملة إلى كل نظير على الشبكة.
عنصر مهم آخر يستخدمه blockchain يشمل إطار Flow ، الذي يدير التفاوض والتواصل بين المشاركين.
فهم كوردا ليدجر
لا يشبه Corda Ledger نظام دفتر الأستاذ الذي تستخدمه تقنيات blockchain التقليدية. لهذا السبب نحتاج إلى فهم واضح لكيفية عملها وفهمها من وجهة نظرها الوظيفية ومنظور البيانات.
يعمل دفتر الأستاذ كوردا مثل الرسم البياني. جميع العقد في الرسم البياني متصلة ببعضها البعض ، إما بشكل مباشر أو من خلال بعض العقد الأخرى. يمكن لجميع العقد التواصل مع بعضها البعض إذا أرادوا ذلك. يعني استخدام الرسم البياني أنه ليست هناك حاجة لبث المعاملة على مستوى العالم.
اكتشاف العقد
إذن ، كيف تكتشف العقد بعضها البعض؟ يستخدمون خريطة الشبكة للعثور على بعضهم البعض. يمكنك التفكير في الأمر ، على غرار دليل الهاتف. تحتوي خريطة الشبكة على البيانات الوصفية لتحديد موقع كل من هذه الخدمات ، وبالتالي توفر طريقة لطيفة لاكتشاف الخريطة.
كيف يعمل?
التحدي الأكبر في شبكة blockchain البث غير العالمية هو الإجماع. إذن ، كيف تعرف العقد عن بعضها البعض وتتحقق من تلك المعلومات?
الجواب هنا هو الحقائق المشتركة. تتداخل كل عقدة مع أي عقدة أخرى بطريقة أو بأخرى. يتم تخزين الحقائق المشتركة في دفتر الأستاذ الخاص بـ Corda ، والذي يمكن استخدامه بعد ذلك للتحقق من المعلومات. يحتوي دفتر الأستاذ كوردا على مجموعة من هذه المجموعات. نظرًا لعدم وجود عقدة مركزية ، تعمل هذه العقد بالوكالة عندما تكون هناك حاجة للتحقق من الأشياء. لتخزين هذه المعلومات ، تحتوي كل عقدة على قبو يحتوي على حقيقة لا يمكن تغييرها. هذه هي الطريقة التي يطبق بها المطورون blockchain.
تنص على
الدول في Corda blockchain غير قابلة للتغيير. يتم استخدامها لتخزين الحقائق المشتركة حول معاملة أو اتفاقية أو عقد في نقطة زمنية محددة.
تبدو تقنية؟ دعونا نحاول تقسيمها بكلمات أبسط.
حقائق مشتركة
لنأخذ شخصين يستخدمان دفتر الأستاذ الخاص بـ Corda. دعونا نسميهم ألفا وبرافو.
كلاهما لديهما حقيقة مشتركة. الحقيقة المشتركة هي IOU (أنا أملك أنت). يتم استخدام IOU عندما يكون للمقرض أموال مستحقة لمقدم القرض. لجعل الحقيقة مشتركة ، كلاهما لديه نفس المعلومات المشتركة الممثلة في IOU.
تمثل أي شيء
يمكن استخدام الدول لتمثيل أي شيء. هذا يعني أنه يمكنه تخزين أي شكل من المعلومات لحالات استخدام corda المختلفة. بصفتك مطورًا ، يمكنك استخدام الولايات لتخزين معلومات “اعرف عميلك” والأدوات المالية والقروض المشتركة وما إلى ذلك.
أيضًا ، يمكن استخدام الحالات لتخزين سمات متعددة. ولكن هناك حدود للدول. القيد هو أنه بمجرد إعطاء حالة نوعًا ما ، لا يمكن تغيير نوعها. إذا قمت بإنشاء دولة IOU ، فسيتعين عليها تحديد حالة IOU لبقية حياتها.
ثابت ومتطور
يتم إنشاء الدول لتكون غير قابلة للتغيير. ومع ذلك ، فإن ثباتها يتعلق بالوقت. يتم تقديم الدولة في وقت معين.
هذا يعني أنه يمكن إنشاء حالة جديدة بالإضافة إلى الحالة الأصلية. يتم ذلك عندما يكون هناك تغيير جديد يتم إجراؤه على الحالة التي يجب تخزينها. ثم وصفت الدولة القديمة بأنها تاريخية.
على سبيل المثال ، إذا سددت Alpha ديونها لشركة Bravo ، فسيتم إنشاء دولة جديدة ، مشيرة إلى حقيقة أن Alpha قد قامت بتصفية الديون. أيضًا ، إذا اكتملت الحالة ، فستنتهي صلاحية IOU. بعبارات بسيطة ، تكون دورة حياة الدولة ، في هذه الحالة ، على النحو التالي.
- تم إنشاء أول حالة لإظهار أن شركة Alpha مدين بها لبرافو. ينص هذا أيضًا على مشاركة المزيد من المعلومات حول IoU ، بما في ذلك التاريخ والوقت وسعر الفائدة والمبلغ المُقرض والمعلومات المفيدة الأخرى المطلوبة لـ IoU.
- الآن ، عندما يحل Alpha الديون ، يتم إنشاء حالة جديدة لتحديث المعلومات الجديدة. لم يتم المساس بالدولة القديمة بأي شكل من الأشكال لأنها غير قابلة للتغيير.
- يتم الآن تحديث الحالة الجديدة في الحقائق المشتركة بين المستخدمين.
- الآن ، الدولة القديمة توصف بأنها تاريخية. يمكن أن تكون هناك حالات تاريخية متعددة في معاملة واحدة. هذا يمكن أن يؤدي إلى إنشاء سلسلة من الحالات.
- يتم إنشاء رأس تسلسل ، والذي يشير إلى أحدث حالة. أيضًا ، يُطلق على أحدث الدول أيضًا اسم غير مستهلك.
اقرأ أكثر: Hyperledger vs Corda vs Ethereum Comparison Guide
تجهيز بيئة التطوير
الآن ، وفقًا لدليل تطوير dApp ، يجب أن تكون البيئة جاهزة لبرنامج تطوير Corda التعليمي. أنت بحاجة إلى الأدوات التالية للبدء.
- Oracle JDK 8 JVM – v8u171 أو أعلى.
- شخص سخيف
- IntelliJ IDEA
استنساخ مستودع Git
أفضل طريقة لبدء رحلتنا هي تشغيل مثال على CorDapp في بيئة التطوير الخاصة بنا. والخبر السار هو أن Corda تقدم مثال CorDapp يمكنك تنزيله وتشغيله محليًا.
يمكنك استنساخ المستودع محليًا باستخدام الأمر git clone على النحو التالي.
استنساخ بوابة http://github.com/roger3cev/corda-training-template.git
في البرنامج التعليمي ، سنستخدم IntelliJ لاستيراد مستودع git. افتح ملف IntelliJ. بمجرد الانتهاء ، سترى خيار السحب من التحكم في الإصدار. انقر فوقه ثم استنساخ المستودع على جهاز الكمبيوتر الخاص بك.
يمكنك اختيار حفظ المشروع ؛ ستجد مستودع المشروع على النحو التالي.
في أسفل اليمين ، ستجد إشعارًا يقول ، قم باستيراد مشروع Gradle كما هو موضح أدناه. من المهم أن يعمل برنامج كوردا التعليمي الخاص بنا.
انقر فوق “استيراد مشروع Gradle”.
تحتاج أيضًا إلى إعداد Project SDK. انتقل إلى إعدادات المشروع ثم حدد أحدث إصدار من Java. في حالتي ، تم ضبطه على Java 11.0.5.
إذا وجدت أي خطأ في التشغيل ، فيجب عليك ترقية Gradle والسماح له باستيراد المستودعات الضرورية لجعله يعمل. سوف يستغرق الأمر بعض الوقت للقيام بذلك. لذا ، اجلس في المقعد الخلفي وانتظر حتى يكتمل.
بالنسبة لي ، استغرق الأمر حوالي 20 دقيقة لإكمال جميع تحديثات تبعيات Gradle.
دعنا ننتقل سريعًا إلى هيكل مشروع كوردا التعليمي الخاص بنا. مستودعنا الرئيسي هو ملف src. نظرًا لأننا نستخدم Kotlin ، سنستخدم مجلد مصدر Kotlin ؛ ستجد مجلد src تحته. من فضلك لا تخلط بينه وبين مجلد مصدر جافا.
ستجد هنا جميع الملفات الضرورية في مجلد التدريب. يوجد أيضًا مجلد “اختبار” يحتوي على وحدات الاختبار الخاصة بالتطبيق.
ملف مهم آخر نحتاج إلى معرفته هو IOUState.kt. يقع داخل التدريب > حالة.
بدء عمل اختبارات وحدات الدولة
تبدو فئة IOUState أساسية جدًا. لم يكتمل بعد. سنستخدم منهجية تطوير تعتمد على الاختبار لتطوير الفصل وجعله جاهزًا للعمل.
يعد التطوير القائم على الاختبار نهجًا رائعًا عندما يتعلق الأمر بممارسات التطوير الحديثة. يساعد في التخلص من الأخطاء أو المشكلات الأخرى منذ البداية.
هذا هو السبب في أن النموذج الذي قمت بتنزيله يحتوي بالفعل على اختبارات مقابلة لكل فئة ، بما في ذلك العقد والتدفق والحالة.
للبدء ، نحتاج إلى الذهاب إلى الاختبارات > كوتلن> صافي > كوردا > تمرين > حالة > اختبارات IOUState
هناك ستجد الاختبارات مكتوبة بالفعل. كما أنه يأتي مع الكثير من الوثائق. استغرق فريق R3 Corda وقته في إنشاء النموذج.
تحتاج إلى إلغاء التعليق على القسم ، كما هو موضح أدناه ، لإجراء اختبار واحد للتشغيل.
حدد الرمز واضغط على Ctrl + / لإلغاء التعليق. إذا كنت تستخدم MAC ، فاستخدم CMD + / لإلغاء التعليق.
حان الوقت الآن لإجراء اختبار الوحدة.
نظرًا لأن فئة IOUState فارغة تقريبًا ، ستفشل الاختبارات ، وستحصل على خطأ الاختبار التالي.
كما ترى ، فإنه يقول أن اختبار Kotlin-source: فشل بسبب NoSuchFieldException. هذا يعني أن الاختبار يتوقع متغير الكمية حيث لم يجد شيئًا.
لإصلاحها ، نحتاج إلى العودة إلى ملف IOUState.kt وتعديله. إذا كنت تعلم كيفية إنشاء تطبيق blockchain ، ستكون مهمة سهلة بالنسبة لك.
قبل أن نبدأ ، نحتاج إلى فهم أفضل لـ Kotlin. لفهم الكود الذي سنقوم بتحريره ، من الأفضل الحصول على مقدمة. Kotlin هي لغة برمجة كثيفة. أيضًا ، سيتم تحويل Kotlin إلى آلة افتراضية JVM ، لذلك يجب أن نكون على ما يرام مع استخدامها في برنامجنا التعليمي.
- فئة البيانات IOUState → هذه الكلمة الأساسية تعني أننا نحدد فئة بيانات تسمى “IOUState”.
- بيانات val → إعلان متغير. اسم الحقل البيانات
- String = “data” → هذا يحدد القيمة الافتراضية لمتغير البيانات إذا لم يتم تحديد أي شيء.
- ContractState → الواجهة
إذا أجريت جميع التغييرات على ملف IOUState.kt وفقًا للاختبار ، فسيظهر فصل IOUState على النحو التالي.
فئة البيانات IOUState (فال المبلغ: المبلغ,
فال المُقرض: الطرف,
فال المقترض: طرف,
فال المدفوع: المبلغ = المبلغ (0، amount.token),
تجاوز فال linearId: UniqueIdentifier = UniqueIdentifier ()): LinearState {
/ **
* تحتوي هذه الخاصية على قائمة بالعقد التي يمكنها “استخدام” هذه الحالة في معاملة صالحة. في هذه الحالة ، فإن
* المقرض أو المقترض.
* /
تجاوز فال قائمة المشاركين احصل على() = listOf (مُقرض ، مقترض)
/ **
* الطرق المساعدة عند بناء المعاملات لتسوية وتحويل سندات الدين.
* – [يدفع] يضيف مبلغًا إلى العقار المدفوع. لا يوجد تحقق من صحة.
* – [withNewLender] يخلق نسخة من الحالة الحالية مع المقرض المحدد حديثا. للاستخدام عند النقل.
* /
مرح pay (amountToPay: Amount) = نسخة (مدفوعة = مدفوعة (amountToPay))
مرح withNewLender (newLender: Party) = copy (lender = newLender)
}
الآن ، يجب أن تكون قادرًا على إضافة طرق مساعدة وفقًا للتعليقات أعلاه.
هل تريد أن تصبح خبيرًا في كوردا؟ هذا دليل إلى شهادة R3 Corda التي ستوجهك خلال عملية الاعتماد الخاصة بك.
اتصالات كوردا
علمنا أن الدول يمكن أن تتطور إلى دول جديدة. يمكن للمطورين التحكم في تطور حالة دفتر الأستاذ باستخدام العقود. في هذا القسم ، سنتعرف على العقود بالتفصيل.
نظرًا لأن R3 Corda لا تعتمد على بث الرسائل إلى الشبكة بالكامل ، فهي تستخدم تعريفًا شائعًا للتحقق من المعاملات لكل نوع من أنواع الحالات. بهذه الطريقة ، تتحقق شبكة Corda من المعاملة وتكتسب الإجماع. إنه مشابه تمامًا لكيفية تسجيل معاملات blockchain الأخرى.
يتم تنفيذ عقود Corda عبر الوظائف. يمكنك التفكير في الدول كوحدات تخزين بيانات والعقود هي طريقة للتحقق من البيانات وتغيرات حالتها. وظائف التحقق هذه خاصة بنوع الحالة.
لضمان إمكانية التحقق من الحالات وصلاحيتها للخدمة ، يجب الإشارة إلى كل دولة بالعقد.
يحتوي كل عقد على عنصرين ، بما في ذلك رمز العقد والنثر القانوني.
لفهم ذلك ، دعونا نلقي نظرة على الصورة التالية.
كما ترى ، يحتوي العقد على عنصرين ، وفي الحالة ، يوجد مرجع عقد IOU لهذا الرمز.
النثر القانوني: يستخدم النثر القانوني كمرجع للعقد القانوني للاتفاقية. يتم استخدامه لضمان إمكانية استخدام الإطار القانوني والنظام القضائي الحاليين في حالة حدوث نزاع.
تشمل الميزات الرئيسية الأخرى لعقود Corda ما يلي
- يمكن أن تشير العقود المتعددة إلى عقد. أيضًا ، يمكن أن يحتوي العقد على أنواع متعددة من الدول
- تستخدم Corda وظيفة التحقق للتحقق من الصفقة المقترحة
- توقيع طريقة التحقق على النحو التالي
- التحقق من المتعة (tx: Transaction): Unit
- تقوم طريقة التحقق بالتحقق من المعاملة عن طريق تنفيذ جميع القيود. إذا فشل القيد ، فسيتم طرح استثناء ؛ خلاف ذلك ، سيتم اعتبار المعاملة سارية المفعول.
- وظيفة التحقق حتمية.
معاملات كوردا
محطتنا التالية هي معاملات كوردا. إنها المعاملات التي تجعل تغييرات الحالة ممكنة.
إذن ، ما هي الصفقة؟ يمكن تعريفها بشكل أفضل على أنها حاوية تحتوي على مراجع حالة الإدخال (0 أو أكثر). كما أنها تنتج حالات (0 أو أكثر).
تمكّن المعاملات الشبكة من الأداء على النحو الأمثل من خلال تمكين أقران متعددين من التفاعل مع بعضهم البعض في الوقت الفعلي. إنه يجعل من الممكن لطرفين إجراء مبادلة ذرية دون إعاقة أنشطة النظراء الأخرى. أيضا ، المعاملات ذرية في طبيعتها. هذا يعني أن الصفقة لا يمكن تخفيضها أو تقسيمها.
هناك أيضًا ثلاثة أنواع من المعاملات: التأمينات والتحديثات والخروج. كل واحد لديه جدول أعماله الخاص. دعونا نسردها أدناه.
- التأمين → يخلق ولايات جديدة
- التحديثات → تغيير خصائص الحالة
- مخارج ← إزالة الحالات من دفتر الأستاذ
تدفقات كوردا
تدفقات Corda هي الخطوات المطلوبة للأقران لتنفيذ (تنفيذ) معاملة ناجحة.
يحدد التدفق منطق الأعمال الأساسية CorDapp. وهي مسؤولة عن التأكد من تنفيذ المعاملات بالترتيب الصحيح والمعلمات الصحيحة. نظرًا لأن المعاملات معقدة بطبيعتها ، فإن التدفقات مطلوبة لضمان أن كل شيء يعمل على النحو المنشود.
يضمن التحكم في التدفق وقت الاتصال وما يجب الاتصال به ومع من يجب الاتصال.
هذا هو النقيض تمامًا لتقنيات دفتر الأستاذ الموزع الأخرى التي تركز على بث تفاصيل المعاملة إلى الشبكة بأكملها. تزدهر Corda بالمعاملات من نقطة إلى نقطة حيث تحتاج المعاملات إلى معلمتين مهمتين ، المرسل والمستقبل.
الأشياء الأساسية التي يجب أن تعرفها عن التدفقات
- يمكن أن تكتمل التدفقات في غضون ثوانٍ أو قد تستغرق عدة أيام حتى تكتمل
- هم مستقلون تمامًا
- ينام The Flows قبل أن يجدوا انتظارًا للرد
- تتبع التدفقات Flow Framework ، والتي توفر آلية للمطورين لضمان التطوير المناسب لآلات الحالة.
- يمكن أن تكون التدفقات مقترنة ومن جانب واحد
- يمكن للمطورين أيضًا ترميز التدفقات الفرعية لجعل الكود أكثر بساطة
هل تريد أن تأخذ الأمر قليلاً وأن تصبح خبيرًا؟ إليك دليل حول كيفية إنشاء blockchain في Python.
إجماع
من بين كل الأشياء المثيرة التي ناقشناها حتى الآن ، الشيء الذي يميز كوردا هو كيف يحقق الإجماع. تمتلك Corda نهجًا فريدًا ، وبالتالي يجعلها قابلة للتطبيق للشركات الموجودة هناك.
بادئ ذي بدء ، تستخدم Corda خوارزميتين إجماعيتين. وهي تشمل ما يلي
- إجماع على التفرد → يضمن هذا الأسلوب الإجماعي عدم حدوث أي تضارب في دفتر الأستاذ
- إجماع التحقق → يعالج إجماع التحقق المعاملات ويضمن عدم حدوث أي تعارضات وفقًا لرمز العقد. يسهل تطور حالة مشتركة داخل الشبكة.
الأشياء الأساسية التي يجب عليك فيما يتعلق بتوافق آراء كوردا:
- يضمن الإجماع الفريد أن تكون تحديثات دفتر الأستاذ فريدة دائمًا. كما أنه يتأكد من صلاحية دفتر الأستاذ عند إجراء التحديث.
- يضمن توافق التحقق أن التحديث صالح.
عقدة كوردا
القسم الأخير من كوردا الذي سنناقشه هنا هو Corda Node. Corda Node هي طريقة عرض عالية المستوى لـ Corda.
إذن ، ما هي عقدة كوردا بالضبط?
عقدة Corda هي كيان يتم تشغيله في Java Virtual Machine. أنها تنطوي على ما يلي
- يقدم خدمات التخزين والأقبية
- يدعم SQL DB خدمات التخزين والأقبية
- تُستخدم المجلدات المخصصة لتخزين المرفقات
- يقدم وظائف مخصصة وملحقات مدمجة تعرف باسم CorDapps
- يقدم إطار عمل عميل RPC
هذا ما تبدو عليه عقدة كوردا.
كما ترى ، فهو يحتوي على جميع الجوانب الضرورية لتشغيل شبكة Corda. يتفاعلون مع التدفق ويوفرون وظائف CorDapp المخصصة.
استنتاج
هذا يقودنا إلى نهاية برنامج كوردا التعليمي الخاص بنا. هنا ، نظرنا إلى Corda وحاولنا رؤية IoU CorDapp. ناقشنا أقسامه المختلفة باستخدام نموذج التدريب المتاح في مستودع Corda GitHub.
ينصب تركيزنا على البدء مع Corda دون محاولة شرح كل ما تقدمه Corda. لذلك ، يمكنك دائمًا استخدام وثائق Corda. لدينا أيضًا دورة تدريبية قادمة حول البرنامج التعليمي لتطوير Corda. يجب عليك بالتأكيد التحقق من ذلك إذا كنت تريد دليل تطوير كامل.