Solidity তে constructor এবং destructor দুটি গুরুত্বপূর্ণ কনসেপ্ট যা স্মার্ট কন্ট্রাক্টের জীবনের প্রথম এবং শেষ মুহূর্তে কার্যক্রম নিয়ন্ত্রণ করে। এগুলি স্মার্ট কন্ট্রাক্টের ইনিশিয়ালাইজেশন এবং ডিপ্লয়মেন্টের সময়কার কাজগুলি নির্ধারণ করে এবং সম্পাদন করে। যদিও Solidity তে destructor এর প্রথাগত ব্যবহার নেই, তবুও আমরা এর ধারণা এবং কার্যকারিতা ব্যাখ্যা করব।
1. Constructor
Constructor একটি বিশেষ ধরনের ফাংশন যা কন্ট্রাক্ট ডিপ্লয় করার সময় একবারই রান হয় এবং কন্ট্রাক্টের প্রাথমিক অবস্থান বা মান ইনিশিয়ালাইজ করতে ব্যবহৃত হয়। এটি কন্ট্রাক্টের ভিতরের প্রপার্টি সেট করা, অন্যান্য কন্ট্রাক্টের সাথে সংযোগ স্থাপন বা শর্তাদি প্রাথমিকভাবে নির্ধারণ করার জন্য ব্যবহৃত হয়।
Constructor এর বৈশিষ্ট্য:
- এটি কেবলমাত্র একবার কন্ট্রাক্টের ডিপ্লয়মেন্টের সময় কার্যকর হয়।
- এটি সাধারণত কন্ট্রাক্টের প্রপার্টি বা মান ইনিশিয়ালাইজ করার জন্য ব্যবহৃত হয়।
- Solidity তে কনস্ট্রাক্টরের নাম কন্ট্রাক্টের নামের সাথে মিলে যেতে হবে।
উদাহরণ:
pragma solidity ^0.8.0;
contract MyContract {
uint public value;
address public owner;
// Constructor ফাংশন
constructor(uint _value) {
value = _value; // value ইনিশিয়ালাইজ করা
owner = msg.sender; // কন্ট্রাক্টের মালিকের ঠিকানা সংরক্ষণ করা
}
function getValue() public view returns (uint) {
return value;
}
function getOwner() public view returns (address) {
return owner;
}
}ব্যাখ্যা:
- এই কন্ট্রাক্টে
constructorফাংশনটি ডিপ্লয়মেন্টের সময়valueএবংownerপ্রপার্টি ইনিশিয়ালাইজ করছে। valueকন্ট্রাক্টের সাথে দেয়া একটি আর্গুমেন্ট দিয়ে সেট করা হচ্ছে।ownerকন্ট্রাক্টের ডিপ্লয়ারের ঠিকানা (যাmsg.senderদ্বারা নির্ধারিত হয়) সংরক্ষণ করছে।
2. Destructor
Destructor হল একটি কনসেপ্ট যা অন্যান্য প্রোগ্রামিং ভাষায় ব্যবহৃত হয়, যেমন C++ বা Python, যেখানে এটি অবজেক্টের জীবন শেষ হলে স্বয়ংক্রিয়ভাবে এক্সিকিউট হয় এবং মেমরি বা রিসোর্স ক্লিন আপ করে। কিন্তু Solidity তে destructor এর মতো একটি নির্দিষ্ট ফাংশন নেই। তবে, Solidity তে কন্ট্রাক্টকে self-destruct ফাংশনের মাধ্যমে পুরোপুরি ধ্বংস বা অদৃশ্য করা সম্ভব।
self-destruct ফাংশনটি ব্যবহৃত হলে কন্ট্রাক্টটি ব্লকচেইন থেকে মুছে ফেলা হয় এবং এর সমস্ত অবশিষ্ট টাকা পাঠিয়ে দেয়া হয় একটি নির্দিষ্ট ঠিকানায়।
self-destruct ফাংশন উদাহরণ:
pragma solidity ^0.8.0;
contract SelfDestructExample {
address public owner;
constructor() {
owner = msg.sender; // কন্ট্রাক্টের মালিকের ঠিকানা সংরক্ষণ
}
function destroyContract() public {
require(msg.sender == owner, "Only the owner can destroy the contract.");
selfdestruct(payable(owner)); // কন্ট্রাক্ট ধ্বংস করা এবং মালিকের কাছে সব তহবিল পাঠানো
}
}ব্যাখ্যা:
selfdestructফাংশনটি কন্ট্রাক্টটি ব্লকচেইন থেকে মুছে ফেলবে এবং মালিকের ঠিকানায় সমস্ত তহবিল পাঠিয়ে দেবে।- এই ফাংশনটি কেবলমাত্র কন্ট্রাক্টের মালিক (যার ঠিকানা
ownerদ্বারা সংরক্ষিত) কল করতে পারবে, যেটিrequireদ্বারা নিশ্চিত করা হয়েছে।
self-destruct এর বৈশিষ্ট্য:
- এটি কন্ট্রাক্টের সম্পূর্ণ মুছে ফেলা এবং তার তহবিল প্রেরণের জন্য ব্যবহৃত হয়।
- এটি ব্যবহার করা হলে কন্ট্রাক্ট আর ব্লকচেইনে থাকবে না এবং সম্পূর্ণভাবে ধ্বংস হয়ে যাবে।
- এটি শুধুমাত্র মালিক বা নির্ধারিত ব্যবহারকারী দ্বারা কল করা যেতে পারে।
3. Constructor এবং Destructor এর মধ্যে পার্থক্য
| বিশেষত্ব | Constructor | Destructor (self-destruct) |
|---|---|---|
| ফাংশনের কার্যকারিতা | কন্ট্রাক্টের ইনিশিয়াল মান সেট করা, প্রপার্টি ইনিশিয়ালাইজ করা | কন্ট্রাক্ট মুছে ফেলা, কন্ট্রাক্টের সম্পদ প্রেরণ করা |
| ফাংশন কল করা হয় | কন্ট্রাক্ট ডিপ্লয় করার সময় একবারই কল হয় | কন্ট্রাক্টের ধ্বংসের জন্য ব্যবহৃত, সাধারণত মালিকের দ্বারা |
| ব্যবহার | কন্ট্রাক্টের প্রথম অবস্থান নির্ধারণ করতে ব্যবহৃত | কন্ট্রাক্ট ধ্বংস ও তহবিল প্রেরণের জন্য ব্যবহৃত |
সারাংশ
Constructor এবং Destructor Solidity তে গুরুত্বপূর্ণ ভূমিকা পালন করে। Constructor কন্ট্রাক্টের প্রাথমিক মান এবং শর্ত নির্ধারণ করে, যখন Destructor (প্রকৃতপক্ষে self-destruct) কন্ট্রাক্ট ধ্বংস করে এবং অবশিষ্ট তহবিল অন্য একটি ঠিকানায় পাঠিয়ে দেয়। Solidity তে একটি নির্দিষ্ট Destructor ফাংশন নেই, তবে self-destruct এর মাধ্যমে কন্ট্রাক্টের অবসান ঘটানো যায়। Constructor একবার ডিপ্লয়মেন্টের সময় কার্যকরী হয়, তবে self-destruct কন্ট্রাক্টের অবসান ঘটানোর জন্য ব্যবহৃত হয় যখন তা আর প্রয়োজনীয় থাকে না।
Read more