تحدثنا في المقالات السابقة عن التطبيقات اللامركزية بشكل مختصر وسنتحدث اليوم بشكل مفصل أكثر عن بناء التطبيقات اللامركزية (dApps). يمكنك تجاوز هذه المقالة في حال كانت لديك معلومات واضحة عن التطبيقات اللامركزية.
يمكنك الاستماع إلى المقال من هنا
ماذا يعني التطبيق اللامركزي (dApps):
من الاسم نستطيع أن نقول بأنّه تطبيق يعمل على شبكة لامركزية.
تحدثنا سابقاً عن معنى اللامركزية والشبكة اللامركزية، فعلى سبيل المثال:
يوجد مجموعة من الأجهزة المترابطة مع بعضها البعض والتطبيق الخاص بك يكون موجوداً على جميع هذه الأجهزة المترابطة معاً أو على معظمها بحسب حجم الشبكة التي تعمل عليها.
لو أردنا التحديد أكثر بإمكاننا أن نقول:
بأن الجزء الخاص من تطبيقك المتعلق بالعقود الذكية (Smart Contract) والذي يمثل الباك إند Back-end الخاص بتطبيقك هو ما يتواجد بشكل أساسي على البلوك تشين (Blockchain). أما الجزء الخاص بالواجهات الامامية للمستخدمين (Frontend) أي ما يراه المستخدم العادي فيوجد على سيرفر عادي كما سنذكر لاحقاً.
مقارنة بين بنية تطبيق مركزي وتطبيق لامركزي:
لنلقي نظرة معاً على الشكل التالي:
يمثل الشكل السابق الطبقات المختلفة المكونة للتطبيق سواء كان مركزي أو لامركزي وطريقة التواصل بين هذه الطبقات.
التطبيق المركزي (Centralized):
المتعارف عليه بالتطبيق المبني في الويب 2 (Web.2) يتكون من :
- موقع الكتروني واجهته الأمامية (Frontend) مبنية بواسطة لغات مثل (HTML, CSS, and javascript)
- تتخاطب هذه الواجهة مع المخدم (Server) الذي يحتوي على كود الباك إند (Back-end).
- يتخاطب الباك إند (Back-end) بدوره مع قاعدة البيانات (Database) الخاصة بالموقع الالكتروني.
ولو كان لدينا تطبيق موبايل فإن الواجهة الأمامية للتطبيق تتخاطب مع واجهة (API) موجودة على المخدم والتي بدورها تربط التطبيق مع قاعدة بياناته.
هذا هو الشكل المعتاد للتطبيقات في الويب2 (Web.2) بدون اعتبار فكرة البلوك تشين واللامركزية.
والنسخة عن هذا التطبيق في العالم اللامركزي (Decentralized) تقابلها التغيرات التالية:
- الواجهات الأمامية (Frontend) تبقى كما هي سواء لتطبيقات الموبايل او المواقع الالكترونية.
- الواجهات الأمامية تتخاطب مع البلوك تشين (Blockchain) مباشرة عن طريق العقود الذكية (Smart Contracts).
- سيتم التخاطب مع العقد الذكي (Smart Contract) الخاص بالتطبيق والموجود على شبكة البلوك تشين وهذا بدوره يتخاطب مع البيانات الخاصة بالتطبيق والمخزنة أيضاً على البلوك تشين. يمثل كل من العقد الذكي والبيانات جزء الباك إند الخاص بالتطبيق.
ملاحظة:
تستطيع وضع الجزء الخاص بالفرونت إند (Frontend) على شبكة البلوك تشين (Blockchain) أيضاً باستخدام أدوات محددة إلا أن ذلك غير شائع.
هذه هي الفروق الرئيسية بين التطبيقات المركزية (Centralized) والتطبيقات الامركزية (Decentralized).
أهم مميزات التطبيقات اللامركزية هي عدم قابلية التعديل (Immutable):
وهي أنها الكود – البرنامج – نفسه غير قابل للتعديل. ذكرنا سابقاً أن البيانات المخزنة على البلوك تشين لا تتعدل، كذلك فإن الكود الموجود ضمن العقد الذكي يعتبر غير قابل للتغيير أيضاً. صحيح أننا نريد أحياناً أن نطبق تعديلات جديدة على الأكواد المكتوبة إلا أن الكود السابق للتعديل يبقى في موجود في الفترة الزمنية قبل التعديل. كما توجد طرق معينة لمعالجة وجود أكثر من نسخة للكود الواحد. المهم ملاحظته الآن بأنه حتى لو عملنا نشر للتعديل جديد فأن البرنامج الموجود سابقاً سيبقى موجود على البلوك تشين نفسها (Blockchain).
تعرفنا على التطبيقات اللامركزية و مميزاتها و لننتقل الآن إلى اختلاف آخر عن التطبيقات العادية وهو مفهوم المعاملات (Transactions) على البلوك تشين(Blockchain).
المعاملات (Transactions) :
أي عملية نقوم بتنفيذها على التطبيق الخاص بنا أو على الداتا المخزنة عليه أو العقود الذكية الموجودة على البلوك تشين (Blockchain) نسميها المعاملات أو العمليات (Transactions). على سبيل المثال: إذا قمنا بإنشاء حساب يسمى ذلك معاملة (Transaction) على الشبكة، كذلك إضافة البيانات أو سحب بيانات من الشبكة أيضاً تسمى معاملات على الشبكة. فكما ذكرنا سابقاً أي عملية تتم على الشبكة يتم تسميتها بالمعاملات (Transactions) في البلوك تشين (Blockchain).
ما يميز هذه المعاملات أيضاً أنها تكون موقعة بالمفتاح الخاص بك (Key) على البلوك تشين (Blockchain). فكما نعلم أن تواجدك على البلوك تشين هو عبارة عن المفتاح المخصص لك وحسابك يكون عبارة عن مجموعة من المفاتيح التي تمثل وجودك وتعاملاتك على الشبكة وعندما تقوم بأي معاملة على الشبكة فإنك تقوم بتوقيعها باستخدام المفتاح الخاص بك.
على سبيل المثال: لدينا موقع للبحث عن وظائف. عندما تقوم بإضافة وظيفة جديدة على الموقع فإن هذه الإضافة تمثل معاملة (Transaction) على البلوك تشين وتكون موقعه بالمفتاح الخاص بك. ولو كان هناك رسوم على الإضافة فأن هذه الرسوم سوف تؤخذ من الحساب الموقع لهذه المعاملة (Transaction) .
المثال السابق يقودنا للحديث عن تكلفة العمليات (Transaction) على شبكة البلوك تشين(Blockchain).
تكلفة العمليات على شبكة البلوك تشين(Blockchain):
تكلفة العمليات على البلوك تشين (Blockchain) تختلف عن طريقة حساب التكاليف في الويب 2 (Web.2).
ففي الويب 2 أو التطبيقات العادية فإننا ندفع كلفة الخادم كاشتراك شهري أو سنوي. كذلك الأمر بحال استخدام خدمات أخرى (Web services) فإننا ندفع تكلفة الاشتراك بها شهرياً أو سنوياً. بينما يتم حساب التكاليف في البلوك تشين (Blockchain) بالعملية الواحدة (Transaction).
هذه العمليات (Transactions) قد تكون مجانية أو لها تكاليف معينة بحال كانت تتضمن تعديل على البيانات المخزنة على البلوك تشين أو إنشاء حساب جديد أو تحويل نقود من حساب لآخر.
يتم حساب هذه التكاليف باستخدام ما يسمى بتكلفة الغاز (Gas fee) المرافقة لكل معاملة (Transaction). الغاز (Gas) عبارة عن وحدة قياس محددة لحساب التكاليف والفصل بين مفهوم النقود والتكاليف.
يتم حساب رسوم الغاز على البلوك تشين باستخدام الرموز (Tokens) الخاصة بكل شبكة. فلو كنا نستخدم شبكة النِير (NEAR) ستحسب تكاليف المعاملات (Transactions) باستخدام رموز النِير (NEAR token). أما لو كنا نستخدم شبكة الإيثيريوم (Ethereum) سيت حساب التكاليف باستخدام رموز ألا يثير يوم. كذلك الأمر لو استخدمنا شبكة البيتكوين (Bitcoin) لكانت حساب التكاليف باستخدام رموز البيتكوين الخاصة بها.
تأتي أهمية الاعتماد على واحدة معينة ثابتة لحساب تكاليف المعاملات (Transactions) كونها تكون ثابتة لكل عملية أما في حال اعتمادنا على العملة الخاصة بالشبكة فإن هذه التكاليف ستختلف من يوم لآخر حسب سعر صرف العملة. بعد حساب التكلفة بواحدة الغاز يتم حساب كم سيكلف من العملة الحقيقية على اعتبار أن كل شبكة بلوك تشين تختلف بطريقة المقابلة بين الغاز (Gaz) و الرموز (Token). من خلال الرابط التالي يمكنك الاطلاع على تكلفة الغاز على شبكة نٍير (NEAR) كما يمكننا معرفة تكلفة العمليات الأساسية بالغاز وما يقابلها من رموز النِير (NEAR token) الجدول التالي مأخوذ من الرابط المذكور :
كما نلاحظ في الجدول السابق فإن تكلفة إنشاء حساب من حيث واحدة الغاز (Gas) هي 0.24 تيرا غاز وتقابل 4.2 * 10-5 من توكن النِير. فلو أردنا حساب كلفة إنشاء حساب سنستخدم الرقم السابق مضروباً بقيمة رمز النِير الواحد (NEAR token) في ذلك اليوم. فلو اعتبرنا أن قيمة النِير في ذلك اليوم كانت تساوي 11 دولار سيكون كلفة إنشاء الحساب الواحد هي 11 *4.2 * 10-5 =0.000462
إذا أمعنّا النظر في تكلفة العمليات المذكورة في هذا الجدول نرى أنها تتقارب نوعاً ما في التكلفة و اعتماداً على ذلك نستطيع أن نقول أن متوسط تكلفة 1000 عملية (Transactions) على شبكة نِير (NEAR) تقريباً 0.462 من رمز نِير (NEAR token) . وهذه التكاليف تعتبر قليلة جداً إذا ما قُورنت بتكاليف نفس المعاملات (Transactions) على شبكات أخرى كالايثيريوم (Ethereum) وهذا ما يميز شبكة نِير عن غيرها من شبكات البلوك تشين انخفاض تكاليف المعاملات عليها. فقد يكلفك نشر عقد ذكي فارغ على شبكة الإيثيريوم (Ethereum) ما يقارب الـ 800 دولار وهو مبلغ ضخم إذا ما قُورن بتكلفته على شبكة النِير (NEAR).
الخاتمة:
بهذا نكون قد استعرضنا الاختلافات الرئيسية بين بناء التطبيق على شبكة مركزية أو لامركزية وتحدثنا عن طريقة حساب التكاليف للمعاملات (Transactions) في التطبيقات اللامركزية والوحدة الأساسية لحساب هذه الرسوم الغاز كما تطرقنا بشكل مفصل إلى طريقة الحساب في شبكة (NEAR) وبذلك نكون قد أنهينا المقدمة عن البلوك تشين (Blockchain) والتطبيقات اللامركزية المبنية عليها. لاحقاً سنتحدث بشكل مفصل عن طريقة كتابة العقود الذكية (Smart contracts) على شبكة نِير (NEAR) باستخدام لغة الأسمبلي سكريبت (Assembly script) من خلال مثال عملي.
يمكنك الآن التسجيل في أول كورس للحصول على شهادة مطور نير معتمد باللغة العربية من خلال هذا الرابط
هذه المقالة تم إعدادها من قبل فريق نير بالعربي للطلاع على المزيد يمكنك زيارة الموقع من هنا