当前位置: 首页 > news >正文

Solidity-learning(5)

前面的部分已经学完了基础知识,成功部署了一个智能合约,使用一个库和chainlink合约创建了一些功能强大的去中心化应用。

接下来的内容,是在前面的基础上,学习更高阶的solidity,如果你忘记点赞关注收藏,麻烦动动小手,感谢你的支持~

1-Advanced Solidity

1.1-Immutable & Constant

源码中owner和minimunUsd在合约中被设定一次之后就不会再改变了,可以使用solidity中的一些工具让他更节省gas。

现在重新编译运行一下代码,在虚拟机上面可以运行,但是因为没有chainlink网络,所以fund和withdraw函数都无法正常工作,但是在虚拟机上运行方便很多,现在只需要观察消耗的gas数量。

打开底下的终端,可以看到创建合约实际消耗了 757471 gas,现在需要学习一些技巧,把这个数字降下来。

这两个技巧就是constant关键字和immutable关键字。

这两个关键字可以保证变量不能被改变,具体细节可以了解solidity文档中的信息。

Constants | Solidity by Example | 0.8.26

Immutable | Solidity by Example | 0.8.26

如果只是在函数外分配一次变量,然后永远不再改变,就可以使用constant关键字。

当添加一个constant关键字时,这个变量minimumUsd就不再占用一个存储空间,也更容易被读取。

uint256 public constant minimumUsd = 50 * 1e18;

现在添加这个关键字之后重新编译运行,发现创建合约消耗的gas从变成了 757471 gas 变成了737532 gas,节省了约20000 gas。

通常情况下,常量变量有不同的命名规则,常量规定全部用大写字母和下划线表示

(顺便把代码中原有的所有小写minimun也换成这个样式)

uint256 public constant MINIMUM_USD = 50 * 1e18;

然后再继续编译运行,点击蓝色按钮发现消耗了 374 gas,这时MINIMUM_USD的执行成本。

如果此时删除这个常量变量关键字,重新编译运行,再次点击蓝色按钮,就会发现执行成本变成了2446 gas。调用前后的差距是很大的,花费也差了很多。

代码中另外一个只需要设置一次的变量就是owner。

owner在构造函数变量中设置过一次,这些被一次性设置的变量,但是没有和声明写在同一行的,可以直接在声明的时候将他标记为immutable。

immutable变量命名规定:i + 下划线 + 变

http://www.jsqmd.com/news/79460/

相关文章:

  • ZooKeeper三节点集群搭建出现的问题和解决过程
  • Ubuntu 配置 RustDesk
  • 嵌入式-硬件基础:了解三极管
  • 基于Spring Boot框架和vue的的实验室机房预约管理系统的_1tc0u6bd
  • MySQL 数据类型详解
  • 基于Spring Boot框架和vue的的摄影社区论坛交流平台的设计与实现_scwxyip5
  • 基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
  • 【PYTHON】python venv创建虚拟环境,非conda
  • 基于模型预测控制对PMSM进行FOC控制,模拟控制了PMSM的速度(Simulink仿真实现)
  • 传统vs现代:AI如何让MTTF分析效率提升10倍
  • 基于模型预测控制与滚动时域估计应用于移动机器人研究(Matlab代码实现)
  • 【网络安全】一、虚拟局域网设置和应用
  • 基于全局路径的无人地面车辆的横向避让路径规划研究[蚂蚁算法求解](Matlab代码实现)
  • 零基础入门:Java Base64原理与简单实现
  • 三极管:电子信息时代的核心“控制单元”,藏于设备中的关键器件
  • DeepFM在金融风控中的实战:从理论到落地
  • 零基础入门:Java Base64原理与简单实现
  • C++基础笔记(三)链表list
  • 【Java方法】--用对重载和可变参数让你的代码更优雅
  • 【Java方法】--用对重载和可变参数让你的代码更优雅
  • 企业级Git SSH配置实战:多账户管理指南
  • 3分钟搞定Git SSH配置:传统vs快马AI方案对比
  • 编程小白必看:‘Cannot find declaration‘错误完全指南
  • 1小时打造专属右键菜单工具:快马平台实战
  • 【Java方法】--让你的代码变成一个独立的“任务”——方法
  • JUnit 4 自定义重复测试运行器详解
  • 回流用户判定
  • 2025年常州宠物手术医院权威推荐榜:专业诊疗与暖心服务口碑之选 - 品牌企业推荐师(官方)
  • 5分钟快速搭建:Nginx配置原型开发
  • CVAT标注工具:快速验证你的AI模型原型