في الآونة الأخيرة، أثناء تعلم تطوير البورصات اللامركزية، اكتشفت بعض تقنيات تطوير العقود المثيرة للاهتمام. هذه التقنيات مستمدة من دراسة كود DEX الشهير، ويجب أن تكون مفيدة للغاية للمبتدئين الذين يرغبون في دخول عالم تطوير العقود الذكية.
عنوان العقد القابل للتنبؤ
عادةً ما يبدو عنوان العقد الذي يتم نشره عشوائيًا وصعب التنبؤ به. ولكن في بعض السيناريوهات، نحتاج إلى استنتاج عنوان العقد من خلال معلومات المعاملات المتساوية، وهذا مفيد جدًا في تحديد صلاحيات المعاملات أو الحصول على عنوان المسبح وما إلى ذلك.
يمكن إنشاء العقد بطريقة CREATE2 عن طريق إضافة معلمة salt، مما يجعل العنوان الناتج قابلاً للتوقع. منطق حساب العنوان الجديد هو: hash("0xFF"، عنوان المنشئ، salt، initcode).
استخدام دوال الاستدعاء بشكل ذكي
في بعض السيناريوهات، يكون من المفيد أن تستدعي العقدة A طريقة العقدة B، ثم تستدعي B مرة أخرى طريقة A. على سبيل المثال، أثناء التداول، ستقوم عقدة المسبح باستدعاء swapCallback، مع تمرير الكمية الفعلية المطلوبة من الرموز، ثم يقوم المتصل بإرسال الرموز في الاستدعاء. هذا يضمن سلامة وأمان منطق المعاملة بالكامل.
نقل المعلومات عبر الاستثناء
عند تقدير الصفقة، يمكن استخدام try-catch لتغليف تنفيذ طريقة swap. نظرًا لأن التقدير لن ينتج عنه تبادل رموز فعلي، فسوف يظهر خطأ. يمكن طرح خطأ خاص في الاستدعاء، ثم القبض عليه وتحليل البيانات المطلوبة من رسالة الخطأ. بهذه الطريقة، لا داعي لتعديل طريقة swap خصيصًا لتلبية احتياجات التقدير، مما يجعل المنطق أكثر بساطة.
حل مشكلة دقة الأعداد الكبيرة
عند التعامل مع حسابات الأسعار والسيولة، لتجنب فقدان الدقة في عمليات القسمة، يمكن تحريك الرقم 96 مكاناً لليسار ( مما يعادل ضربه في 2^96) قبل إجراء الحساب. بهذه الطريقة، يمكن ضمان الدقة دون تجاوز الحدود. على الرغم من أنه من الناحية النظرية لا يزال هناك فقدان طفيف للدقة على مستوى الوحدة الدنيا، إلا أنه في التطبيق العملي يعتبر مقبولاً.
حساب العوائد في وضع المشاركة
عند تسجيل عائدات رسوم LP، لا يمكن تسجيل كل LP في كل معاملة، فهذا سيستهلك كمية كبيرة من الغاز. يمكن فقط تسجيل إجمالي الرسوم المستحقة والرسوم المستحقة لكل وحدة من السيولة، وعند سحب LP، يتم حساب المبلغ القابل للسحب بناءً على السيولة المحتفظ بها. يشبه مبدأ توزيع أرباح الأسهم.
تخزين البيانات خارج السلسلة
ليس كل المعلومات بحاجة إلى أن تكون على السلسلة أو الحصول عليها من السلسلة. يمكن تخزين قائمة تجمعات المعاملات ومعلومات التجمعات في قواعد بيانات تقليدية، مع التزامن الدوري من السلسلة. يمكن أن يؤدي ذلك إلى تحسين كفاءة الوصول وتقليل التكاليف. بالطبع، لا تزال المعاملات الرئيسية بحاجة إلى أن تتم على السلسلة.
تقسيم العقود وإعادة الاستخدام
يمكن تقسيم المشروع إلى عدة عقود قابلة للتنفيذ، أو تقسيم الكود إلى عدة عقود للحفاظ عليها من خلال طريقة الوراثة. في الوقت نفسه، يجب الاستفادة من العقود القياسية الموجودة، مثل ERC721 وما إلى ذلك، لتحسين كفاءة التطوير.
لا يساوي النظر إلى الكثير من النظريات شيئًا مقارنة بالتجربة العملية. إن محاولة تنفيذ نسخة بسيطة من DEX يمكن أن تساعدك على فهم تقنيات تطوير العقود بشكل أعمق. آمل أن تكون هذه النصائح الصغيرة مفيدة في طريقك نحو تطوير العقود الذكية.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 12
أعجبني
12
8
مشاركة
تعليق
0/400
CryptoGoldmine
· منذ 11 س
العقود هي المفتاح، الاستقرار هو ما يحقق العائد على الاستثمار
شاهد النسخة الأصليةرد0
DecentralizedElder
· منذ 12 س
لقد كنت عالقًا في تعلم Solidity
شاهد النسخة الأصليةرد0
OnchainDetective
· منذ 12 س
真不错 先码后طفرة!
شاهد النسخة الأصليةرد0
HalfBuddhaMoney
· منذ 12 س
من خلال هذه الحيل، يجب أن تكون حصاد مكافآت dex ثابتًا.
7 تقنيات تطوير العقود تساعدك على أن تصبح محترف DEX
حيل وتكتيكات تطوير العقود
في الآونة الأخيرة، أثناء تعلم تطوير البورصات اللامركزية، اكتشفت بعض تقنيات تطوير العقود المثيرة للاهتمام. هذه التقنيات مستمدة من دراسة كود DEX الشهير، ويجب أن تكون مفيدة للغاية للمبتدئين الذين يرغبون في دخول عالم تطوير العقود الذكية.
عنوان العقد القابل للتنبؤ
عادةً ما يبدو عنوان العقد الذي يتم نشره عشوائيًا وصعب التنبؤ به. ولكن في بعض السيناريوهات، نحتاج إلى استنتاج عنوان العقد من خلال معلومات المعاملات المتساوية، وهذا مفيد جدًا في تحديد صلاحيات المعاملات أو الحصول على عنوان المسبح وما إلى ذلك.
يمكن إنشاء العقد بطريقة CREATE2 عن طريق إضافة معلمة salt، مما يجعل العنوان الناتج قابلاً للتوقع. منطق حساب العنوان الجديد هو: hash("0xFF"، عنوان المنشئ، salt، initcode).
استخدام دوال الاستدعاء بشكل ذكي
في بعض السيناريوهات، يكون من المفيد أن تستدعي العقدة A طريقة العقدة B، ثم تستدعي B مرة أخرى طريقة A. على سبيل المثال، أثناء التداول، ستقوم عقدة المسبح باستدعاء swapCallback، مع تمرير الكمية الفعلية المطلوبة من الرموز، ثم يقوم المتصل بإرسال الرموز في الاستدعاء. هذا يضمن سلامة وأمان منطق المعاملة بالكامل.
نقل المعلومات عبر الاستثناء
عند تقدير الصفقة، يمكن استخدام try-catch لتغليف تنفيذ طريقة swap. نظرًا لأن التقدير لن ينتج عنه تبادل رموز فعلي، فسوف يظهر خطأ. يمكن طرح خطأ خاص في الاستدعاء، ثم القبض عليه وتحليل البيانات المطلوبة من رسالة الخطأ. بهذه الطريقة، لا داعي لتعديل طريقة swap خصيصًا لتلبية احتياجات التقدير، مما يجعل المنطق أكثر بساطة.
حل مشكلة دقة الأعداد الكبيرة
عند التعامل مع حسابات الأسعار والسيولة، لتجنب فقدان الدقة في عمليات القسمة، يمكن تحريك الرقم 96 مكاناً لليسار ( مما يعادل ضربه في 2^96) قبل إجراء الحساب. بهذه الطريقة، يمكن ضمان الدقة دون تجاوز الحدود. على الرغم من أنه من الناحية النظرية لا يزال هناك فقدان طفيف للدقة على مستوى الوحدة الدنيا، إلا أنه في التطبيق العملي يعتبر مقبولاً.
حساب العوائد في وضع المشاركة
عند تسجيل عائدات رسوم LP، لا يمكن تسجيل كل LP في كل معاملة، فهذا سيستهلك كمية كبيرة من الغاز. يمكن فقط تسجيل إجمالي الرسوم المستحقة والرسوم المستحقة لكل وحدة من السيولة، وعند سحب LP، يتم حساب المبلغ القابل للسحب بناءً على السيولة المحتفظ بها. يشبه مبدأ توزيع أرباح الأسهم.
تخزين البيانات خارج السلسلة
ليس كل المعلومات بحاجة إلى أن تكون على السلسلة أو الحصول عليها من السلسلة. يمكن تخزين قائمة تجمعات المعاملات ومعلومات التجمعات في قواعد بيانات تقليدية، مع التزامن الدوري من السلسلة. يمكن أن يؤدي ذلك إلى تحسين كفاءة الوصول وتقليل التكاليف. بالطبع، لا تزال المعاملات الرئيسية بحاجة إلى أن تتم على السلسلة.
تقسيم العقود وإعادة الاستخدام
يمكن تقسيم المشروع إلى عدة عقود قابلة للتنفيذ، أو تقسيم الكود إلى عدة عقود للحفاظ عليها من خلال طريقة الوراثة. في الوقت نفسه، يجب الاستفادة من العقود القياسية الموجودة، مثل ERC721 وما إلى ذلك، لتحسين كفاءة التطوير.
لا يساوي النظر إلى الكثير من النظريات شيئًا مقارنة بالتجربة العملية. إن محاولة تنفيذ نسخة بسيطة من DEX يمكن أن تساعدك على فهم تقنيات تطوير العقود بشكل أعمق. آمل أن تكون هذه النصائح الصغيرة مفيدة في طريقك نحو تطوير العقود الذكية.