Solidity-函数、函数修改器、事件(四)

本文详细介绍了Solidity中的函数修改器、事件(Event)以及函数的各个方面,包括函数的可见性、状态修改(View、Pure)、接收和回退函数,以及函数重载。函数修改器用于在不改变原有函数的基础上增强其行为,事件则用于记录合约中的关键操作,方便外部查询。此外,还探讨了如何在合约中定义和使用各种类型的函数。
摘要由CSDN通过智能技术生成

前言

函数、函数修改器、事件。


一、函数修改器

函数修改器类似于装饰器,目的是在在不改动原函数的情况下修改函数的行为,减少代码量。

函数修改器(modifier)是不可以重载的。修改器的定义使用modifier,而不是Function的。

modifier onlyowner() {
        require(
            msg.sender == owner,
            "Only owner."
        );
        _;
}

onlyowner修改器,被修饰的函数会在“_”处执行。

函数修改器可以带参数。

二、事件 Event

 事件是能方便地调用以太坊虚拟机日志功能的接口。

事件的定义:event Transfer(address indexed from,address indexed to,uint amount);

事件的触发:emit Transfer(from,to,amount);

indexed是让evm将数据放入topic,不加则放入data,放入topic基础费用375,data每字节8.

事件是调用evm日志功能的接口,所以对应着evm字节码log0,log1...log4.其中log0不存topic(32字节),仅存数据。其中topic[0]是事件的摘要即keccak256() hash,这样就决定了最多可以有3个indexed(在使用log4的情况下)。

事件在合约中可被继承。当他们被调用时,会使参数被存储到交易的日志中 —— 一种区块链中的特殊数据结构。 这些日志与地址相关联,被并入区块链中,只要区块可以访问就一直存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值