سبع نصائح لتطوير عقود Uniswap دليل يجب أن يقرأه المبتدئ

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

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

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

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

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

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

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

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

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

استخدام الاستثناء لنقل المعلومات

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

ضمان دقة العمليات الكبيرة

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

Web3 مبتدئ سلسلة: الأشياء التي تعلمتها من تطوير العقود في كود Uniswap

حساب العوائد من آلية المشاركة

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

Web3 مبتدئ系列:أنا تعلمت بعض النصائح لتطوير العقود من كود Uniswap

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

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

تقسيم العقود وتطبيق العقود القياسية

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

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

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

UNI-1.71%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • إعادة النشر
  • مشاركة
تعليق
0/400
BagHolderTillRetirevip
· 07-08 01:52
لقد جعلني العقد أشعر بالارتباك.
شاهد النسخة الأصليةرد0
RugDocScientistvip
· 07-05 04:24
الأخ لديه بالفعل شيء من الفهم في تلخيص الأمور
شاهد النسخة الأصليةرد0
SeasonedInvestorvip
· 07-05 04:20
ههه مبتدئ ودود إذا لم تتمكن من التعلم فلا تتعلم
شاهد النسخة الأصليةرد0
SatoshiLegendvip
· 07-05 04:17
تفاصيل التقنية ليست مكتملة تمامًا، ولا تزال هناك العديد من الثغرات في مستوى تتبع المصدر... يُنصح بالرجوع إلى كود المصدر v2
شاهد النسخة الأصليةرد0
governance_ghostvip
· 07-05 04:03
رؤى قيمة收藏 后面学习用
شاهد النسخة الأصليةرد0
UnluckyValidatorvip
· 07-05 04:00
لقد أصبحت هذه التفاصيل كثيرة جداً بالنسبة لي.
شاهد النسخة الأصليةرد0
  • تثبيت