什么是event?
目前主流的定义:
事件是以太坊虚拟机(EVM)日志基础设施提供的一个便利接口。当被发送事件(调用)时,会触发参数存储到交易的日志中(一种区块链上的特殊数据结构)。
这些日志与合约的地址关联,并记录到区块链中。换句话来说区块链是打包一系列交易的区块组成的链条,每一个交易“收据”会包含0到多个日志记录,日志代表着智能合约所触发的事件。
- event相当于solidity的日志
- 存储成本上来说,event比storage更便宜
- event可以被客户端程序订阅
- 使用emit触发event事件
- 我们可以通过event进行合约调试
在Solidity 代码中,使用event 关键字来定义一个事件
event Deposit(address _who,uint256 _account);
event Withdraw(address _who,address _operator,uint256 _account);
定义的事件1:Deposit充值,address充值的人,account充值的数量
定义的事件2:Withdraw提现,address_who提现的人,address_operator操作者,account提现 的数量
触发事件可以在任何函数中,通过emit进行调用
function deposit(uint256 _amount)public payable{
emit Deposit(msg.sender,_amount); //触发充值事件;
}
fun

事件(event)是Solidity中用于记录智能合约状态变化的一种机制,它将信息存储到日志中,从而节省成本并允许外部程序订阅和监听特定事件。文章通过示例展示了如何定义和触发Deposit与Withdraw事件,并解释了如何在区块链上查看和订阅这些事件。
最低0.47元/天 解锁文章
545





