سبع تقنيات أساسية لتطوير عقود DEX يجب على المبتدئين قراءتها

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

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

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

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

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

طريقة واحدة هي استخدام CREATE2 لإنشاء عقد، من خلال إضافة بارامتر الملح لجعل العنوان الناتج قابلاً للتنبؤ. صيغة حساب العنوان الجديد هي:

عنوان جديد = hash("0xFF", عنوان المنشئ, الملح, initcode)

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

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

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

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

تمرير المعلومات باستخدام الاستثناءات

في كود DEX معين، يتم استخدام try-catch لتغليف طريقة swap لعقد pool لمحاكاة التداول وتقدير الرموز المطلوبة. نظرًا لأن التقدير لا يقوم فعليًا بتبادل الرموز، سيتم طرح خطأ. من خلال طرح خطأ خاص في رد النداء، ثم التقاط وتحليل معلومات الخطأ، يمكن الحصول على نتائج التقدير.

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

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

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

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

حساب الأرباح في وضع المشاركة

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

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

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

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

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

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

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

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

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 10
  • إعادة النشر
  • مشاركة
تعليق
0/400
DiamondHandsvip
· 08-08 22:41
create2 عملة مباشرة
شاهد النسخة الأصليةرد0
UnluckyMinervip
· 08-07 07:50
المزيد من مقتطفات الشفرة
شاهد النسخة الأصليةرد0
BridgeJumpervip
· 08-07 04:50
النسخ أيضًا فن
شاهد النسخة الأصليةرد0
nft_widowvip
· 08-06 21:36
يجب دعم النص الجيد
شاهد النسخة الأصليةرد0
LiquidityWizardvip
· 08-05 23:03
العنوان预测很关键呢
شاهد النسخة الأصليةرد0
ImpermanentLossFanvip
· 08-05 23:01
الحروف قليلة جداً ولا تكفي للقراءة
شاهد النسخة الأصليةرد0
LightningLadyvip
· 08-05 23:01
رؤى قيمة满满有料
شاهد النسخة الأصليةرد0
DeFi_Dad_Jokesvip
· 08-05 22:50
حدد النقاط المهمة واحتفظ بها لمشاهدتها
شاهد النسخة الأصليةرد0
gas_fee_therapistvip
· 08-05 22:45
غاز花太值了
شاهد النسخة الأصليةرد0
PaperHandSistervip
· 08-05 22:43
ارتفع المعرفة يا إخوان
شاهد النسخة الأصليةرد0
عرض المزيد
  • تثبيت