7 نصائح عملية لتطوير العقود الذكية لدعم مشاريع DEX

robot
إنشاء الملخص قيد التقدم

مشاركة نصائح صغيرة لتطوير العقود

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

Web3 سلسلة للمبتدئين: النصائح الصغيرة لتطوير العقود التي تعلمتها من كود Uniswap

عنوان العقد التنبؤي

عادةً ما تبدو عناوين العقود المنشورة عشوائية، لأنها تتعلق بالـ nonce. ولكن في بعض السيناريوهات، نحتاج إلى استنتاج عنوان العقد من خلال معلومات المعاملات. يمكن تحقيق ذلك عن طريق استخدام طريقة CREATE2 لإنشاء العقود، وذلك عن طريق إضافة معلمة salt عند إنشاء العقد. العنوان الناتج بهذه الطريقة قابل للتنبؤ، ويتبع منطق "العنوان الجديد = hash('0xFF'، عنوان المنشئ، salt، initcode)".

Web3 سلسلة المبتدئين: الحيل الصغيرة التي تعلمتها من كود Uniswap لتطوير العقود

استخدام دالة الاسترجاع

في بعض السيناريوهات، من المفيد أن تستدعي العقدة A طرق العقدة B، حيث تقوم B بالاتصال مرة أخرى بـ A في الطريقة التي تم استدعاؤها. على سبيل المثال في DEX، عندما يتم استدعاء طريقة swap لعقدة بركة التداول، ستقوم باستدعاء swapCallback، مع تمرير الكمية الفعلية المطلوبة من الرمز المميز. يحتاج المستدعي إلى نقل الرمز المميز المطلوب إلى بركة التداول في الاستدعاء، مما يضمن التنفيذ الكامل والأمان لطريقة swap.

نقل المعلومات عبر الاستثناء

عند تقدير الصفقة، يمكن لف طريقة تنفيذ swap باستخدام try-catch. لأن التقدير لن يقوم بتبادل الرموز فعليًا، فسيتم إرجاع خطأ. يمكن في دالة الاسترجاع رفع خطأ خاص، ثم التقاطه وتحليل المعلومات المطلوبة. هذه الطريقة تتجنب الحاجة لتعديل طريقة swap بشكل خاص لتلبية احتياجات التقدير، مما يجعل المنطق أكثر بساطة.

Web3 المبتدئين: الحيل الصغيرة في تطوير العقود التي تعلمتها من كود Uniswap

مشكلة دقة معالجة الأعداد الكبيرة

عند التعامل مع حسابات الأسعار والسيولة، لتجنب فقدان الدقة الناتج عن القسمة، يمكن نقل القيمة إلى اليسار بمقدار 96 بت، ( يعادل الضرب في 2^96) ثم القيام بالحساب. على الرغم من أنه من الناحية النظرية لا يزال هناك فقدان طفيف للدقة، إلا أنه في النطاق المقبول.

حساب الأرباح بطريقة المشاركة

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

Web3 سلسلة المبتدئين: نصائح صغيرة لتطوير العقود التي تعلمتها من كود Uniswap

دمج البيانات على السلسلة وخارجها

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

تقسيم العقود واستخدام العقود القياسية

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

سلسلة مبتدئين Web3: نصائح صغيرة لتطوير العقود التي تعلمتها من كود Uniswap

لفهم هذه التقنيات بعمق، فإن أفضل طريقة هي تطوير نسخة بسيطة من DEX بنفسك. من خلال الممارسة، ستفهم بشكل أعمق مختلف أفكار التصميم، وستتعلم أيضًا المزيد من المعرفة العملية. آمل أن تكون هذه المشاركات ملهمة ومفيدة لك.

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 2
  • مشاركة
تعليق
0/400
AirdropHustlervip
· 07-19 11:31
هذه المهارات التطويرية تعتبر ربحًا صغيرًا ولكن مبيعات كثيرة بالنسبة لبرش
شاهد النسخة الأصليةرد0
0xSherlockvip
· 07-16 20:55
دليل مبتدئ قياسي
شاهد النسخة الأصليةرد0
  • تثبيت