7 نصائح عملية لمساعدتك في إتقان تطوير العقود الذكية

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

تقنيات ذكية في تطوير العقود

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

دعونا نلقي نظرة على هذه الحيل الذكية، بعضها يمكن أن يُطلق عليه حتى اسم الحيل الغريبة.

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

عنوان نشر العقد المتوقع

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

طريقة واحدة هي استخدام CREATE2 لإنشاء عقد، وإضافة معلمة salt: pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}()); . العقد الذي تم إنشاؤه بهذه الطريقة له عنوان يمكن التنبؤ به، ومنطق التوليد هو عنوان جديد = hash("0xFF", عنوان المنشئ، salt، initcode).

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

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

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

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

استخدم استثناءات لنقل المعلومات، استخدم try catch لتنفيذ تقدير الصفقة

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

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

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

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

طريقة المشاركة لحساب العائد

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

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

![Web3 سلسلة للمبتدئين: الحيل الصغيرة في تطوير العقود التي تعلمتها من كود Uniswap])https://img-cdn.gateio.im/webp-social/moments-45e66af69435e6d4412ae506e77ab893.webp(

) الحصول على توازن المعلومات على السلسلة وخارجها

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

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

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

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

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

ملخص

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

![سلسلة المبتدئين في Web3: نصائح صغيرة لتطوير العقود التي تعلمتها من كود Uniswap]###https://img-cdn.gateio.im/webp-social/moments-f95ddc9d89809cf11dbe65b9bafda157.webp(

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • إعادة النشر
  • مشاركة
تعليق
0/400
ServantOfSatoshivip
· 08-12 16:04
الحيل الماكرة، أليست هذه هي الحركات المريبة؟
شاهد النسخة الأصليةرد0
mev_me_maybevip
· 08-11 22:32
اكتشف مبتدئ القهوة سراً كبيراً، كل ذلك مجرد حديث قديم.
شاهد النسخة الأصليةرد0
CommunityLurkervip
· 08-11 16:39
مبتدئ هو صحيح، أنصحك بأن تبدأ بتجربة hello world
شاهد النسخة الأصليةرد0
Blockwatcher9000vip
· 08-10 12:50
إذا قلناها بشكل لطيف، فهي مهارة، ولكن في الواقع، هي كلها حيل مختلفة.
شاهد النسخة الأصليةرد0
OnChainDetectivevip
· 08-10 12:46
لقد بحثت في نشر create2 لفترة طويلة. هذه الطريقة ربما تستخدم لوضع الألغام.. من يفهم يفهم.
شاهد النسخة الأصليةرد0
ContractExplorervip
· 08-10 12:42
اكتشاف ثغرة جديدة هو الأكثر إثارة في سباق الثغرات
شاهد النسخة الأصليةرد0
  • تثبيت