دليل المبتدئين في Web3: مشاركة نصائح تطوير عقود Uniswap
مؤخراً، أثناء كتابة دليل تطوير بورصة لامركزية، قمت بالإشارة إلى تنفيذ كود Uniswap V3 وتعلمت الكثير من النقاط المثيرة للاهتمام. كأول محاولة لي لتطوير عقود Defi، ستكون هذه التقنيات مفيدة جداً للمبتدئين الذين يرغبون في تعلم تطوير العقود.
عادةً ما تبدو عناوين العقود الموزعة عشوائية، لأنها مرتبطة بـ nonce. ولكن في بعض الحالات، نحتاج إلى استنتاج عنوان العقد من خلال أزواج التداول والمعلومات ذات الصلة. يستخدم Uniswap طريقة CREATE2 لإنشاء العقود، ويضيف معلمة salt لجعل العنوان الناتج قابلاً للتنبؤ. منطق إنشاء العنوان الجديد هو: hash("0xFF"، عنوان المنشئ، salt، initcode).
استخدام دوال الاستدعاء بذكاء
في بعض السيناريوهات، يكون من المفيد جداً استدعاء العقود لبعضها البعض. على سبيل المثال، عند استدعاء طريقة swap لمنصة تبادل معينة، سيتم استدعاء swapCallback مع عدد التوكنات المطلوبة فعليًا. يجب على الجهة المستدعية تحويل التوكنات المطلوبة إلى صندوق التداول في الاستدعاء، لضمان تكامل وأمان منطق التداول بالكامل.
استخدام الاستثناء لنقل المعلومات
عند تقدير الصفقة، تقوم بعض المنصات بتغليف تنفيذ طريقة swap باستخدام try catch. نظرًا لأن التقدير لن يؤدي فعليًا إلى تبادل الرموز، سيؤدي ذلك إلى حدوث خطأ. من خلال طرح خطأ خاص في دالة الاستدعاء، ثم التقاط وتحليل معلومات الخطأ، يمكن الحصول على البيانات المطلوبة. هذه الطريقة تتجنب الحاجة إلى تعديل طريقة swap للتقدير.
ضمان دقة العمليات الكبيرة
عند التعامل مع حسابات الأسعار والسيولة، ولتجنب فقدان الدقة الناتج عن عمليات القسمة، يمكن استخدام العملية اليسارية (ما يعادل الضرب في 2^96). بهذه الطريقة يمكن ضمان الدقة في حالة عدم وجود تجاوز أثناء التداول العادي. على الرغم من وجود فقدان دقة طفيف من الناحية النظرية، إلا أنه يمكن قبوله.
حساب العوائد من آلية المشاركة
لتقليل استهلاك الغاز، لا يمكن تسجيل الرسوم لكل مزود سيولة في كل معاملة. يمكن تسجيل إجمالي الرسوم والرسوم التي يجب تخصيصها لكل سيولة، وعند سحب LP، يتم حساب الرسوم القابلة للسحب بناءً على السيولة المحتفظ بها. هذا مشابه لآلية توزيع الأرباح للأسهم.
الاستفادة المعقولة من البيانات خارج السلسلة
ليس كل المعلومات بحاجة إلى الحصول عليها من السلسلة. على سبيل المثال، يمكن تخزين قائمة برك التداول ومعلومات برك التداول في قواعد البيانات التقليدية، مع المزامنة من السلسلة بشكل دوري. بعض مزودي RPC للبلوكشين يقدمون واجهات متقدمة، مما يتيح الحصول على البيانات بشكل أسرع وأقل تكلفة.
تقسيم العقود وتطبيق العقود القياسية
قد تحتوي المشاريع على عدة عقود تم نشرها فعليًا، أو يمكن تقسيم عقد واحد إلى عدة عقود من خلال الوراثة. يمكن أن يؤدي استخدام العقود القياسية الحالية (مثل ERC721) إلى تحسين كفاءة التطوير. على سبيل المثال، تستخدم بعض المنصات عقود ERC721 لإدارة المراكز، مما يسهل الإدارة ويزيد من كفاءة التطوير.
الممارسة هي أفضل طريقة للتعلم. حاول تنفيذ نسخة مبسطة من بورصة لامركزية، يمكنك أن تفهم بشكل أعمق تنفيذ الكود لبورصات DEX الرئيسية، وتتعلم المزيد من النقاط المعرفية في المشاريع العملية. يُنصح للمطورين المهتمين بالاطلاع على الدورات التعليمية المفتوحة ذات الصلة، وإكمال تطوير نسخة مبسطة من البورصة خطوة بخطوة.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 22
أعجبني
22
6
إعادة النشر
مشاركة
تعليق
0/400
BagHolderTillRetire
· 07-08 01:52
لقد جعلني العقد أشعر بالارتباك.
شاهد النسخة الأصليةرد0
RugDocScientist
· 07-05 04:24
الأخ لديه بالفعل شيء من الفهم في تلخيص الأمور
شاهد النسخة الأصليةرد0
SeasonedInvestor
· 07-05 04:20
ههه مبتدئ ودود إذا لم تتمكن من التعلم فلا تتعلم
شاهد النسخة الأصليةرد0
SatoshiLegend
· 07-05 04:17
تفاصيل التقنية ليست مكتملة تمامًا، ولا تزال هناك العديد من الثغرات في مستوى تتبع المصدر... يُنصح بالرجوع إلى كود المصدر v2
سبع نصائح لتطوير عقود Uniswap دليل يجب أن يقرأه المبتدئ
دليل المبتدئين في Web3: مشاركة نصائح تطوير عقود Uniswap
مؤخراً، أثناء كتابة دليل تطوير بورصة لامركزية، قمت بالإشارة إلى تنفيذ كود Uniswap V3 وتعلمت الكثير من النقاط المثيرة للاهتمام. كأول محاولة لي لتطوير عقود Defi، ستكون هذه التقنيات مفيدة جداً للمبتدئين الذين يرغبون في تعلم تطوير العقود.
! سلسلة Web3 للمبتدئين: نصائح تطوير العقود التي تعلمتها من Uniswap Code
عنوان نشر العقد القابل للتنبؤ
عادةً ما تبدو عناوين العقود الموزعة عشوائية، لأنها مرتبطة بـ nonce. ولكن في بعض الحالات، نحتاج إلى استنتاج عنوان العقد من خلال أزواج التداول والمعلومات ذات الصلة. يستخدم Uniswap طريقة CREATE2 لإنشاء العقود، ويضيف معلمة salt لجعل العنوان الناتج قابلاً للتنبؤ. منطق إنشاء العنوان الجديد هو: hash("0xFF"، عنوان المنشئ، salt، initcode).
استخدام دوال الاستدعاء بذكاء
في بعض السيناريوهات، يكون من المفيد جداً استدعاء العقود لبعضها البعض. على سبيل المثال، عند استدعاء طريقة swap لمنصة تبادل معينة، سيتم استدعاء swapCallback مع عدد التوكنات المطلوبة فعليًا. يجب على الجهة المستدعية تحويل التوكنات المطلوبة إلى صندوق التداول في الاستدعاء، لضمان تكامل وأمان منطق التداول بالكامل.
استخدام الاستثناء لنقل المعلومات
عند تقدير الصفقة، تقوم بعض المنصات بتغليف تنفيذ طريقة swap باستخدام try catch. نظرًا لأن التقدير لن يؤدي فعليًا إلى تبادل الرموز، سيؤدي ذلك إلى حدوث خطأ. من خلال طرح خطأ خاص في دالة الاستدعاء، ثم التقاط وتحليل معلومات الخطأ، يمكن الحصول على البيانات المطلوبة. هذه الطريقة تتجنب الحاجة إلى تعديل طريقة swap للتقدير.
ضمان دقة العمليات الكبيرة
عند التعامل مع حسابات الأسعار والسيولة، ولتجنب فقدان الدقة الناتج عن عمليات القسمة، يمكن استخدام العملية اليسارية (ما يعادل الضرب في 2^96). بهذه الطريقة يمكن ضمان الدقة في حالة عدم وجود تجاوز أثناء التداول العادي. على الرغم من وجود فقدان دقة طفيف من الناحية النظرية، إلا أنه يمكن قبوله.
حساب العوائد من آلية المشاركة
لتقليل استهلاك الغاز، لا يمكن تسجيل الرسوم لكل مزود سيولة في كل معاملة. يمكن تسجيل إجمالي الرسوم والرسوم التي يجب تخصيصها لكل سيولة، وعند سحب LP، يتم حساب الرسوم القابلة للسحب بناءً على السيولة المحتفظ بها. هذا مشابه لآلية توزيع الأرباح للأسهم.
الاستفادة المعقولة من البيانات خارج السلسلة
ليس كل المعلومات بحاجة إلى الحصول عليها من السلسلة. على سبيل المثال، يمكن تخزين قائمة برك التداول ومعلومات برك التداول في قواعد البيانات التقليدية، مع المزامنة من السلسلة بشكل دوري. بعض مزودي RPC للبلوكشين يقدمون واجهات متقدمة، مما يتيح الحصول على البيانات بشكل أسرع وأقل تكلفة.
تقسيم العقود وتطبيق العقود القياسية
قد تحتوي المشاريع على عدة عقود تم نشرها فعليًا، أو يمكن تقسيم عقد واحد إلى عدة عقود من خلال الوراثة. يمكن أن يؤدي استخدام العقود القياسية الحالية (مثل ERC721) إلى تحسين كفاءة التطوير. على سبيل المثال، تستخدم بعض المنصات عقود ERC721 لإدارة المراكز، مما يسهل الإدارة ويزيد من كفاءة التطوير.
الممارسة هي أفضل طريقة للتعلم. حاول تنفيذ نسخة مبسطة من بورصة لامركزية، يمكنك أن تفهم بشكل أعمق تنفيذ الكود لبورصات DEX الرئيسية، وتتعلم المزيد من النقاط المعرفية في المشاريع العملية. يُنصح للمطورين المهتمين بالاطلاع على الدورات التعليمية المفتوحة ذات الصلة، وإكمال تطوير نسخة مبسطة من البورصة خطوة بخطوة.