اسمارٹ معاہدے کی لائبریریاں
صفحہ کی آخری تازہ کاری: 21 اگست، 2025
آپ کو اپنے پروجیکٹ میں ہر اسمارٹ معاہدے کو شروع سے لکھنے کی ضرورت نہیں ہے۔ بہت سی اوپن سورس اسمارٹ معاہدے کی لائبریریاں دستیاب ہیں جو آپ کے پروجیکٹ کے لیے دوبارہ قابل استعمال بلڈنگ بلاکس فراہم کرتی ہیں جو آپ کو پہیے کو دوبارہ ایجاد کرنے سے بچا سکتی ہیں۔
شرائط
اسمارٹ معاہدے کی لائبریریوں میں جانے سے پہلے، اسمارٹ معاہدے کی ساخت کی اچھی سمجھ ہونا ایک اچھا خیال ہے۔ اگر آپ نے ابھی تک ایسا نہیں کیا ہے تو اسمارٹ معاہدے کی اناٹومی پر جائیں۔
ایک لائبریری میں کیا ہے
آپ عام طور پر اسمارٹ معاہدے کی لائبریریوں میں دو قسم کے بلڈنگ بلاکس تلاش کر سکتے ہیں: دوبارہ قابل استعمال طرز عمل جنہیں آپ اپنے معاہدوں میں شامل کر سکتے ہیں، اور مختلف معیارات کے نفاذ۔
طرز عمل
اسمارٹ معاہدے لکھتے وقت، اس بات کا ایک اچھا موقع ہے کہ آپ خود کو بار بار ایک جیسے پیٹرن لکھتے ہوئے پائیں گے، جیسے کسی معاہدے میں محفوظ کارروائیوں کو انجام دینے کے لیے ایک admin پتہ تفویض کرنا، یا کسی غیر متوقع مسئلے کی صورت میں ایک ہنگامی pause بٹن شامل کرنا۔
اسمارٹ معاہدے کی لائبریریاں عام طور پر ان طرز عمل کے دوبارہ قابل استعمال نفاذ کو لائبریریوں (opens in a new tab) کے طور پر یا Solidity میں وراثت (opens in a new tab) کے ذریعے فراہم کرتی ہیں۔
مثال کے طور پر، ذیل میں OpenZeppelin کنٹریکٹس لائبریری (opens in a new tab) سے Ownable معاہدے (opens in a new tab) کا ایک آسان ورژن ہے، جو کسی پتے کو معاہدے کے مالک کے طور پر نامزد کرتا ہے، اور کسی طریقے تک رسائی کو صرف اس مالک تک محدود کرنے کے لیے ایک موڈیفائر فراہم کرتا ہے۔
1contract Ownable {2 address public owner;34 constructor() internal {5 owner = msg.sender;6 }78 modifier onlyOwner() {9 require(owner == msg.sender, "Ownable: caller is not the owner");10 _;11 }12}سب دکھائیںاپنے معاہدے میں اس طرح کا بلڈنگ بلاک استعمال کرنے کے لیے، آپ کو پہلے اسے امپورٹ کرنا ہوگا، اور پھر اپنے معاہدوں میں اس سے توسیع کرنی ہوگی۔ یہ آپ کو اپنے فنکشنز کو محفوظ بنانے کے لیے بیس Ownable معاہدے کے ذریعے فراہم کردہ موڈیفائر کو استعمال کرنے کی اجازت دے گا۔
1import ".../Ownable.sol"; // امپورٹ شدہ لائبریری کا پاتھ23contract MyContract is Ownable {4 // درج ذیل فنکشن کو صرف مالک ہی کال کر سکتا ہے5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}ایک اور مقبول مثال SafeMath (opens in a new tab) یا DsMath (opens in a new tab) ہے۔ یہ لائبریریاں ہیں (بیس معاہدوں کے برعکس) جو اوور فلو چیک کے ساتھ ریاضی کے فنکشنز فراہم کرتی ہیں، جو زبان کے ذریعے فراہم نہیں کیے جاتے ہیں۔ اپنے معاہدے کو اوور فلو سے بچانے کے لیے مقامی ریاضیاتی کارروائیوں کے بجائے ان میں سے کسی بھی لائبریری کا استعمال کرنا ایک اچھا عمل ہے، جس کے تباہ کن نتائج ہو سکتے ہیں!
معیارات
کمپوزیبلیٹی اور انٹرآپریبلٹی کو آسان بنانے کے لیے، Ethereum کمیونٹی نے ERCs کی شکل میں کئی معیارات کی وضاحت کی ہے۔ آپ ان کے بارے میں معیارات سیکشن میں مزید پڑھ سکتے ہیں۔
جب آپ اپنے معاہدوں کے حصے کے طور پر ERC کو شامل کرتے ہیں، تو اپنا خود کا رول آؤٹ کرنے کی کوشش کرنے کے بجائے معیاری نفاذ کو تلاش کرنا ایک اچھا خیال ہے۔ بہت سی اسمارٹ معاہدے کی لائبریریاں سب سے زیادہ مقبول ERCs کے لیے نفاذ شامل کرتی ہیں۔ مثال کے طور پر، ہر جگہ موجود ERC20 فنجیبل ٹوکن اسٹینڈرڈ HQ20 (opens in a new tab)، DappSys (opens in a new tab) اور OpenZeppelin (opens in a new tab) میں پایا جا سکتا ہے۔ مزید برآں، کچھ ERCs خود ERC کے حصے کے طور پر کینونیکل نفاذ بھی فراہم کرتے ہیں۔
یہ بات قابل ذکر ہے کہ کچھ ERCs اسٹینڈ الون نہیں ہیں، بلکہ دوسرے ERCs میں اضافے ہیں۔ مثال کے طور پر، ERC2612 (opens in a new tab) اس کی قابل استعمالی کو بہتر بنانے کے لیے ERC20 میں ایک توسیع کا اضافہ کرتا ہے۔
لائبریری کیسے شامل کریں
اپنے پروجیکٹ میں اسے شامل کرنے کے طریقے سے متعلق مخصوص ہدایات کے لیے ہمیشہ اس لائبریری کی دستاویزات کا حوالہ دیں جسے آپ شامل کر رہے ہیں۔ کئی Solidity معاہدے کی لائبریریاں npm کا استعمال کرتے ہوئے پیک کی جاتی ہیں، لہذا آپ انہیں صرف npm install کر سکتے ہیں۔ معاہدوں کو کمپائل کرنے کے لیے زیادہ تر ٹولز آپ کے node_modules میں اسمارٹ معاہدے کی لائبریریوں کو دیکھیں گے، لہذا آپ درج ذیل کام کر سکتے ہیں:
1// یہ آپ کے node_modules سے @openzeppelin/contracts لائبریری کو لوڈ کرے گا2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}آپ جو بھی طریقہ استعمال کرتے ہیں، لائبریری شامل کرتے وقت، ہمیشہ زبان کے ورژن پر نظر رکھیں۔ مثال کے طور پر، اگر آپ اپنے معاہدے Solidity 0.5 میں لکھ رہے ہیں تو آپ Solidity 0.6 کے لیے لائبریری استعمال نہیں کر سکتے۔
کب استعمال کریں
اپنے پروجیکٹ کے لیے اسمارٹ معاہدے کی لائبریری استعمال کرنے کے کئی فائدے ہیں۔ سب سے پہلے اور سب سے اہم بات یہ ہے کہ یہ آپ کو استعمال کے لیے تیار بلڈنگ بلاکس فراہم کرکے آپ کا وقت بچاتا ہے جنہیں آپ اپنے سسٹم میں شامل کرسکتے ہیں، بجائے اس کے کہ آپ کو خود انہیں کوڈ کرنا پڑے۔
سیکورٹی بھی ایک بڑا پلس ہے۔ اوپن سورس اسمارٹ معاہدے کی لائبریریوں کی بھی اکثر گہری جانچ پڑتال کی جاتی ہے۔ چونکہ بہت سے پروجیکٹس ان پر انحصار کرتے ہیں، کمیونٹی کی طرف سے انہیں مسلسل جائزے میں رکھنے کے لیے ایک مضبوط ترغیب ہے۔ دوبارہ قابل استعمال معاہدے کی لائبریریوں کے مقابلے میں ایپلیکیشن کوڈ میں غلطیاں تلاش کرنا بہت زیادہ عام ہے۔ کچھ لائبریریاں اضافی سیکورٹی کے لیے بیرونی آڈٹ (opens in a new tab) سے بھی گزرتی ہیں۔
تاہم، اسمارٹ معاہدے کی لائبریریوں کا استعمال آپ کے پروجیکٹ میں ایسے کوڈ کو شامل کرنے کا خطرہ رکھتا ہے جس سے آپ واقف نہیں ہیں۔ کسی معاہدے کو امپورٹ کرنا اور اسے براہ راست اپنے پروجیکٹ میں شامل کرنا پرکشش ہے، لیکن اس بات کی اچھی سمجھ کے بغیر کہ وہ معاہدہ کیا کرتا ہے، آپ غیر متوقع رویے کی وجہ سے نادانستہ طور پر اپنے سسٹم میں کوئی مسئلہ پیدا کر سکتے ہیں۔ ہمیشہ اس بات کو یقینی بنائیں کہ آپ جو کوڈ امپورٹ کر رہے ہیں اس کی دستاویزات پڑھیں، اور پھر اسے اپنے پروجیکٹ کا حصہ بنانے سے پہلے خود کوڈ کا جائزہ لیں!
آخر میں، جب یہ فیصلہ کریں کہ آیا لائبریری کو شامل کرنا ہے، تو اس کے مجموعی استعمال پر غور کریں۔ ایک وسیع پیمانے پر اپنائے جانے والے کے فوائد یہ ہیں کہ اس کی ایک بڑی کمیونٹی ہے اور مسائل کے لیے اس پر زیادہ نظریں ہیں۔ اسمارٹ معاہدوں کے ساتھ تعمیر کرتے وقت سیکورٹی آپ کی بنیادی توجہ ہونی چاہیے!
متعلقہ ٹولز
OpenZeppelin Contracts - محفوظ اسمارٹ معاہدے کی ڈیولپمنٹ کے لیے سب سے مشہور لائبریری۔
DappSys - اسمارٹ معاہدوں کے لیے محفوظ، سادہ، لچکدار بلڈنگ بلاکس۔
HQ20 - ایک Solidity پروجیکٹ جس میں معاہدے، لائبریریاں اور مثالیں ہیں جو آپ کو حقیقی دنیا کے لیے مکمل خصوصیات والی تقسیم شدہ ایپلیکیشنز بنانے میں مدد کرتی ہیں۔
thirdweb Solidity SDK - کسٹم اسمارٹ معاہدوں کو موثر طریقے سے بنانے کے لیے درکار ٹولز فراہم کرتا ہے
متعلقہ ٹیوٹوریلز
- Ethereum ڈیولپرز کے لیے سیکورٹی کے تحفظات – اسمارٹ معاہدے بناتے وقت سیکورٹی کے تحفظات پر ایک ٹیوٹوریل، بشمول لائبریری کا استعمال۔
- ERC-20 ٹوکن اسمارٹ معاہدے کو سمجھیں -ERC20 معیار پر ٹیوٹوریل، جو متعدد لائبریریوں کے ذریعہ فراہم کیا گیا ہے۔
مزید پڑھیں
کسی کمیونٹی وسیلے کے بارے میں جانتے ہیں جس نے آپ کی مدد کی ہو؟ اس صفحہ میں ترمیم کریں اور اسے شامل کریں!