Web3 Beginner Series: کنٹریکٹ ڈویلپمنٹ ٹپس میں نے یونی سویپ کوڈ سے سیکھی ہے۔
میں نے حال ہی میں ڈی سینٹرلائزڈ ایکسچینج ڈویلپمنٹ پر ایک ٹیوٹوریل لکھا ہے۔ https://github.com/WTFAcademy/WTF-Dapp ، Uniswap V3 کے کوڈ کے نفاذ کا حوالہ دیتے ہوئے، اور بہت سے علمی نکات سیکھے۔ میں نے پہلے بھی سادہ NFT معاہدے تیار کیے ہیں، اور یہ پہلا موقع ہے جب میں نے ڈیفی معاہدہ تیار کرنے کی کوشش کی ہے۔ مجھے یقین ہے کہ یہ نکات ان نوآموزوں کے لیے بہت مددگار ثابت ہوں گے جو کنٹریکٹ ڈویلپمنٹ سیکھنا چاہتے ہیں۔
کنٹریکٹ ڈویلپر براہ راست جا سکتے ہیں۔ https://github.com/WTFAcademy/WTF-Dapp کوڈ کا تعاون کرنے اور Web3 کے لیے فرق کرنے کے لیے~
اس کے بعد، آئیے ان چھوٹی چالوں پر ایک نظر ڈالیں، جن میں سے کچھ کو چالوں کی چالیں بھی کہا جا سکتا ہے۔
کنٹریکٹ کی تعیناتی کا کنٹریکٹ ایڈریس قابل قیاس بنایا جا سکتا ہے۔
جب ہم کوئی معاہدہ کرتے ہیں، تو ہمیں عام طور پر بظاہر بے ترتیب پتہ ملتا ہے۔ چونکہ اس کا تعلق نانس سے ہے، اس لیے معاہدے کے پتے کی پیشین گوئی کرنا مشکل ہے۔ تاہم، Uniswap میں، ہمارے پاس ایسی ضرورت ہے: ہمیں لین دین کے جوڑے اور متعلقہ معلومات کے ذریعے معاہدے کے پتے کا اندازہ لگانے کی ضرورت ہے۔ یہ بہت سے معاملات میں بہت مفید ہے، جیسے کہ ٹرانزیکشن اتھارٹی کا تعین کرنا یا پول کا پتہ حاصل کرنا۔
یونی سویپ میں، پول = ایڈریس(نیا یونی سویپ V3 پول{سالٹ: کیکک 256(abi.encode(token 0, token 1, fee))}()) جیسے کوڈ کا استعمال کرکے معاہدے بنائے جاتے ہیں۔ کا استعمال کرتے ہوئے ایک معاہدہ بنانے کے لئے نمک شامل کر کے تخلیق 2 ( https://github.com/AmazingAng/WTF-Solidity/blob/main/25_Create2/readme.md )، فائدہ یہ ہے کہ بنایا گیا معاہدہ ایڈریس قابل قیاس ہے۔ ایڈریس جنریشن کی منطق نیا ایڈریس = ہیش(0x FF، تخلیق کار کا پتہ، نمک، initcode) ہے۔
آپ WTF-DApp کورس میں اس کے بارے میں مزید جان سکتے ہیں۔ https://github.com/WTFAcademy/WTF-Dapp/blob/main/P103_Factory/readme.md پر .
کال بیک فنکشنز کا اچھا استعمال کریں۔
سولیڈیٹی میں، معاہدے ایک دوسرے کو کال کرسکتے ہیں۔ ایک ایسا منظر نامہ ہے جہاں A ایک مخصوص طریقہ میں B کو کال کرتا ہے، اور B کہلائے گئے طریقہ میں A کو واپس بلاتا ہے، جو کچھ منظرناموں میں بھی بہت مفید ہے۔
یونی سویپ میں، جب آپ یونی سویپ V3 پول کنٹریکٹ کے سویپ طریقہ کو کال کرتے ہیں، تو یہ سویپ کال بیک کو کال کرے گا، اور کال بیک حساب سے گزر جائے گا۔ ٹوکن اصل میں اس لین دین کے لیے درکار ہے۔ کال کرنے والے کو کال بیک میں لین دین کے لیے درکار ٹوکن کو یونی سویپ V3 پول میں منتقل کرنے کی ضرورت ہے، بجائے اس کے کہ کال کرنے والے کو کال کرنے کے لیے تبادلہ کرنے کے طریقہ کار کو دو حصوں میں تقسیم کیا جائے۔ یہ سویپ کے طریقہ کار کی حفاظت کو یقینی بناتا ہے اور اس بات کو یقینی بناتا ہے کہ سیکیورٹی کو یقینی بنانے کے لیے بوجھل متغیر ریکارڈ کی ضرورت کے بغیر پوری منطق کو مکمل طور پر عمل میں لایا جائے۔
کوڈ کا ٹکڑا درج ذیل ہے:
You can learn more about the trading part of the course https://github.com/WTFAcademy/WTF-Dapp/blob/main/P106_PoolSwap/readme.md پر .
معلومات کو منتقل کرنے کے لیے مستثنیات کا استعمال کریں اور لین دین کے تخمینے کو لاگو کرنے کے لیے کیچ کرنے کی کوشش کریں۔
Uniswap کوڈ کا حوالہ دیتے وقت، ہم نے اسے اس میں پایا https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/Quoter.sol معاہدہ، Uniswap V3 پول کا سویپ طریقہ ٹرائی کیچ میں لپیٹ کر اس پر عمل درآمد کیا گیا:
ایسا کیوں ہے؟ کیونکہ ہمیں لین دین کے لیے درکار ٹوکنز کا تخمینہ لگانے کے لیے سویپ کے طریقہ کار کی تقلید کرنے کی ضرورت ہے، لیکن چونکہ تخمینہ کے دوران ٹوکن کا تبادلہ درحقیقت نہیں ہوگا، اس لیے غلطی کی اطلاع دی جائے گی۔ Uniswap میں، یہ ٹرانزیکشن کے کال بیک فنکشن میں ایک خاص ایرر ڈالتا ہے، پھر اس ایرر کو پکڑتا ہے اور ایرر میسج سے مطلوبہ معلومات کو پارس کرتا ہے۔
یہ ایک ہیک کی طرح لگتا ہے، لیکن یہ بہت عملی بھی ہے۔ اس طرح، تخمینہ شدہ لین دین کی ضروریات کے مطابق سویپ کے طریقہ کار میں ترمیم کرنے کی ضرورت نہیں ہے، اور منطق آسان ہے۔ ہمارے کورس میں، ہم معاہدے کو نافذ کرنے کے لیے اس منطق کا بھی حوالہ دیتے ہیں۔ https://github.com/WTFAcademy/WTF-Dapp/blob/main/demo-contract/contracts/wtfswap/SwapRouter.sol .
صحت سے متعلق مسائل کو حل کرنے کے لیے بڑی تعداد کا استعمال
Uniswap کوڈ میں حساب کی بہت سی منطقیں ہیں، جیسے کہ موجودہ قیمت اور لیکویڈیٹی کے مطابق ایکسچینج شدہ ٹوکن کا حساب لگانا۔ اس عمل میں، ہمیں ڈویژن کی کارروائیوں کے دوران درستگی کھونے سے گریز کرنا چاہیے۔ Uniswap میں، حساب کتاب کا عمل اکثر استعمال کرتا ہے۔
کوڈ درج ذیل ہے (قیمت اور لیکویڈیٹی کے ذریعے لین دین کے لیے درکار ٹوکنز کی تعداد کا حساب لگانا):
جیسا کہ آپ دیکھ سکتے ہیں، سب سے پہلے، Uniswap میں قیمت کو 2^96 کے مربع جڑ سے ضرب دیا جاتا ہے (اوپر کے کوڈ میں sqrtRatioAX 96 اور sqrtRatioBX 96 سے مماثل ہے)، اور پھر لیویڈیٹی لیکویڈیٹی کو عدد 1 کا حساب لگانے کے لیے بائیں منتقل کر دیا جائے گا۔ .
بے شک، کوئی بات نہیں، نظریہ میں درستگی کا نقصان اب بھی ہوگا، لیکن اس صورت میں سب سے چھوٹی اکائی کھو گئی ہے، جو قابل قبول ہے۔
مزید معلومات کے لیے، آپ اس کورس سے مزید جان سکتے ہیں۔ https://github.com/WTFAcademy/WTF-Dapp/blob/main/P106_PoolSwap/readme.md پر .
شیئر کا استعمال کرکے آمدنی کا حساب لگائیں۔
Uniswap میں، ہمیں LP (لیکویڈیٹی فراہم کرنے والے) کی فیس آمدنی کو ریکارڈ کرنے کی ضرورت ہے۔ ظاہر ہے، ہم ہر ٹرانزیکشن میں ہر ایل پی کے لیے فیس ریکارڈ نہیں کر سکتے، جس سے بہت زیادہ گیس استعمال ہو گی۔ تو اس سے کیسے نمٹا جائے؟
Uniswap میں، ہم دیکھ سکتے ہیں کہ درج ذیل ڈھانچہ ہے۔ defiپوزیشن میں ned:
اس میں feeGrowthInside0LastX128 اور feeGrowthInside1LastX128 شامل ہیں، جو اس فیس کو ریکارڈ کرتے ہیں جو ہر لیکویڈیٹی کو موصول ہونی چاہیے جب ہر پوزیشن (پوزیشن) نے آخری بار فیس واپس لی تھی۔
آسان الفاظ میں، مجھے صرف کل فیس ریکارڈ کرنے کی ضرورت ہے اور ہر لیکویڈیٹی کے لیے کتنی فیس مختص کی جانی چاہیے، تاکہ جب ایل پی فیس واپس لے، تو وہ حساب لگا سکے کہ وہ اپنے ہاتھ میں موجود لیکویڈیٹی کے مطابق کتنی فیس نکال سکتا ہے۔ یہ اس طرح ہے کہ اگر آپ کمپنی کا اسٹاک رکھتے ہیں، جب آپ اسٹاک کی آمدنی واپس لینا چاہتے ہیں، تو آپ کو صرف کمپنی کی تاریخی آمدنی فی حصص اور آمدنی کے بارے میں جاننے کی ضرورت ہے جب آپ آخری بار واپس لے گئے تھے۔
پہلے، ہم نے مضمون میں stETH منافع کے حساب کتاب کا طریقہ متعارف کرایا تھا۔ سمجھدار معاہدہ ڈیزائن، دیکھیں کہ کس طرح STETH روزانہ کی بنیاد پر منافع خود بخود تقسیم کرتا ہے؟ مستحکم دلچسپی حاصل کرنے کے لیے اپنے ETH کو اسٹیکنگ میں حصہ لینے دیں۔ ، اور اصول اسی طرح ہے.
تمام معلومات کو سلسلہ سے حاصل کرنے کی ضرورت نہیں ہے۔
آن چین اسٹوریج نسبتاً مہنگا ہے، اس لیے ہمیں تمام معلومات کو آن چین اسٹور کرنے یا اسے چین سے حاصل کرنے کی ضرورت نہیں ہے۔ مثال کے طور پر، Uniswap فرنٹ اینڈ ویب سائٹ کے ذریعہ بلائے گئے بہت سے انٹرفیس روایتی Web2 انٹرفیس ہیں۔
ٹرانزیکشن پولز کی فہرست، ٹرانزیکشن پولز کے بارے میں معلومات وغیرہ سب کو عام ڈیٹا بیس میں محفوظ کیا جا سکتا ہے۔ کچھ کو سلسلہ سے باقاعدگی سے ہم آہنگ کرنے کی ضرورت ہو سکتی ہے، لیکن ہمیں متعلقہ ڈیٹا حاصل کرنے کے لیے چین یا نوڈ سروس کے ذریعے فراہم کردہ RPC انٹرفیس کو حقیقی وقت میں کال کرنے کی ضرورت نہیں ہے۔
بلاشبہ، بہت سے بلاکچین PRC سپلائرز اب کچھ جدید انٹرفیس فراہم کرتے ہیں، آپ کچھ ڈیٹا تیز اور سستے طریقے سے حاصل کر سکتے ہیں، جو کہ اسی طرح کا ہے۔ مثال کے طور پر، ZAN ایک مخصوص صارف کے تحت تمام NFTs حاصل کرنے کے مترادف ایک انٹرفیس فراہم کرتا ہے۔ اس معلومات کو ظاہر ہے کہ کارکردگی اور کارکردگی کو بہتر بنانے کے لیے محفوظ کیا جا سکتا ہے۔ آپ ملاحظہ کر سکتے ہیں۔ https://zan.top/service/advance-api مزید حاصل کرنے کے لئے.
بلاشبہ، کلیدی لین دین کو سلسلہ وار کیا جانا چاہیے۔
معاہدوں کو تقسیم کرنے اور موجودہ معیاری معاہدوں جیسے ERC 721 کو استعمال کرنے کا طریقہ سیکھیں۔
ایک پروجیکٹ میں ایک سے زیادہ اصل میں تعینات معاہدوں پر مشتمل ہوسکتا ہے۔ یہاں تک کہ اگر اصل میں صرف ایک معاہدہ ہے، ہمارا کوڈ وراثت کے ذریعے دیکھ بھال کے لیے معاہدے کو متعدد معاہدوں میں تقسیم کر سکتا ہے۔
مثال کے طور پر، Uniswap میں، the https://github.com/Uniswap/v3-periphery/blob/main/contracts/NonfungiblePositionManager.sol معاہدہ بہت سے معاہدوں کا وارث ہے، اور کوڈ مندرجہ ذیل ہے:
اور جب آپ ERC 721 پرمٹ معاہدے کے نفاذ کو دیکھیں گے تو آپ کو معلوم ہوگا کہ یہ @openzeppelin/contracts/token/ERC 721/ERC 721.sol معاہدہ کا براہ راست استعمال کرتا ہے۔ اس سے NFT کے ذریعے عہدوں کا انتظام کرنا آسان ہو جاتا ہے، اور دوسری طرف، یہ کنٹریکٹ ڈویلپمنٹ کی کارکردگی کو بہتر بنانے کے لیے موجودہ معیاری معاہدوں کا بھی استعمال کر سکتا ہے۔
ہمارے کورس میں، آپ سیکھ سکتے ہیں۔ https://github.com/WTFAcademy/WTF-Dapp/blob/main/P 108 _PositionManager /readme.md اور عہدوں کا انتظام کرنے کے لیے ایک سادہ ERC 721 معاہدہ تیار کرنے کی کوشش کریں۔
خلاصہ کریں۔
اس سے کوئی فرق نہیں پڑتا ہے کہ آپ کتنے ہی مضامین پڑھتے ہیں، یہ اتنا عملی نہیں جتنا کہ اسے خود تیار کرنا ہے۔ وکندریقرت تبادلے کے ایک آسان ورژن کو خود نافذ کرنے کی کوشش کرنے کے عمل میں، آپ Uniswap کوڈ کے نفاذ کے بارے میں گہری سمجھ حاصل کر سکتے ہیں اور مزید علمی نکات سیکھ سکتے ہیں جن کا تجربہ آپ کو حقیقی منصوبوں میں ہوگا۔
WTF-DApp کورس ایک اوپن سورس کورس ہے جسے ZAN ڈویلپر کمیونٹی اور WTF اکیڈمی ڈویلپر کمیونٹی نے مشترکہ طور پر مکمل کیا ہے۔ اگر آپ Web3 اور Defi پروجیکٹ ڈیولپمنٹ میں بھی دلچسپی رکھتے ہیں تو آپ ہمارے پریکٹیکل کورس سے رجوع کر سکتے ہیں۔ https://github.com/WTFAcademy/WTF-Dapp اور تبادلے کا ایک آسان ورژن مرحلہ وار مکمل کریں۔ مجھے یقین ہے کہ یہ یقینی طور پر آپ کی مدد کرے گا۔
یہ مضمون فشر (X account @yudao 1024 ) ZAN ٹیم (X اکاؤنٹ @zan_team ).
یہ مضمون انٹرنیٹ سے لیا گیا ہے: Web3 Beginner Series: Contract Development Tips جو میں نے Uniswap کوڈ سے سیکھا
متعلقہ: اگلا 100x منی تلاش کرنا: ChatGPT کے ساتھ Pump.fun پر پیسہ کیسے کمایا جائے
اصل مصنف: CMed ایڈیٹرز نوٹ: پمپ مارکیٹ میں، ہر لمحہ نئے ٹوکن لانچ کیے جا رہے ہیں۔ جبکہ مارکیٹ میں دوسرے لوگ اب بھی گھاس کے ڈھیر میں سوئی تلاش کر رہے ہیں تاکہ ایک میمی کوائن تلاش کیا جا سکے جو اضافی منافع کما سکے، @AlphaBatcher پہلے ہی Chatgpt کو خودکار درستگی کی تجارت حاصل کرنے کے لیے استعمال کر چکا ہے۔ اس طریقہ کار کے لیے زیادہ سرمایہ یا مضبوط پروگرامنگ کی مہارت کی ضرورت نہیں ہے۔ ہم اپنی memecoin سرمایہ کاری کو بااختیار بنانے کے لیے AI کا استعمال کر سکتے ہیں۔ مندرجہ ذیل اصل متن ہے (آسان پڑھنے اور سمجھنے کے لیے، اصل مواد کو حذف اور دوبارہ ترتیب دیا گیا ہے): میں نے ChatGPT اور PumpFun کا استعمال کرتے ہوئے صرف 1 منٹ میں $2300 بنایا ہے۔ جب کہ دوسرے لوگ اب بھی میمیکوئنز میں مواقع تلاش کر رہے تھے، میں پہلے سے ہی درست ٹریڈنگ کو خودکار کر رہا تھا۔ شروع کرنے کے لیے آپ کو صرف 0.2 SOL کی ضرورت ہے، اور پروگرامنگ کی کوئی مہارت نہیں ہے…