يتطلب الانتقال من EVM إلى SVM (Solana) فهم العديد من الاختلافات الرئيسية بين الأجهزة الافتراضية. ستستعرض هذه المقالة العديد من هذه الاختلافات، بما في ذلك الحسابات والرسوم والمعاملات والعقود الذكية (البرامج) والمزيد. وسوف يستكشف أيضًا إعداد المطور بما في ذلك الأدوات وحزم SDK.

وفي النهاية، سيكون لدى المطورين المعرفة اللازمة لبدء رحلة Solana الخاصة بهم.

فهم الاختلافات الأساسية

للبدء، دعونا نلقي نظرة على الفرق الأكثر أهمية بين EVM وSVM - وهو تصميم نموذج الحساب.

نموذج الحساب

على عكس إيثريوم، تم تصميم Solana للاستفادة من النوى المتعددة ودعم المعاملات الموازية. ولتحقيق ذلك، يستخدم سولانا نموذج الحساب.

الحساب على Solana هو سجل في دفتر الأستاذ Solana الذي يحتوي إما على البيانات (حساب البيانات) أو هو برنامج قابل للتنفيذ (عقد ذكي أو برنامج على Solana).

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

دعونا نلقي نظرة على مثال التعليمات البرمجية. في رمز Solidity أدناه، ترتبط الحالة بالعقد الذكي بالسطر int Private count = 0.

بالنسبة لـ Rust (Solana)، توجد بنية ضمن العقد الذكي تفيد بتهيئة_العداد. يقوم هذا العداد الأولي بإنشاء حساب بعدد 0. يتم تمرير الحساب إلى هذا العداد لزيادة العدد. وهذا يمنع الحالة من الاحتفاظ بها ضمن العقد الذكي نفسه.

مع Solana، يتم تخزين البيانات في حسابات منفصلة خارج البرنامج. لتنفيذ المنطق في البرنامج، قم بتمرير الحساب الذي سيتم تنفيذه عليه.

في حالة برنامج العداد هذا، قم بتمرير حساب عداد إلى البرنامج عند استدعاء وظيفة الزيادة، ثم يقوم البرنامج بزيادة القيمة في حساب العداد.

فوائد تصميم نموذج الحساب

إحدى الفوائد الأساسية لنموذج الحساب هذا هي إمكانية إعادة استخدام البرنامج.

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

ولكن مع Solana، ليس من الضروري إنشاء ونشر عقد ذكي جديد من أجل إنشاء رمز مميز جديد. بدلاً من ذلك، قم بإنشاء حساب جديد، يُعرف باسم حساب النعناع، ​​باستخدام برنامج Solana Token، وتمرير تفاصيل مثل عدد الرموز المميزة، والنقاط العشرية، ومن يمكنه سك العملة، والمزيد.

ويمكن القيام بذلك ببساطة عن طريق إرسال معاملة إلى برنامج الرمز المميز. باستخدام Solana Program Library CLI، على سبيل المثال، فهو مجرد أمر واحد:

أسواق الرسوم المحلية

ومن المزايا الأخرى لنموذج الحساب أن أسواق الرسوم محلية لكل حساب.

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

مصاريف

دعونا نتعمق أكثر في الرسوم. في Solana، يتم تقسيم الرسوم إلى ثلاث فئات: الرسوم الأساسية، ورسوم الأولوية، والإيجار. دعونا ننظر إلى كل منهما.

  • يتم احتساب الرسوم الأساسية على أساس عدد التوقيعات في المعاملة. كل توقيع يكلف 5000 لامبورت (0.000000001 سول = 1 لامبورت). إذا كانت المعاملة تحتوي على 5 توقيعات، فإن الرسم الأساسي هو 25000 لامبورت.

  • رسوم الأولوية هي رسوم اختيارية يمكن إضافتها إلى المعاملة لمنحها الأولوية. تعتمد هذه الرسوم على مقدار الوحدات الحسابية المستخدمة في المعاملة. وكما هو الحال مع غاز الإيثيريوم، فإن هذه الرسوم عبارة عن قياس بسيط لموارد الحوسبة المطلوبة للمعاملة.

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

المعاملات

