Events Solidity তে একটি গুরুত্বপূর্ণ ফিচার যা স্মার্ট কন্ট্রাক্টে লজিকাল পরিবর্তন বা কোনো কার্যক্রম সম্পন্ন হওয়ার পর একটি সিগন্যাল বা বার্তা প্রদান করতে ব্যবহৃত হয়। যখন কোনো ইভেন্ট ট্রিগার হয়, তখন এটি Ethereum ব্লকচেইনে একটি লগ রেকর্ড হিসেবে সংরক্ষিত হয়। ইভেন্টগুলি মূলত ডেভেলপারদের এবং ক্লায়েন্ট অ্যাপ্লিকেশনগুলোর জন্য স্মার্ট কন্ট্রাক্টের মধ্যে ঘটিত কার্যক্রম সম্পর্কে অবহিত হওয়ার একটি উপায় হিসেবে কাজ করে।
1. Event কী?
Solidity তে Event হল এমন একটি ঘোষণা যা স্মার্ট কন্ট্রাক্টের মধ্যে বিশেষ কার্যক্রম ঘটে গেলে লগ বা সিগন্যাল প্রদান করে। ইভেন্টগুলো বিশেষভাবে ব্যবহার করা হয় যখন একটি গুরুত্বপূর্ণ ডেটা বা কার্যক্রম পরিবর্তন হয়, যেমন একটি ট্রানজেকশন সম্পন্ন হওয়া বা স্টেট পরিবর্তন হওয়া।
একটি ইভেন্ট সাধারণত ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা মনিটর করা হয়, এবং এটি ট্রানজেকশন বা কার্য সম্পাদনের পর ব্যবহারকারীকে অবহিত করে।
2. Event Declaration
Solidity তে একটি ইভেন্ট ডিক্লেয়ার করার জন্য event কীওয়ার্ড ব্যবহার করা হয়। ইভেন্টের মধ্যে বিভিন্ন ধরনের ডেটা প্যারামিটার পাস করা যায়, যা ব্লকচেইনে সংরক্ষিত হয়।
Sintaxis:
event <event_name>(<parameter1>, <parameter2>, ...);এখানে:
<event_name>হল ইভেন্টের নাম।<parameter1>,<parameter2>ইত্যাদি হল ইভেন্টে পাস করা প্যারামিটার।
উদাহরণ:
event Transfer(address indexed from, address indexed to, uint256 value);এখানে:
Transferহল ইভেন্টের নাম।from,toএবংvalueহল প্যারামিটার যাaddressএবংuint256টাইপের।
Note: indexed ব্যবহার করলে প্যারামিটারগুলি ইন্ডেক্স করা হয়, যা পরে ইভেন্ট লগ অনুসন্ধানে সুবিধা দেয়।
3. Event Trigger
ইভেন্টটিকে trigger বা emit করার জন্য emit কীওয়ার্ড ব্যবহার করা হয়। যখন একটি নির্দিষ্ট শর্ত পূর্ণ হয় বা কোনো কার্যক্রম সম্পন্ন হয়, তখন ইভেন্টটি ট্রিগার করা হয়।
Sintaxis:
emit <event_name>(<parameter1>, <parameter2>, ...);উদাহরণ:
function transfer(address to, uint256 amount) public {
// কিছু লজিক, যেমন ব্যালান্স চেক করা
emit Transfer(msg.sender, to, amount);
}এখানে:
transferফাংশনটিTransferইভেন্টটিকেmsg.sender,to, এবংamountপ্যারামিটারসহ ট্রিগার করছে।
4. Event ব্যবহার করা
ইভেন্ট ব্যবহার করার ফলে স্মার্ট কন্ট্রাক্টের কার্যক্রম ব্লকচেইনে লগ হিসেবে সংরক্ষিত থাকে, এবং ডেভেলপাররা বা ক্লায়েন্ট অ্যাপ্লিকেশনগুলি এই ইভেন্টগুলিকে ট্র্যাক করতে পারে। ক্লায়েন্ট অ্যাপ্লিকেশনগুলি সাধারণত ইভেন্টগুলির প্রতি মনোযোগী থাকে এবং যখন একটি নির্দিষ্ট ইভেন্ট ট্রিগার হয়, তখন তারা ব্যবহারকারীদের জানাতে পারে বা কোনো পদক্ষেপ নিতে পারে।
5. Event Logs
ইভেন্টগুলি ব্লকচেইনে logs হিসেবে সংরক্ষিত হয় এবং এগুলি অত্যন্ত কার্যকরী হতে পারে যখন স্মার্ট কন্ট্রাক্টের ট্রানজেকশন বা কার্য সম্পাদন সম্পর্কে তথ্য অনুসন্ধান করতে হয়। ইভেন্ট লগগুলি সংরক্ষিত হওয়ায়, এটি gas সাশ্রয়ী হয়, কারণ ফাংশনের আউটপুট ব্লকচেইনে মেমরিতে সংরক্ষণ করা হয় না, বরং এটি শুধু লগ হিসেবে সংরক্ষিত থাকে।
6. Event ব্যবহার করে ক্লায়েন্টে তথ্য গ্রহণ
ইভেন্টগুলি সাধারণত একটি web3.js বা ethers.js লাইব্রেরি ব্যবহার করে ক্লায়েন্ট অ্যাপ্লিকেশনে গ্রহণ করা হয়। এই লাইব্রেরি গুলি Ethereum ব্লকচেইনে ইভেন্ট ট্র্যাক করার জন্য ব্যবহৃত হয়।
উদাহরণ: (Web3.js ব্যবহার করে)
contract.events.Transfer({
filter: {from: '0x123...', to: '0x456...'},
fromBlock: 0
})
.on('data', function(event){
console.log(event);
})
.on('error', console.error);এখানে, Transfer ইভেন্টটি মনিটর করা হচ্ছে এবং যখন এই ইভেন্টটি ট্রিগার হবে, তখন এটি কনসোলে আউটপুট দেখাবে।
7. কেন ইভেন্ট প্রয়োজন?
- ডাটা লগিং: স্মার্ট কন্ট্রাক্টের কার্যক্রম যেমন ট্রানজেকশন, ডেটা পরিবর্তন ইত্যাদি ব্লকচেইনে সেভ করা হয়, যা পরে অনুসন্ধান করা যায়।
- অনুসন্ধানযোগ্যতা: ইভেন্টগুলির মাধ্যমে সহজে স্মার্ট কন্ট্রাক্টের কার্যক্রম খোঁজা এবং ট্র্যাক করা যায়, যা ডেভেলপারদের জন্য অত্যন্ত উপকারী।
- স্বচ্ছতা: ইভেন্টগুলি ব্লকচেইনে সংরক্ষিত থাকে, যা স্মার্ট কন্ট্রাক্টের কার্যক্রম সম্পর্কে স্বচ্ছতা নিশ্চিত করে।
- এপ্লিকেশন-ভিত্তিক ব্যবহার: ইভেন্টগুলি ক্লায়েন্ট অ্যাপ্লিকেশনে ব্যবহারকারীকে স্মার্ট কন্ট্রাক্টের কার্যক্রম সম্পর্কে অবহিত করার জন্য সহায়ক হয়।
সারাংশ
Solidity তে Events স্মার্ট কন্ট্রাক্টের কার্যক্রম সম্পর্কে জানাতে ব্যবহৃত হয়। এগুলি ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে স্মার্ট কন্ট্রাক্টের মধ্যে ঘটিত শর্ত পরিবর্তন বা কার্য সম্পাদন সম্পর্কে অবহিত করতে সহায়তা করে। ইভেন্টগুলি ব্লকচেইনে সেভ করা হয়, যা পরবর্তীতে ডেটা ট্র্যাক বা অনুসন্ধান করার জন্য ব্যবহৃত হতে পারে। ইভেন্টগুলি স্মার্ট কন্ট্রাক্টের কার্যক্রমের স্বচ্ছতা এবং সহজে ব্যবহারযোগ্যতা নিশ্চিত করে।
Read more