Solidity极简入门|第八讲:构造函数和修饰器

本文介绍了Solidity中的构造函数在合约部署时的初始化作用,以及修饰器如何用于权限控制,如Ownable合约实现的onlyOwner修饰符。此外,还讨论了constant和immutable变量的使用,确保不可变数据的恒定性。
摘要由CSDN通过智能技术生成

构造函数

构造函数(constructor)是一种特殊的函数,每个合约可以定义一个,并在部署合约的时候自动运行一次。它可以用来初始化合约的一些参数,例如初始化合约的 owner 地址:

11d9334972e2657bb6df5921059285a5.jpeg

修饰器

修饰器(modifier)是 solidity 特有的语法,类似于面向对象编程中的 decorator,声明函数拥有的特性,并减少代码冗余。它就像钢铁侠的智能盔甲,穿上它的函数会带有某些特定的行为。modifier 的主要使用场景是运行函数前的检查,例如地址,变量,余额等。

2c4581f10a9c13b5b4032e592306af2b.jpeg钢铁侠的 modifier

我们定义一个叫做 onlyOwner 的 modifier:

dfe68655f3d9764393bde25a24c16223.jpeg

  代有 onlyOwner 修饰符的函数只能被 owner 地址调用,比如下面这个例子:

cd99611c11584c5c6e38bb9bf66e1382.jpeg

我们定义了一个 changeOwner 函数,运行他可以改变合约的 owner,但是由于 onlyOwner 修饰符的存在,只有原先的 owner 可以调用,别人调用就会报错。这也是最常用的控制智能合约权限的方法。

OppenZepplin 的 Ownable 标准实现:  https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol

constant 和 immutableconstant

constant 

变量必须在声明的时候初始化,之后再也不能改变。尝试改变的话,编译不通过。

888662671ec1ba2e071714df1ebef7c9.jpeg

immutable

immutable 变量可以在声明时或构造函数中初始化,因此更加灵活。

b2de3d5604d066e7eaa9f092cf22b5b6.jpeg

你可以使用全局变量例如 address(this),block.number ,或者自定义的函数给 immutable 变量初始化。在下面这个例子,我们利用了 test() 函数给 IMMUTABLE_TEST 初始化为 9:  

36d8beda823e41accc441d6ea791e848.jpeg

总结

solidity 中的构造函数和修饰符,并举了一个控制合约权限的 Ownable 合约。两个关键字constant(常量)和 immutable(不变量),让不应该变的变量保持不变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值