在Solidity中,函数修饰符规定了函数的行为、调用规则。在Solidity语言中预置的修饰符有如下一些:
1、函数和状态变量可见性修饰符
public:在外部和内部均可见(创建存储/状态变量的访问者函数)
private:仅在当前合约中可见
external: 只有外部可见(仅对函数)- 仅仅在消息调用中(通过this.fun)
internal: 只有内部可见
2、状态变量储存位置修饰符
storage:变量储存在区块链中,状态变量默认是storage类型;
memory:变量储临时存在内存中,局部变量默认是memory类型;
3、接受Ether修饰符
payable:允许函数在调用同时接收Ether
4、函数读取状态变量修饰符
pure:不允许修改或访问状态变量-这还没有强制执行
view:不允许修改状态变量-这还没有强制执行
constant(for function):等同于view
constant(for state variables):除了初始化之外,不允许赋值操作,类似JavaScript中的常量
自定义修饰符
函数修改器(Function Modifiers)
修改器(Modifiers)可以用来轻易的改变一个函数的行为。比如用于在函数执行前检查某种前置条件。
修改器是一种合约属性,可被继承,同时还可被派生的合约重写(override)。
OpenZeppelin库的Ownable 合约
下面是一个 Ownable 合约的例子: 来自 OpenZeppelin Solidity 库的 Ownable 合约。 OpenZeppelin 是主打安保和社区审查的智能合约库,你可以在自己的 DApps中引用。
所以Ownable 合约基本都会这么