أين موقع المستخدمون في نموذجنا العقلي؟

الآن بعد أن تحدثنا عن العقود الذكية ولدينا فهم جيد لكيفية نشر الكود  لشبكة blockchain ، فقد حان الوقت للتوجه إلى مستخدمي تطبيقاتنا. على وجه الخصوص ، سنقوم بفحص كيفية تفاعل المستخدمين مع عقودنا الذكية المنشورة على blockchain المفضل لدينا مع النموذج العقلي الذي كنا نبنيه

بعد أن نظرنا إلى هذا ، سنبدأ في بناء فهم لسير عمل تطوير العقد الذكي وكيف يمكن تغييره أو تغييره بناءً على نوع التطبيق الذي نطوره والمستخدم الذي نستهدفه.

المستخدمون في النموذج العقلي

يمثل المستخدمون عنصرًا جديدًا محتملاً ، أي العالم غير القائم على blockchain. في عالم مثالي ، يعرف جميع مستخدميك كيفية استخدام blockchain ، وهم مستخدمون نشطون ل، Crypto-Twitter ، وهم موجودون بالفعل في عالم blockchain. لكن ليت الأمور بتلك البساطة! في الواقع ، لدينا مستخدمون موجودون على مدى متنوع من القدرات والفهم والرغبات.

سنقوم ببناء هذا أكثر كلما تقدمنا ​​، ولكن من أجل البساطة ، سنركز في هذا القسم على كيفية تفاعل الغالبية العظمى من مستخدمي blockchain مع تطبيقك: من خلال JavaScript API. يوجد أدناه رسم تخطيطي يوضح كيفية تفاعل المستخدم العادي مع تطبيق موزع (نحن نستخدم Ethereum باعتباره blockchain العام ، ولكن يمكنك تخيله على أنه أي blockchain عام):

على اليسار ، نرى مستخدمًا يتفاعل مع واجهة أمامية ، عادةً ما يكون موقع ويب على متصفح ويب تقليدي على جهازه ، إما على الهاتف المحمول أو سطح المكتب. يتم تشغيل موقع الويب هذا بشكل أساسي بواسطة تقنية “Web 2.0” (يتصل المتصفح بخادم ، وله تخطيط سريع الاستجابة ، ولديه واجهة JavaScript تفاعلية). ومع ذلك ، يحتوي موقع الويب على عنصرين رئيسيين مدعومين بواسطة blockchain. الأول هو أي بيانات يقرأها موقع الويب من blockchain. قد تكون هذه المعاملات الأخيرة ، رصيد المستخدم الحالي ، رقم  البلوك الحالي على الشبكة ، إلخ.

والثاني هو قدرة المستخدم على إرسال معاملاته الخاصة إلى blockchain من موقع الويب (“الكتابة” إلى الشبكة). أصبح هذا ممكنًا من بواسطة تفاعل  ثلاثة جوانب:

  • مكتبة جافا سكريبت Web 3 (على سبيل المثال web3.js أو ethers.js)
  • محفظة تشفير يمكنها التعامل بأمان مع المفتاح الخاص للمستخدم ، مما يسمح له بتوقيع المعاملات (MetaMask ، في هذه الحالة)
  • كود نشرته أنت ، المطور ، على موقع الويب الخاص بك الذي ينشئ معاملات مسبقة التنسيق ، ويستهدف عقدك الذكي المنشور ، وتحديدًا وظيفة في ABI الخاص به.

لقد قمت أنت ، مطور التطبيق الموزع ، بتشفير معلمات معاملات معينة ليتم ملؤها من قبل المستخدم. تستهدف معلمات المعاملات هذه ABI لعقد ذكي تم نشره. سيتم بعد ذلك توقيع هذه المعاملة بشكل صحيح بواسطة المحفظة المشفرة ثم إرسالها إلى شبكة blockchain. في هذه الحالة ، سترسل MetaMask معاملتنا باستخدام نقطة نهاية Infura. تُظهر الصورة أدناه نسخة مبسطة من سير العمل الذي وصفناه للتو:

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

توضح الصورة أعلاه كيف نجمع بين النموذجين العقليين اللذين كنا نعمل بهما. على الجانب الأيسر ، نرى أن المستخدم لديه معاملته ، والتي تم تنسيقها مسبقًا بواسطة مطور التطبيق ولكن تم ملؤها وترخيصها من قبل المستخدم. إلى اليمين ، نرى شبكة blockchain الأساسية. على نحو فعال ، عندما يرسل المستخدم معاملته ، فإنه يفعل ذلك كعقدة في الشبكة التي تبث أي معاملة أخرى. سيتم نشرها عبر الشبكة (كل عقدة تستقبلها تتحقق من صلاحية توقيعها الرقمي قبل تمريرها) وتصبح في النهاية جزءًا من “مجموعة الذاكرة” الناشئة للمعاملات التي لم يتم تعدينها. بمجرد أن يتم تعدينها ، يمكننا بعد ذلك أن نرى كيف سيؤثر على حالة الشبكة العالمية.

بافتراض أن معاملة المستخدم صالحة (بما في ذلك رسوم الغاز المناسبة ، وما إلى ذلك) ، فسيتم تضمينها في كتلة بواسطة عامل منجم. سيقوم هذا المُعَدِّن بعد ذلك بنشر الكتلة في الشبكة ، مما يتطلب من جميع العقد الأخرى في الشبكة فحص الكتلة ثم دمج تغييرات الحالة التي تنطوي عليها المعاملات المضمنة في تلك الكتلة. أدناه ، نرى معاملة المستخدم تتم معالجتها بواسطة عقدة أخرى استلمتها في كتلة:

نظرًا لأن كل عقدة في الشبكة تعالج الكتلة التي تحتوي على معاملة مستخدمنا ، ستبدأ حالة الشبكة العالمية الجديدة في الظهور والتي تتضمن تغييرات الحالة الناتجة عن معاملة المستخدم (نعرض تغيير حالة الشبكة أدناه بعلامة اختيار). منذ تقديم المعاملة ، تستخدم واجهة موقع المستخدم MetaMask كـ بوابة شبكتها. إنه يبحث تحديدًا عن “تأكيد” المعاملة (كل من التضمين في الكتلة الملغومة وكذلك انتشار تلك الكتلة). بمجرد اكتشاف تأكيد المعاملات ، سيتم تحديث واجهة موقع الويب لتعكس هذا التغيير في الحالة وإعلام المستخدم بأن معاملته “تمت”.

الخلاصة

الآن بعد أن أصبح لدينا فهم لمكان جلوس المستخدم في نموذجنا العقلي ، نواجه مجموعة جديدة من التحديات. بشكل أساسي ، كيف ندمج كل هذه العناصر المختلفة للتطوير حتى يتمتع مستخدمنا بتجربة سلسة؟ في المقالات القليلة التالية ، سوف نوضح لك كيف يمكنك البدء في التعامل مع هذا. في هذه العملية ، سوف تتعرف بشكل وثيق على أدوات المطور التي ستمنحك الثقة في التعامل مع هذه المهمة الشاقة.

مواد اضافية

إضافة تعليق