Add A Solidity Event¶
Now that you know why we need Events, let's add one and observe the output again!
Modify the contract code as follows:
//SPDX-License-Identifier: MIT
pragma solidity 0.8.13;
contract EventExample {
mapping(address => uint) public tokenBalance;
event TokensSent(address _from, address _to, uint _amount);
constructor() {
tokenBalance[msg.sender] = 100;
}
function sendToken(address _to, uint _amount) public returns(bool) {
require(tokenBalance[msg.sender] >= _amount, "Not enough tokens");
assert(tokenBalance[_to] + _amount >= tokenBalance[_to]);
assert(tokenBalance[msg.sender] - _amount <= tokenBalance[msg.sender]);
tokenBalance[msg.sender] -= _amount;
tokenBalance[_to] += _amount;
emit TokensSent(msg.sender, _to, _amount);
return true;
}
}
Re-Deploy with MetaMask¶
Let's re-deploy our contract with MetaMask and run the exact same Transaction. Here's what we can observe in the Transaction Details:
Suddenly we have "logs". These are in-sequence emitted events from the Smart Contract execution!
You will later see how you can listen to these events, query the blockchain for events and many more things.