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

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

نصائح وخبرات في تطوير العقود

مؤخراً، خلال تطوير بورصة لا مركزية، استندت إلى كود تنفيذ Uniswap V3 وتعلمت العديد من تقنيات تطوير العقود المفيدة. باعتباري مطورًا سبق له تطوير عقود NFT بسيطة، كانت هذه المحاولة في تطوير عقود Defi مثمرة للغاية بالنسبة لي. يجب أن تكون هذه التقنيات مفيدة جدًا للمبتدئين الذين يرغبون في تعلم تطوير العقود.

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

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

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

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

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

استخدام دوال الاسترجاع بذكاء

يمكن للعقود في Solidity استدعاء بعضها البعض. في بعض السيناريوهات، تستدعي A طريقة B، وتقوم B في الطريقة المستدعاة بإرجاع الاتصال بـ A، وهذه الطريقة مفيدة جدًا.

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

استخدم الاستثناءات لنقل المعلومات، استخدم try-catch لتقدير المعاملات

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

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

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

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

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

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

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

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

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

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

قد يتضمن المشروع عدة عقود تم نشرها فعليًا. حتى لو تم نشر عقد واحد فقط، يمكن تقسيم الشيفرة من خلال الوراثة إلى عدة عقود للصيانة.

في الوقت نفسه، يمكن أن يؤدي استخدام العقود القياسية الحالية ( مثل ERC721) إلى زيادة كفاءة التطوير. على سبيل المثال، يمكن استخدام ERC721 لإدارة المراكز، مما يسهل الأمر ويتيح إعادة استخدام الكود الناضج.

ملخص

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

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

شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • أعجبني
  • 3
  • مشاركة
تعليق
0/400
gas_fee_traumavip
· منذ 5 س
العقد صعب يا أخي
شاهد النسخة الأصليةرد0
SchrodingerAirdropvip
· منذ 5 س
عصر النهضة أعيش من جديد في التجارة الغريبة
شاهد النسخة الأصليةرد0
degenwhisperervip
· منذ 5 س
في النهاية، v3 لا يزال غير مرن بما فيه الكفاية
شاهد النسخة الأصليةرد0
  • تثبيت