স্মার্ট কন্ট্র্যাক্ট লাইব্রেরিসমূহ
পৃষ্ঠাটি সর্বশেষ আপডেট করা হয়েছে: ২১ আগস্ট, ২০২৫
আপনার প্রজেক্টের প্রতিটি স্মার্ট কন্ট্র্যাক্ট স্ক্র্যাচ থেকে লেখার দরকার নেই। অনেক ওপেন সোর্স স্মার্ট কন্ট্র্যাক্ট লাইব্রেরি রয়েছে যা আপনার প্রজেক্টের জন্য পুনঃব্যবহারযোগ্য বিল্ডিং ব্লক সরবরাহ করে যা আপনাকে নতুন করে চাকা আবিষ্কার করা থেকে বাঁচাতে পারে।
পূর্বশর্ত
স্মার্ট কন্ট্র্যাক্ট লাইব্রেরিতে ঝাঁপিয়ে পড়ার আগে, একটি স্মার্ট কন্ট্র্যাক্টের গঠন সম্পর্কে একটি ভালো ধারণা থাকা জরুরি। আপনি যদি এখনও এটি না করে থাকেন তাহলে স্মার্ট কন্ট্র্যাক্টের অ্যানাটমি তে যান।
একটি লাইব্রেরিতে কী আছে
আপনি সাধারণত স্মার্ট কন্ট্র্যাক্ট লাইব্রেরিতে দুই ধরণের বিল্ডিং ব্লক খুঁজে পেতে পারেন: পুনঃব্যবহারযোগ্য আচরণ যা আপনি আপনার কন্ট্র্যাক্টে যোগ করতে পারেন, এবং বিভিন্ন স্ট্যান্ডার্ডের বাস্তবায়ন।
আচরণ
স্মার্ট কন্ট্র্যাক্ট লেখার সময়, একটি ভালো সম্ভাবনা রয়েছে যে আপনি নিজেকে বারবার একই ধরনের প্যাটার্ন লিখতে দেখবেন, যেমন একটি কন্ট্র্যাক্টে সুরক্ষিত অপারেশন চালানোর জন্য একটি admin অ্যাড্রেস বরাদ্দ করা, অথবা একটি অপ্রত্যাশিত সমস্যার ক্ষেত্রে একটি জরুরি pause বোতাম যোগ করা।
স্মার্ট কন্ট্র্যাক্ট লাইব্রেরি সাধারণত এই আচরণগুলির পুনঃব্যবহারযোগ্য বাস্তবায়ন Solidity-তে লাইব্রেরিopens in a new tab হিসাবে বা ইনহেরিটেন্স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"; // Path to the imported library23contract MyContract is Ownable {4 // The following function can only be called by the owner5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}আরেকটি জনপ্রিয় উদাহরণ হল SafeMathopens in a new tab বা DsMathopens in a new tab। এগুলি হল লাইব্রেরি (বেস কন্ট্র্যাক্টের বিপরীতে) যা ওভারফ্লো চেক সহ গাণিতিক ফাংশন সরবরাহ করে, যা ভাষা দ্বারা সরবরাহ করা হয় না। আপনার কন্ট্র্যাক্টকে ওভারফ্লো থেকে রক্ষা করার জন্য নেটিভ গাণিতিক ক্রিয়াকলাপের পরিবর্তে এই লাইব্রেরিগুলির যেকোনো একটি ব্যবহার করা একটি ভালো অভ্যাস, যার বিপর্যয়কর পরিণতি হতে পারে!
স্ট্যান্ডার্ড
কম্পোজেবিলিটি এবং ইন্টারঅপারেবিলিটি সহজতর করার জন্য, Ethereum কমিউনিটি ERC আকারে বেশ কয়েকটি স্ট্যান্ডার্ড সংজ্ঞায়িত করেছে। আপনি স্ট্যান্ডার্ড বিভাগে তাদের সম্পর্কে আরও পড়তে পারেন।
আপনার কন্ট্র্যাক্টের অংশ হিসাবে একটি ERC অন্তর্ভুক্ত করার সময়, নিজের তৈরি করার চেষ্টা না করে স্ট্যান্ডার্ড বাস্তবায়ন খোঁজা একটি ভালো ধারণা। অনেক স্মার্ট কন্ট্র্যাক্ট লাইব্রেরিতে সবচেয়ে জনপ্রিয় ERC-গুলির জন্য বাস্তবায়ন অন্তর্ভুক্ত রয়েছে। উদাহরণস্বরূপ, সর্বত্র বিদ্যমান ERC20 ফাঞ্জিবল টোকেন স্ট্যান্ডার্ড HQ20opens in a new tab, DappSysopens in a new tab এবং OpenZeppelinopens in a new tab-এ পাওয়া যাবে। এছাড়াও, কিছু ERC নিজেই ERC-এর অংশ হিসাবে ক্যানোনিকাল বাস্তবায়ন প্রদান করে।
এটি উল্লেখ করার মতো যে কিছু ERC স্বতন্ত্র নয়, তবে অন্যান্য ERC-এর সংযোজন। উদাহরণস্বরূপ, ERC2612opens in a new tab এর ব্যবহারযোগ্যতা উন্নত করার জন্য ERC20-তে একটি এক্সটেনশন যোগ করে।
কীভাবে একটি লাইব্রেরি যোগ করবেন
আপনার প্রজেক্টে কীভাবে অন্তর্ভুক্ত করবেন তার নির্দিষ্ট নির্দেশাবলীর জন্য আপনি যে লাইব্রেরিটি অন্তর্ভুক্ত করছেন তার নথিপত্র দেখুন। বেশ কয়েকটি Solidity কন্ট্র্যাক্ট লাইব্রেরি npm ব্যবহার করে প্যাকেজ করা হয়, তাই আপনি শুধু npm install করে সেগুলিকে ইনস্টল করতে পারেন। কন্ট্র্যাক্ট কম্পাইল করার জন্য বেশিরভাগ টুল আপনার node_modules-এ স্মার্ট কন্ট্র্যাক্ট লাইব্রেরি খুঁজবে, তাই আপনি নিম্নলিখিতটি করতে পারেন:
1// This will load the @openzeppelin/contracts library from your node_modules2import "@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 স্ট্যান্ডার্ডের উপর টিউটোরিয়াল।
আরও পড়ুন
এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!