详解 Solidity 事件Event - 完全搞懂事件的使用

很多同学对Solidity 中的Event有疑问,这篇文章就来详细的看看Solidity 中Event到底有什么用?写在前面Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么,另外本文在监听合约事件是对上一篇Web3与智能合约交互实战进行补充,如果阅读了上一篇可以更好的理解本文。什么是事件Evnet事件是以太坊...
摘要由CSDN通过智能技术生成

很多同学对Solidity 中的Event有疑问,这篇文章就来详细的看看Solidity 中Event到底有什么用?

写在前面

Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么,另外 本文在监听合约事件是对上一篇Web3与智能合约交互实战进行补充,如果阅读了上一篇可以更好的理解本文。

什么是事件Evnet

事件是以太坊虚拟机(EVM)日志基础设施提供的一个便利接口。当被发送事件(调用)时,会触发参数存储到交易的日志中(一种区块链上的特殊数据结构)。这些日志与合约的地址关联,并记录到区块链中. 来捋这个关系:区块链是打包一系列交易的区块组成的链条,每一个交易“收据”会包含0到多个日志记录,日志代表着智能合约所触发的事件。

在DAPP的应用中,如果监听了某事件,当事件发生时,会进行回调。 不过要注意:日志和事件在合约内是无法被访问的,即使是创建日志的合约。

在Solidity 代码中,使用event 关键字来定义一个事件,如:

event EventName(address bidder, uint amount); 
复制代码

这个用法和定义函数式一样的,并且事件在合约中同样可以被继承。触发一个事件使用emit(说明,之前的版本里并不需要使用emit),如:

emit EventName(msg.sender, msg.value); 
复制代码

触发事件可以在任何函数中调用,如:

function testEvent() public {

    // 触发一
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Solidity中,事件(event)是一种特殊的函数,它允许合约在区块链上广播信息。事件可以用于记录各种状态变化、错误信息以及其他合约中感兴趣的信息。 事件可以通过定义一个事件函数来创建。事件函数定义了事件的名称、参数和可见度。例如,下面是一个定义了一个名为`Transfer`的事件函数: ``` event Transfer(address indexed from, address indexed to, uint256 value); ``` 在这个事件中,`Transfer`是事件的名称,`address indexed from`和`address indexed to`是事件的参数,而`uint256 value`则是事件的可选参数。`indexed`关键字表示该参数可以用于快速搜索事件。在这个例子中,合约可以使用`Transfer`事件来记录从一个地址到另一个地址的代币转移。 要触发一个事件,合约可以在函数中使用`emit`关键字,并传递事件参数。例如,下面是一个示例函数,它在每次转移代币时都触发`Transfer`事件: ``` function transfer(address to, uint256 value) public returns (bool) { require(value <= balances[msg.sender]); require(to != address(0)); balances[msg.sender] -= value; balances[to] += value; emit Transfer(msg.sender, to, value); return true; } ``` 在这个函数中,当代币成功转移时,使用`emit`关键字触发了`Transfer`事件,并传递了`msg.sender`、`to`和`value`三个参数。这样,其他合约或外部工具就可以监听该事件,并获取转移的相关信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值