Solidity তে Events একটি অত্যন্ত গুরুত্বপূর্ণ কনসেপ্ট যা স্মার্ট কন্ট্রাক্টের মধ্যে বিভিন্ন কার্যক্রমের পরিবর্তন বা তথ্য জানাতে ব্যবহৃত হয়। ইভেন্টগুলি ব্লকচেইনে লগ (log) হিসাবে সংরক্ষিত থাকে এবং বাইরের ড্যাপ (dApp) বা ইউজার ইন্টারফেস (UI) সহজেই এই ইভেন্টগুলি ট্র্যাক করতে পারে।
Events স্মার্ট কন্ট্রাক্টের কার্যক্রমের নির্দিষ্ট পরিবর্তন বা শর্ত অনুযায়ী বাইরের অ্যাপ্লিকেশন বা ইউজার ইন্টারফেসকে জানানোর জন্য ব্যবহৃত হয়। এর মাধ্যমে কন্ট্রাক্টের কাজ বা ট্রানজেকশন পর্যালোচনা করা সহজ হয়, বিশেষ করে যখন স্মার্ট কন্ট্রাক্টের ফলাফল দ্রুত বা কার্যকরীভাবে বাইরের সিস্টেমে পাঠানোর প্রয়োজন হয়।
1. Event Declaration
Solidity তে ইভেন্ট ডিক্লেয়ার করার জন্য event কীওয়ার্ড ব্যবহার করা হয়। ইভেন্টের নাম এবং যেসব প্যারামিটার প্রয়োজন, সেগুলি ডিক্লেয়ার করতে হয়।
Event Declaration এর সাধারণ সিনট্যাক্স:
event EventName(address indexed sender, uint value);ব্যাখ্যা:
EventNameহলো ইভেন্টের নাম।indexedকীওয়ার্ডটি ফিল্ডকে ইনডেক্সড করে, যাতে পরবর্তীতে এই তথ্যগুলো সহজে খোঁজা যায়।indexedফিল্ডের মাধ্যমে আপনার ইভেন্ট ফিল্টার করা এবং ট্র্যাক করা সহজ হয়।- অন্যান্য প্যারামিটার (যেমন
sender,value) হলো ইভেন্টের ডেটা, যা ট্রানজেকশনের তথ্য ধারণ করে।
2. Event Emit
ইভেন্টটি স্মার্ট কন্ট্রাক্টে নির্দিষ্ট শর্তে ট্রিগার করা হয়। emit কীওয়ার্ড ব্যবহার করে ইভেন্টটি ট্রিগার করা হয় এবং এর মাধ্যমে ইভেন্টের তথ্য লগে সংরক্ষিত হয়।
Event Emit এর উদাহরণ:
pragma solidity ^0.8.0;
contract EventExample {
event ValueUpdated(address indexed updater, uint newValue);
uint public value;
function updateValue(uint _newValue) public {
value = _newValue;
emit ValueUpdated(msg.sender, _newValue); // ইভেন্ট ট্রিগার করা
}
}ব্যাখ্যা:
- এখানে
ValueUpdatedনামে একটি ইভেন্ট ডিক্লেয়ার করা হয়েছে, যাupdater(যিনি ইভেন্টটি ট্রিগার করেছেন) এবংnewValue(নতুন মান যা আপডেট করা হয়েছে) গ্রহণ করে। updateValueফাংশনটিvalueআপডেট করার পর,ValueUpdatedইভেন্টটিemitদিয়ে ট্রিগার করে এবং তথ্য লগে সংরক্ষণ করে।
3. Events এর মাধ্যমে ব্লকচেইনে তথ্য সংরক্ষণ
ইভেন্টগুলিকে ব্লকচেইনে লগ হিসাবে সংরক্ষিত করা হয়। এটি ব্লকচেইনের ইথেরিয়াম নেটওয়ার্কে একটি বিশেষভাবে প্রণীত log entry হিসেবে কাজ করে, যা সিস্টেমের পরিবর্তন, কার্যকলাপ বা লেনদেনের বিস্তারিত ট্র্যাক করতে সাহায্য করে। ইভেন্টটি সাধারণত বাইরের অ্যাপ্লিকেশন বা ইউজার ইন্টারফেস দ্বারা পর্যবেক্ষণ করা হয় এবং তা থেকে তথ্য পাওয়া যায়।
Event এর মাধ্যমে তথ্য সংরক্ষণ:
- ইভেন্টগুলি ব্লকচেইনে একটি ইতিহাস হিসেবে সংরক্ষিত থাকে যা সংশ্লিষ্ট ডেটা ট্র্যাক করার জন্য ব্যবহৃত হয়।
- একবার ইভেন্ট ট্রিগার হয়ে গেলে, এর ডেটা ব্লকচেইনে সংরক্ষিত হয় এবং এটি সময়ের সাথে পরিবর্তন ট্র্যাক করার জন্য উপযোগী।
4. Events এবং Web3.js (বা dApp) এর মাধ্যমে তথ্য এক্সেস করা
Web3.js লাইব্রেরির মাধ্যমে স্মার্ট কন্ট্রাক্টের ইভেন্টগুলি ট্র্যাক এবং এক্সেস করা যায়। Web3.js ব্যবহার করে ইভেন্টের লোগস এবং আর্গুমেন্টস সংগ্রহ করা সম্ভব, যা ব্লকচেইন ডেটা রিট্রিভ করার জন্য ব্যবহৃত হয়।
Web3.js এ ইভেন্ট ট্র্যাক করার উদাহরণ:
const contract = new web3.eth.Contract(abi, contractAddress);
// ইভেন্ট ট্র্যাক করা
contract.events.ValueUpdated({
fromBlock: 'latest'
}, function(error, event){
if (!error) {
console.log(event); // ইভেন্ট ডেটা কনসোল লগে প্রদর্শন
} else {
console.log(error);
}
});ব্যাখ্যা:
contract.events.ValueUpdatedএর মাধ্যমেValueUpdatedইভেন্টটি ট্র্যাক করা হচ্ছে, যাfromBlock: 'latest'দ্বারা সর্বশেষ ব্লক থেকে শুরু হবে।- ইভেন্টের তথ্য
eventঅবজেক্টে সংরক্ষিত হবে এবং তা কনসোল লগে প্রদর্শিত হবে।
5. Events এর সুবিধা
- অন্য কন্ট্রাক্ট বা ড্যাপসের সাথে যোগাযোগ: ইভেন্ট ব্যবহার করে কন্ট্রাক্টের পরিবর্তন বা কার্যক্রম বাইরের সিস্টেমে জানানো যায়। উদাহরণস্বরূপ, যখন একটি টোকেন ট্রান্সফার হয়, তখন সেই ইভেন্ট অন্য কন্ট্রাক্ট বা ইউজার ইন্টারফেসে পাঠানো হয়।
- গ্যাস সাশ্রয়: ইভেন্টগুলি স্মার্ট কন্ট্রাক্টের মধ্যে গ্যাস খরচ কমিয়ে তথ্য শেয়ার করতে সাহায্য করে। এটি ব্লকচেইনে শুধু লগ হিসাবে সংরক্ষিত থাকে, তাই এটি কম গ্যাস খরচে তথ্য প্রদান করে।
- ডেটা ট্র্যাকিং: ব্লকচেইনে লগ হিসেবে ইভেন্টগুলি ডেটা ট্র্যাকিংয়ের জন্য গুরুত্বপূর্ণ। সময় এবং অন্যান্য প্যারামিটার দ্বারা ডেটা সহজেই অনুসন্ধান করা যায়।
সারাংশ
Solidity তে Events স্মার্ট কন্ট্রাক্টের কার্যক্রম বা পরিবর্তন সম্পর্কে বাইরের সিস্টেমকে জানাতে ব্যবহৃত হয়। ইভেন্টগুলি ব্লকচেইনে লগ হিসাবে সংরক্ষিত হয় এবং বাইরের অ্যাপ্লিকেশন বা ড্যাপস (যেমন Web3.js) এর মাধ্যমে ট্র্যাক করা যায়। ইভেন্ট ব্যবহারের মাধ্যমে আপনি স্মার্ট কন্ট্রাক্টের কার্যক্রমের একটি স্বচ্ছ ইতিহাস তৈরি করতে পারেন, যা গ্যাস সাশ্রয়ী এবং ডেটা ট্র্যাকিং সহজ করে তোলে।
Read more