ইভেন্ট ব্যবহার করে স্মার্ট কন্ট্রাক্ট থেকে ডাটা লগ করা
Solidity-তে, ইভেন্ট হলো ডিসপ্যাচ করা সিগন্যাল যা স্মার্ট কন্ট্রাক্ট ফায়ার করতে পারে। ডিএ্যাপস, বা ইথিরিয়াম JSON-RPC API-এর সাথে সংযুক্ত যেকোনো কিছু, এই ইভেন্টগুলো শুনতে পারে এবং সেই অনুযায়ী কাজ করতে পারে। একটি ইভেন্ট ইনডেক্সও করা যেতে পারে যাতে ইভেন্টের ইতিহাস পরে অনুসন্ধান করা যায়।
ইভেন্ট
এই নিবন্ধটি লেখার সময় ইথিরিয়াম ব্লকচেইন-এ সবচেয়ে সাধারণ ইভেন্ট হলো Transfer ইভেন্ট যা ERC20 টোকেন দ্বারা এমিট করা হয় যখন কেউ টোকেন স্থানান্তর করে।
1event Transfer(address indexed from, address indexed to, uint256 value);ইভেন্ট সিগনেচার কন্ট্রাক্ট কোডের ভিতরে ডিক্লেয়ার করা হয় এবং emit কিওয়ার্ডের মাধ্যমে এমিট করা যেতে পারে। উদাহরণস্বরূপ, transfer ইভেন্ট লগ করে কে স্থানান্তর পাঠিয়েছে (from), কাকে পাঠিয়েছে (to) এবং কতগুলো টোকেন স্থানান্তর করা হয়েছে (value)।
যদি আমরা আমাদের Counter স্মার্ট কন্ট্রাক্ট-এ ফিরে যাই এবং প্রতিবার মান পরিবর্তন হওয়ার সময় লগ করার সিদ্ধান্ত নিই। যেহেতু এই কন্ট্রাক্টটি ডিপ্লয় করার উদ্দেশ্যে নয় বরং এটিকে এক্সটেন্ড করে অন্য একটি কন্ট্রাক্ট তৈরির ভিত্তি হিসেবে কাজ করে: একে অ্যাবস্ট্রাক্ট কন্ট্রাক্ট বলা হয়। আমাদের কাউন্টার উদাহরণের ক্ষেত্রে, এটি দেখতে এমন হবে:
1pragma solidity 0.5.17;2
3contract Counter {4
5 event ValueChanged(uint oldValue, uint256 newValue);6
7 // কাউন্টের সংখ্যা রাখার জন্য unsigned int টাইপের প্রাইভেট ভেরিয়েবল8 uint256 private count = 0;9
10 // যে ফাংশনটি আমাদের কাউন্টার বৃদ্ধি করে11 function increment() public {12 count += 1;13 emit ValueChanged(count - 1, count);14 }15
16 // কাউন্টের মান পাওয়ার জন্য গেটার17 function getCount() public view returns (uint256) {18 return count;19 }20
21}লক্ষ্য করুন যে:
-
Line 5: আমরা আমাদের ইভেন্ট এবং এতে কী রয়েছে তা ডিক্লেয়ার করি, পুরানো মান এবং নতুন মান।
-
Line 13: যখন আমরা আমাদের count ভেরিয়েবল বৃদ্ধি করি, তখন আমরা ইভেন্টটি এমিট করি।
যদি আমরা এখন কন্ট্রাক্টটি ডিপ্লয় করি এবং increment ফাংশনটি কল করি, আমরা দেখতে পাব যে Remix স্বয়ংক্রিয়ভাবে এটি প্রদর্শন করবে যদি আপনি logs নামের একটি অ্যারের ভিতরে নতুন লেনদেন-এ ক্লিক করেন।
আপনার স্মার্ট কন্ট্রাক্ট ডিবাগ করার জন্য লগগুলো সত্যিই দরকারী, তবে আপনি যদি বিভিন্ন লোকের দ্বারা ব্যবহৃত অ্যাপ্লিকেশন তৈরি করেন তবে এগুলো গুরুত্বপূর্ণ এবং আপনার স্মার্ট কন্ট্রাক্ট কীভাবে ব্যবহৃত হয় তা ট্র্যাক করতে এবং বুঝতে অ্যানালিটিক্স তৈরি করা সহজ করে তোলে। লেনদেন দ্বারা জেনারেট করা লগগুলো জনপ্রিয় ব্লক এক্সপ্লোরার-এ প্রদর্শিত হয় এবং আপনি উদাহরণস্বরূপ নির্দিষ্ট ইভেন্টগুলো শোনার জন্য এবং সেগুলো ঘটলে ব্যবস্থা নেওয়ার জন্য অফচেইন স্ক্রিপ্ট তৈরি করতে এগুলো ব্যবহার করতে পারেন।
পেজ সর্বশেষ আপডেট: 3 মার্চ, 2026
