ایونٹس کے ساتھ سمارٹ کنٹریکٹس سے ڈیٹا لاگ کرنا
Solidity میں، ایونٹس بھیجے گئے سگنلز ہیں جنہیں سمارٹ کنٹریکٹس فائر کر سکتے ہیں۔ غیر مرکزی ایپلی کیشنز (dapps)، یا ایتھیریم جے سن آر پی سی API سے منسلک کوئی بھی چیز، ان ایونٹس کو سن سکتی ہے اور اس کے مطابق عمل کر سکتی ہے۔ ایک ایونٹ کو انڈیکس بھی کیا جا سکتا ہے تاکہ ایونٹ کی ہسٹری کو بعد میں تلاش کیا جا سکے۔
ایونٹس
اس مضمون کو لکھنے کے وقت ایتھیریم بلاک چین پر سب سے عام ایونٹ Transfer ایونٹ ہے جو ERC20 ٹوکنز کے ذریعے اس وقت خارج ہوتا ہے جب کوئی ٹوکنز کی منتقلی کرتا ہے۔
event Transfer(address indexed from, address indexed to, uint256 value);
ایونٹ کے دستخط کو کنٹریکٹ کوڈ کے اندر ڈکلیئر کیا جاتا ہے اور اسے emit کی ورڈ کے ساتھ خارج کیا جا سکتا ہے۔ مثال کے طور پر، transfer ایونٹ لاگ کرتا ہے کہ منتقلی کس نے بھیجی (from)، کس کو بھیجی (to) اور کتنے ٹوکنز منتقل کیے گئے (value)۔
اگر ہم اپنے Counter سمارٹ کنٹریکٹ پر واپس جائیں اور فیصلہ کریں کہ جب بھی ویلیو تبدیل ہو تو اسے لاگ کیا جائے۔ چونکہ اس کنٹریکٹ کو تعینات کرنے کا مقصد نہیں ہے بلکہ اسے ایکسٹینڈ کر کے دوسرا کنٹریکٹ بنانے کے لیے ایک بنیاد کے طور پر کام کرنا ہے: اسے ایک ایبسٹریکٹ کنٹریکٹ (abstract contract) کہا جاتا ہے۔ ہماری کاؤنٹر کی مثال کے معاملے میں، یہ کچھ اس طرح نظر آئے گا:
pragma solidity 0.5.17;
contract Counter {
event ValueChanged(uint oldValue, uint256 newValue);
// کاؤنٹس کی تعداد کو محفوظ رکھنے کے لیے unsigned int ٹائپ کا پرائیویٹ ویری ایبل
uint256 private count = 0;
// وہ فنکشن جو ہمارے کاؤنٹر میں اضافہ کرتا ہے
function increment() public {
count += 1;
emit ValueChanged(count - 1, count);
}
// کاؤنٹ کی ویلیو حاصل کرنے کے لیے گیٹر
function getCount() public view returns (uint256) {
return count;
}
}
نوٹ کریں کہ:
-
لائن 5: ہم اپنا ایونٹ ڈکلیئر کرتے ہیں اور یہ بتاتے ہیں کہ اس میں کیا شامل ہے، پرانی ویلیو اور نئی ویلیو۔
-
لائن 13: جب ہم اپنے count ویری ایبل میں اضافہ کرتے ہیں، تو ہم ایونٹ کو خارج (emit) کرتے ہیں۔
اگر اب ہم کنٹریکٹ کو تعینات کرتے ہیں اور increment فنکشن کو کال کرتے ہیں، تو ہم دیکھیں گے کہ اگر آپ logs نامی ایک سرنی (array) کے اندر نئی ٹرانزیکشن پر کلک کرتے ہیں تو Remix اسے خود بخود ظاہر کر دے گا۔
لاگز آپ کے سمارٹ کنٹریکٹس کی ڈیبگنگ کے لیے واقعی مفید ہیں لیکن یہ اس وقت بھی اہم ہوتے ہیں جب آپ مختلف لوگوں کے زیر استعمال ایپلی کیشنز بناتے ہیں اور یہ تجزیات (analytics) کو آسان بناتے ہیں تاکہ ٹریک کیا جا سکے اور سمجھا جا سکے کہ آپ کا سمارٹ کنٹریکٹ کیسے استعمال ہو رہا ہے۔ ٹرانزیکشنز کے ذریعے تیار کردہ لاگز مقبول بلاک ایکسپلوررز میں دکھائے جاتے ہیں اور آپ مثال کے طور پر انہیں مخصوص ایونٹس کو سننے اور ان کے وقوع پذیر ہونے پر کارروائی کرنے کے لیے آف چین سکرپٹس بنانے کے لیے بھی استعمال کر سکتے ہیں۔
صفحہ کی آخری اپ ڈیٹ: ۳ مارچ، ۲۰۲۶
