ایونٹس کے ساتھ سمارٹ معاہدوں سے ڈیٹا لاگ کرنا
سولیڈٹی میں، ایونٹس بھیجے گئے سگنل ہیں جنہیں سمارٹ معاہدے فائر کر سکتے ہیں۔ Dapps، یا ایتھیریم JSON-RPC API سے منسلک کوئی بھی چیز، ان ایونٹس کو سن سکتی ہے اور اسی کے مطابق کارروائی کر سکتی ہے۔ ایک ایونٹ کو انڈیکس بھی کیا جا سکتا ہے تاکہ بعد میں ایونٹ کی تاریخ کو تلاش کیا جا سکے۔
ایونٹس
اس مضمون کو لکھنے کے وقت ایتھیریم بلاک چین پر سب سے عام ایونٹ ٹرانسفر ایونٹ ہے جو ERC20 ٹوکنز کے ذریعے خارج ہوتا ہے جب کوئی ٹوکنز منتقل کرتا ہے۔
1event Transfer(address indexed from, address indexed to, uint256 value);ایونٹ کے دستخط کا اعلان کنٹریکٹ کوڈ کے اندر کیا جاتا ہے اور اسے emit کلیدی لفظ کے ساتھ خارج کیا جا سکتا ہے۔ مثال کے طور پر، ٹرانسفر ایونٹ لاگ کرتا ہے کہ ٹرانسفر کس نے بھیجا (from)، کس کو بھیجا (to) اور کتنے ٹوکن منتقل کیے گئے (value)۔
اگر ہم اپنے کاؤنٹر سمارٹ معاہدے پر واپس جائیں اور ہر بار قدر میں تبدیلی کو لاگ کرنے کا فیصلہ کریں۔ چونکہ اس معاہدے کا مقصد تعینات کرنا نہیں ہے بلکہ اسے بڑھا کر ایک اور معاہدہ بنانے کی بنیاد کے طور پر کام کرنا ہے: اسے ایک تجریدی معاہدہ کہا جاتا ہے۔ ہماری کاؤنٹر مثال کے معاملے میں، یہ اس طرح نظر آئے گا:
1pragma solidity 0.5.17;23contract Counter {45 event ValueChanged(uint oldValue, uint256 newValue);67 // Private variable of type unsigned int to keep the number of counts8 uint256 private count = 0;910 // Function that increments our counter11 function increment() public {12 count += 1;13 emit ValueChanged(count - 1, count);14 }1516 // Getter to get the count value17 function getCount() public view returns (uint256) {18 return count;19 }2021}سب دکھائیںنوٹ کریں کہ:
-
لائن 5 : ہم اپنے ایونٹ اور اس میں کیا شامل ہے، پرانی قدر اور نئی قدر کا اعلان کرتے ہیں۔
-
لائن 13 : جب ہم اپنے گنتی متغیر کو بڑھاتے ہیں، تو ہم ایونٹ خارج کرتے ہیں۔
اگر ہم اب معاہدہ تعینات کرتے ہیں اور انکریمنٹ فنکشن کو کال کرتے ہیں، تو ہم دیکھیں گے کہ اگر آپ لاگز نامی ایک صف کے اندر نئی ٹرانزیکشن پر کلک کرتے ہیں تو Remix اسے خود بخود ڈسپلے کر دے گا۔
لاگز آپ کے سمارٹ معاہدوں کو ڈی بگ کرنے کے لیے واقعی مفید ہیں لیکن اگر آپ مختلف لوگوں کے ذریعے استعمال کی جانے والی ایپلیکیشنز بناتے ہیں تو یہ بھی اہم ہیں اور آپ کے سمارٹ معاہدے کے استعمال کو ٹریک کرنے اور سمجھنے کے لیے تجزیات کرنا آسان بناتے ہیں۔ ٹرانزیکشنز کے ذریعے تیار کردہ لاگز مشہور بلاک ایکسپلوررز میں دکھائے جاتے ہیں اور آپ مثال کے طور پر مخصوص ایونٹس کو سننے اور ان کے ہونے پر کارروائی کرنے کے لیے آف چین اسکرپٹ بنانے کے لیے بھی ان کا استعمال کر سکتے ہیں۔
صفحہ کی آخری تازہ کاری: 12 فروری، 2025
