news 2026/4/23 9:18:42

Solidity-learning(5)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 + 下划线 + 变

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/30 8:22:28

12.12 - 二叉树的层序遍历 C语言函数指针和指针函数的区别

目录 1.二叉树的层序遍历 a.核心思想 b.思路 c.步骤 2.C语言函数指针和指针函数的区别 a.函数指针 b.指针函数 c.核心区别 1.二叉树的层序遍历 102. 二叉树的层序遍历 - 力扣(LeetCode)https://leetcode.cn/problems/binary-tree-level-order-t…

作者头像 李华
网站建设 2026/4/22 5:48:43

【网络安全】一、虚拟局域网设置和应用

实验01:虚拟局域网设置和应用一、实验目的掌握虚拟局域网(VLAN)的基本概念与核心作用。熟练掌握跨多台交换机的 VLAN 配置及Trunk 链路的配置方法。验证 VLAN 对网络广播域的隔离效果,深入理解其在网络安全中 “访问控制、缩小攻击…

作者头像 李华
网站建设 2026/4/22 20:25:52

C++基础笔记(三)链表list

一、数据结构说明 list std::list 是一种双向链表(doubly linked list),其底层数据结构是互不连续的节点。 刷题要点: 在任何位置进行元素的插入和删除都非常高效,时间复杂度为 O(1)。不支持随机访问(如 li…

作者头像 李华
网站建设 2026/4/18 13:17:51

3分钟搞定Git SSH配置:传统vs快马AI方案对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Git SSH配置效率对比工具,左侧显示传统手动配置的7个步骤(生成密钥、复制公钥、网站配置等),右侧展示快马AI一键生成的完整配置代码。要求&#xff…

作者头像 李华
网站建设 2026/4/19 1:31:18

基于LangChain-ChatChat搭建金融知识问答机器人实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个金融知识问答系统,输入要求:1.使用LangChain-ChatChat处理用户金融术语查询 2.集成证监会政策文档作为知识库 3.实现风险评估问卷的对话式填写 4.对…

作者头像 李华