सॉलिडिटी - इवेंट्स

घटना एक अनुबंध का एक अंतर्निहित सदस्य है। एक घटना उत्सर्जित होती है, यह लेनदेन लॉग में पारित तर्कों को संग्रहीत करती है। ये लॉग ब्लॉकचेन पर संग्रहीत हैं और अनुबंध के पते का उपयोग करते हुए सुलभ हैं जब तक कि ब्लॉकचैन पर अनुबंध मौजूद नहीं है। उत्पन्न एक घटना अनुबंधों के भीतर से सुलभ नहीं है, वह भी नहीं जिसने उन्हें बनाया और उत्सर्जित किया है।

ईवेंट कीवर्ड का उपयोग करके एक ईवेंट घोषित किया जा सकता है।

//Declare an Event
event Deposit(address indexed _from, bytes32 indexed _id, uint _value);

//Emit an event
emit Deposit(msg.sender, _id, msg.value);

उदाहरण

एक कोड सॉलिडिटी में कैसे काम करता है, यह समझने के लिए निम्न कोड को आज़माएं।

पहले एक अनुबंध बनाएं और एक घटना का उत्सर्जन करें।

pragma solidity ^0.5.0;

contract Test {
   event Deposit(address indexed _from, bytes32 indexed _id, uint _value);
   function deposit(bytes32 _id) public payable {      
      emit Deposit(msg.sender, _id, msg.value);
   }
}

फिर जावास्क्रिप्ट कोड में अनुबंध की घटना का उपयोग करें।

var abi = /* abi as generated using compiler */;
var ClientReceipt = web3.eth.contract(abi);
var clientReceiptContract = ClientReceipt.at("0x1234...ab67" /* address */);

var event = clientReceiptContract.Deposit(function(error, result) {
   if (!error)console.log(result);
});

इसे निम्नलिखित के समान विवरण प्रिंट करना चाहिए -

उत्पादन

{
   "returnValues": {
      "_from": "0x1111...FFFFCCCC",
      "_id": "0x50...sd5adb20",
      "_value": "0x420042"
   },
   "raw": {
      "data": "0x7f...91385",
      "topics": ["0xfd4...b4ead7", "0x7f...1a91385"]
   }
}