في Solana، يبدأ تنفيذ البرنامج بإرسال المعاملة إلى المجموعة. تتكون كل معاملة على Solana من أربعة أجزاء:

  1. تعليمات واحدة أو أكثر. التعليمات هي أصغر منطق تنفيذ في سولانا. يمكن اعتبارها بمثابة استدعاءات وظيفية لعقد إيثريوم الذكي. وهي تستدعي البرامج التي تقوم باستدعاء وقت تشغيل Solana لتحديث الحالة (على سبيل المثال، استدعاء برنامج الرمز المميز لنقل الرموز المميزة من حساب إلى آخر).

  2. مجموعة من الحسابات للقراءة أو الكتابة منها

  3. توقيع واحد أو أكثر

  4. Blockhash الأخيرة أو nonce. بدلاً من استخدام الرقم التزايدي كما هو الحال في إيثريوم، يتم سحب كتلة هاش حديثة من المجموعة على سولانا. باستخدام تقنية البلوك هاش هذه، تكون المعاملة صالحة فقط لـ 150 كتلة، مما يمنع تنفيذ توقيعات المعاملات طويلة الأمد في وقت لاحق.

أحد الاختلافات المهمة الأخرى بين Ethereum و Solana هو أنه مع Solana، يمكن أن تحتوي المعاملات على تعليمات متعددة (استدعاءات الوظائف على Ethereum). وهذا يعني أنه ليس من الضروري إنشاء عقود ذكية مخصصة لتسلسل الوظائف في معاملة واحدة. يمكن أن تكون كل تعليمات عبارة عن استدعاء دالة منفصل، ويتم إجراؤها بالترتيب في المعاملة. المعاملات هي أيضًا ذرية: إذا فشلت إحدى التعليمات، ستفشل المعاملة بأكملها.

قيود المعاملات

كما هو الحال مع قيود غاز الإيثريوم، هناك قيود على وحدات الحوسبة في معاملات Solana.

تشمل القيود الأخرى ما يلي:

  • قد يكون كل حساب مُشار إليه بحد أقصى 12,000,000 وحدة حسابية مستخدمة لكل كتلة.

  • لا يمكن استدعاء التعليمات إلا على عمق 4 قبل إرجاع المعاملة.

ميمبول

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

بيئة تطوير سولانا

الآن دعونا نلقي نظرة على بعض أدوات المطورين في Solana.

لغات البرمجة

في حين أن Ethereum يستخدم بشكل أساسي Solidity لكتابة العقود الذكية، فإن Solana يستخدم Rust. إذا انتقلت من Ethereum، ففكر في إطار عمل Anchor أو Neon، وكلاهما يمكن أن يساعد المطورين على البدء بشكل أسرع من خلال السماح لهم بالبناء في Solana باستخدام أدوات EVM المألوفة.

كما هو الحال مع إيثريوم، تتوفر أدوات تطوير البرامج (SDK) من جانب العميل للعديد من لغات البرمجة الأكثر شيوعًا، بما في ذلك JavaScript وPython وJava.

أدوات المطور

ليس لدى Solana حاليًا ما يعادل Foundry، ولكنه يحتوي على مجموعة واسعة من الأدوات المكافئة لتلك المستخدمة في Solidity.

وللتعمق أكثر، إليك قائمة أوسع بموارد المطورين.

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

عند إنشاء برامج على Solana (أو عند ترحيل عقود Ethereum الذكية الحالية)، هناك العديد من الاختلافات الأساسية - الكثير منها لا يمكن تغطيته هنا. ولكن دعونا نلقي نظرة على عدد قليل من الأكثر شيوعا:

  • رسم الخرائط غير موجود مباشرة على سولانا. بدلاً من ذلك، استخدم العناوين المشتقة من البرنامج. مثل رسم الخرائط، تمنح العناوين المشتقة من البرنامج القدرة على إنشاء خريطة من مفتاح أو حساب إلى قيمة مخزنة على السلسلة.

  • في Solana، تكون البرامج قابلة للترقية بشكل افتراضي. يمكن ترقية العقد الذكي من خلال برنامج solana لأمر CLI البسيط الذي يتم نشره <program_filepath>.

  • عند كتابة عقد ذكي متين، من الشائع التحقق من وجود msg.sender أو tx.origin. ولا يوجد ما يعادل هذا في سولانا. يمكن أن يكون لكل معاملة عدة موقعين، والشخص الذي يرسل المعاملة ليس بالضرورة هو الذي وقع على المعاملة.

لمزيد من المعلومات حول البرامج وكيفية نشرها، راجع هذا الدليل.

يتعلم أكثر

هذه هي بعض الاختلافات الأكثر أهمية بين التطوير على Ethereum وSolana. هناك الكثير لنتعلمه بالطبع. وأفضل طريقة للبدء هي القفز مباشرة! فيما يلي بعض الموارد للخطوات التالية:

  • ملعب Solana حيث يمكن للمطورين كتابة برامج Solana وإنشائها ونشرها من المتصفح

  • مقدمة لتطوير Solana باستخدام Solana Playground

  • نظرة أكثر تفصيلاً على الاختلافات بين التطوير على Ethereum وSolana

  • معسكر سولانا التدريبي