1. Blockchain
الآن ، عندما أكتب هذا المقال ، انخفض سعر صرف Bitcoin بأكثر من 5 أضعاف نسبة إلى الحد الأقصى للقيمة وعندما قلت أنني كنت أفعل شيئًا ما يتعلق بـ blockchain ، فإن أول شيء أسمعه هو الشكوك المفتوحة - "من يحتاج إلى كل هذا blockchain الخاص بك الآن" .
نعم ، لقد مرت الضجة حول blockchain. لكن التقنيات الأساسية ظلت قائمة ، فهي تتطور وستستمر في التطور وستستخدم في مجالات معينة.
يوجد على الإنترنت وعلى وجه الخصوص على Habré الكثير من المواد التي تصف كلا المجالين العامين للتطبيق التكنولوجي (على سبيل المثال ،
habr.com/company/bitfury/blog/353350 وأمثلة أكثر تحديداً على
habr.com/company/raiffeisenbank/blog/332756 ).
كما تعلمون ، blockchain هو سجل موزع ، على سبيل المثال قاعدة بيانات يتم توزيعها بين عدة عقد بينما تخزن كل عقدة نسخة كاملة من السجل. خصوصية blockchain هو أن السجلات (المعاملات) يتم تجميعها في كتل ، ويتم دمجها في سلسلة من كتل. ومع ذلك ، تتوفر عمليات إضافة البيانات فقط. كل هذا يؤدي إلى حقيقة أنه يكاد يكون من المستحيل إجراء تغييرات على المعاملات المحفوظة بالفعل في blockchain.
هناك الكثير من المواد حول كيفية عمل blockchain (إذا لم تسمع أي شيء عن blockchain من قبل ، فيمكنك البدء
بهذا الفيديو البسيط ).
في وقت زيادة الحد الأقصى للاهتمام بتكنولوجيا blockchain ، كان هناك العديد من المكالمات لاستخدام blockchain في كل مكان تمامًا. ومع ذلك ، هناك علامات معينة على المشاريع / المهام ، والتي قد يتطلب تنفيذها وجود blockchain.
أولاً ، مشاركة عدد كبير من اللاعبين (المستخدمين) الذين يسجلون البيانات ، بينما من الضروري منع التناقضات وزيادة الثقة.
ثانياً ، غياب طرف ثالث يثق به الجميع.
ثالثا ، الحاجة إلى آلية للتحقق من البيانات العامة.
إذا تم استيفاء جميع الشروط المذكورة أعلاه ، تحتاج إلى التفكير في استخدام blockchain.
يمكن أن تنشأ مثل هذه المهام في أي صناعة. يجمع مشروع
www.101blockchains.com معلومات حول كل من المشاريع المحتملة
والمنفذة ، وكذلك حول ميزات استخدام blockchain في مناطق مختلفة.
على سبيل المثال ، في قطاع الرعاية الصحية ، يمكن استخدام blockchain:
- من أجل الإدارة الآمنة لبيانات المرضى ؛
- مكافحة المخدرات المزيفة من خلال المعاملات الثابتة في جميع أنحاء سلسلة التوريد ؛
- لتحسين مراقبة وفعالية التجارب السريرية من خلال القضاء على الاحتيال ومعالجة البيانات.
عند استخدام blockchain في قطاع الشركات ، يستخدمون عادة blockchain خاص مع مستويات أذونات مختلفة (Private Permissioned Blockchain). هذه الشبكات لديها مجموعة خاصة من العقد لتأكيد المعاملات.
ومع ذلك ، عند تطوير أول محول InterSystems IRIS للعمل مع
blockchain ، اخترنا
Ethereum ، الذي ينتمي إلى فئة Permissionless Blockchain - منصة مفتوحة بدون هيئة تحكم. يرتبط هذا الاختيار بشعبية Ethereum وبنية تحتية متطورة إلى حد ما: وجود العديد من الأدوات والمكتبات. يمكنك أيضًا ملاحظة أنه باستخدام برنامج Ethereum ، يمكنك
إنشاء blockchain
خاص .
2. المحول
الآن حان الوقت للانتقال إلى المحول نفسه.
محول في InterSystems IRIS (وكذلك في Ensemble) هو فئة أو حزمة من فئات IRS InterSystems التي توفر القدرة على العمل مع نظام خارجي. InterSystems - تنقسم محولات IRIS إلى واردة (لاستقبال البيانات من نظام خارجي عندما يكون النظام الخارجي هو بادئ التفاعل) والصادرة (للعمل مع نظام خارجي عندما يكون بادئ التفاعل هو InterSystems IRIS).
يعد محول IRIS Ethereum محولًا صادرًا ، ويختلف قليلاً عن معظم محولات IRIS InterSystems الأخرى ، لأن جزءًا من هذا المحول عبارة عن حزمة من فئات IRS InterSystems ، ولكن المحول يتضمن أيضًا وحدة NodeJS صغيرة. يظهر العمارة في الشكل 1.
الشكل 1تستخدم وحدة محول NodeJS مكتبات NodeJS الموجودة للعمل مع Ethereum.
يوفر المحول الميزات التالية:
- ضع عقدًا ذكيًا في Ethereum (نعتزم إعداد مقال آخر سنتحدث فيه أكثر عن العقود الذكية وأدوات التطوير ومناقشة مثال).
- استدعاء أساليب العقد الذكية: كلا الطريقتين التي لا تغير حالة blockchain ، والطرق التي تغير حالة blockchain
- حفظ معاملة (تحويل الأموال من محفظة إلى محفظة)
- استدعاء أساليب المساعد للحصول على حالة blockchain
- تسجيل جميع الطلبات (تنفيذ الوحدة النمطية NodeJS ، مفيدة للتصحيح)
المحول متاح مع شفرة المصدر OpenExchange .
3. مثال بسيط
تم تثبيت مثال "Hello world" مع المحول.
لبدء العمل مع Ethereum (بما في ذلك تشغيل هذا المثال) ، يلزمك:
- اختر الشبكة التي ستعمل معها. لأغراض التطوير ، عادة ما تستخدم شبكات الاختبار مثل Ropsten.
- إنشاء محفظة على هذه الشبكة وتجديدها
- تثبيت عميل Ethereum محلي (على سبيل المثال ، Geth) أو الحصول على مفتاح للعمل مع موفر سحابة (على سبيل المثال ، Infura)
عند إعداد معاملة تجارية ، يجب عليك تحديد (الشكل 2):
- الخادم والمنفذ الذي تعمل عليه وحدة NodeJS (المنفذ الافتراضي هو 3000)
- إعدادات الموفر (في هذه الحالة ، الوصول إلى Infura)
- تفاصيل الوصول (في تفاصيل الوصول تحتاج إلى الإشارة إلى محفظتك كاسم مستخدم ، والمفتاح الخاص من المحفظة ككلمة المرور. في InterSystems IRIS ، يتم تخزين تفاصيل الوصول في قاعدة بيانات منفصلة ، ويجب تمكين التشفير)
الشكل 2للعمل مع العقود الذكية ، ستحتاج إلى إنشاء (لكل عقد ذكي ستتصل به) مجلد في نظام الملفات ووضع ملفين هناك:
* abi.txt
* bytecode.txt
يجب أن يكون لهذه الملفات عقد ذكي لـ ABI و Bytecode. العقد الذكي ABI - وصف رسمي لواجهة العقد الذكية بتنسيق json. يتم إنشاء ABI و Bytecode في وقت تجميع العقد الذكي.
Bytecode مطلوب فقط لنشر العقد.
باستخدام خدمة الاختبار ، يمكنك التحقق من تشغيل معاملة تجارية.
في الشكل 3 ، باستخدام خدمة الاختبار ، يتم نشر العقد الذكي. نتيجة استدعاء هذه العملية التجارية هي رسالة تحتوي على تجزئة المعاملة.
الشكل 3باستخدام متصفح ropsten.etherscan.io (https://etherscan.io/) ، يمكنك العثور على هذه الصفقة والحصول على عنوان العقد الذكي الموحد.
لتنفيذ أساليب العقد الذكية باستخدام المحول ، يجب عليك تحديد الإعدادات في تكوين المنتج: ContractFolder و ContractAddress.
رمز استدعاء طريقة العقد الذكي بسيط للغاية:
set ..ContractABI = [].%FromJSON(..ContractFolder_"abi.txt") set contract = ..Adapter.GetContract( ##class(Ethereum.Address).%New(..ContractAddress), ..ContractABI) set result = contract.hello() set pResponse = ##class(Ens.StringContainer).%New(result.args)
باستخدام طريقة محول GetContract ، والتي يتم تمرير عنوان العقد الذكي و ABI ، يتم إنشاء كائن عقد ذكي ، والذي يستخدم بعد ذلك لاستدعاء الأساليب. في هذه الحالة ، يجب تحديد طريقة hello () في العقد الذكي ، والتي تُرجع السلسلة.
في هذا المثال ، لا يؤدي أسلوب hello () إلى تغيير حالة blockchain ، بحيث يمكن استدعاءه بشكل متزامن. ومع ذلك ، قد تستغرق الطرق التي تغير حالة blockchain وقتًا طويلاً (في انتظار تأكيد المعاملة).
للاتصال بهذه الطرق ، يمكنك استخدام آلية الاستجابة المؤجلة في InterSystems IRIS. يحتاج المحول إلى تمرير الرمز المميز المؤجل ، وعند تأكيد معاملة NodeJS ، ستقوم الوحدة بإرسال نتيجة تنفيذه إلى InterSystems IRIS. للقيام بذلك ، يجب عليك تكوين تطبيق الويب وإضافة معاملة تجارية إلى المنتج الذي سيعالج الاستجابة المستلمة.
رمز لاستدعاء الطريقة التي تغير حالة blockchain:
في هذه الحالة ، قبل استدعاء setName () لطريقة العقد الذكية ، تحتاج إلى تحديد عدد من المعلمات ، بما في ذلك رمز الاستجابة المؤجلة.
في مقالتنا التالية ، سنتحدث أكثر عن العقود الذكية ونقدم مثالاً على حل تطبيق ما باستخدام محول InterSystems IRIS Ethereum.