solidity(10)

🔮 Solidity变量指南:探寻状态、局部和全局三界之秘🌌

在Solidity的神秘大陆上,变量就像是散落在时间和空间中的宝石💎,每颗都有它独特的魔力和作用域。掌握这三种变量,是成为合约法师的重要一步。

### 1️⃣ 状态变量(State Variable)—— 链上的恒星⭐️

- 定义:状态变量就像是树根一样植根于区块链的土壤中。它们是合约结构中的常青树,坚如磐石。
- 特点:在合约的任何角落,它们都迸发着光彩,但每次变动都会激起Gas的波涛。
- 示例:

  contract Variables {uint public x = 1; // 这些是我坚不可摧的状态变量;// ...}

### 2️⃣ 局部变量(Local Variable)—— 函数的幻影🎩

- 定义:函数的暗影战士,行动迅速,随着函数的消逝而灰飞烟灭。
- 特点:它们敏捷地舞动在内存中,不留痕迹,经济又高效,消耗的Gas少之又少。
- 示例:

  function bar() external pure returns (uint) {uint xx = 1; // 局部变量,我来了又走,短暂如梦;// ...}

### 3️⃣ 全局变量(Global Variable)—— 世界之窗🌎

- 定义:这是Solidity提供的巫术工具,智者的知识,通往区块链世界的钥匙。
- 特点:如同星空中的指南针,指示交易和区块的秘密。它们毫无寒意,随手可得,无须任何祭品。
- 示例:

  function global() external view returns (address, uint, bytes memory) {address sender = msg.sender; // 全局变量,透露着宇宙的奥秘;// ...}

- 常用全球魔法:
  - blockhash(uint blockNumber):揭示区块的秘密符文;
  - block.coinbase:矿工的藏宝图;
  - block.number:历史的卷轴;
  - msg.sender:召唤师的真名;
  - ...以及更多。

掌握状态、局部和全局变量,就如同握住Solidity魔法棒,数据在你手中轻盈舞动,合约编织着高效和安全的双重保障。在智能合约的编程艺术中,这些变量成就了你管理和操控数据的力量。

pragma solidity ^0.8.0;contract Variables {// 1. 状态变量(State Variable)uint public x = 1;uint public y;string public z;// 2. 局部变量(Local Variable)function bar() external pure returns (uint) {uint xx = 1;uint yy = 3;uint zz = xx + yy;return zz;}// 3. 全局变量(Global Variable)function global() external view returns (address, uint, bytes memory) {address sender = msg.sender;uint blockNum = block.number;bytes memory data = msg.data;return (sender, blockNum, data);}// 修改状态变量的函数function foo() external {x = 5;y = 2;z = "0xAA";}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue项目学习(一)-SQL闯关

Hello , 我是小恒不会java。今天来阅读一个Vue纯前端项目--SQL在线闯关 进步的方法除了文档书籍视频,学会阅读源代码,从代码中学会解决需求的方法也是必要的 已部署完成,在线体验:http://sql.yunduanjianzhan.cn 背景 简介 闯…

monogoTemplate 将 JSON{key1: 1, key2:2, key3:[{},{}{}]} 中key3 中的数组元素提取出来作为新的文档

问题描述 monogoTemplate 将 JSON{key1: 1, key2:2, key3:[{},{}{}]} 中key3 中的数组元素提取出来作为新的文档 // 创建聚合操作 Aggregation agg Aggregation.newAggregation(Aggregation.match(Criteria.where("YOUR_FILTER_FIELD").is(YOUR_VALUE)), // 过滤条…

《黑神话:悟空》现已正式上架PS商城,今晚或有大动作

关于《黑神话:悟空》的消息可谓是喜闻乐见!今天晚上19:10可能会有相关游戏内容放出,让人非常期待。而海信电视推出的《黑神话:悟空》专属画质模式,让玩家可以享受到更加细腻的游戏画面。 此外,海信和《黑神…

高级感拉满的个人UI网页

效果图 PC端 移动端 部分代码 index.html <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>Zboy的主页</title><link rel"stylesheet" href"css/normalize.css" /><link rel&qu…

SAP项目任务一览表

根据SAP Activate项目管理方法论的主要精神&#xff0c;浓缩到一些主要的团队和任务。 主要的团队有&#xff1a; 项目管理(办公室)Project Management(office)&#xff1a;项目经理团队&#xff0c;包括项目办公室。负责项目整体运行和监控&#xff0c;项目办公室负责项目的…

李沐-19 卷积层【动手学深度学习v2】

记录下关于权重下标变换的理解&#xff1a; 从原来的Wi,j到Wi,j,k,l是从二维到四维的过程&#xff0c;如下图所示 对全连接层使用平移不变性(如&#xff1a;卷积核在移动过程是不变的)和局部性&#xff08;如&#xff1a;卷积核有一定大小&#xff09;得到卷积层&#xff0c;这…

【leetcode】双指针算法技巧——滑动窗口

标题&#xff1a;【leetcode】双指针算法技巧——滑动窗口 水墨不写bug 正文开始&#xff1a; 滑动窗口介绍 滑动窗口是一种常用的算法技巧&#xff0c;用于解决一些涉及 连续子数组或子串 的问题。它的基本思想是 维护一个窗口&#xff0c;通过 在窗口内移动 来寻找满…

超融合未来前景

超融合其实就是一种私有云的实现方式&#xff0c;但是又把私有云技术实现系统化&#xff0c;标准化&#xff0c;轻便化。 云化的目的我们为了实现对硬件更好的利用&#xff0c;同时让上层应用不感知颗粒化的、规模性的硬件&#xff0c;同时实现我们的多组服务高可用化&#xf…

如何查询RGB图像的三维numpy数组中有多少个不同的RGB点,并打印具体数值?

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

xgplayer插件的使用-西瓜播放器 ---- Vue3中使用

xgplayer 视频 一、xgplayer官网 xgplayer官网 - 点我进入 一、xgplayer简单介绍 西瓜播放器是字节跳动推出的一款播放器。 稳定性好&#xff08;大厂&#xff08;字节跳动&#xff09;出品&#xff09;&#xff1b;插件方便实用且简洁高雅&#xff1b;官网文档清晰&#xff1b…

bev算法 简介

Birds Eye View&#xff1a;将车辆周围的场景从车辆俯视图的角度呈现出来 优势 帮助理解周围环境并进行决策。 原理 传感器数据获取 数据预处理 雷达点云 去噪&#xff1a;去除点云数据中的噪声点&#xff0c;例如使用统计滤波器、体素滤波器等方法。 下采样&#xff1a…

java基础语法(19)| 线程

前言 Hello&#xff0c;大家好&#xff01;很开心与你们在这里相遇&#xff0c;我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩&#xff0c;想与你们共同学习、探索关于IT的相关知识&#xff0c;希望我们可以一路陪伴~ 1. 多线程概述 并发与并行 什么是并发 …

新校区不建了!大学城,烂尾!

近日&#xff0c;《环球时报》援引台湾《联合报》报道&#xff0c;台湾地区各县市早年曾掀起“大学城风潮”&#xff0c;争相圈地让大学设立分校。但多年过去了&#xff0c;不少大学城沦为荒芜之地。 报道中称&#xff0c;上世纪90年代&#xff0c;由于校地、建筑面积是大学升…

[Linux - C] 自主Shell

[Linux - C] 自主Shell [Linux - C语言] 自主Shell逻辑策划 main()打印命令行 void MakeCommandLineAndPrint()用户名 USER主机名 HOSTNAME当前目录 PWDSkipPath 切割目录打印命令行 获取用户字符串 int GetUserCommand()检查重定向 void CheckRedir()切割字符 void SplitComma…

数据加密、文档加密为什么都选择安企神软件

数据加密、文档加密为什么都选择安企神软件 免费试用安企神 在数据加密和文件加密领域&#xff0c;有众多优秀的软件&#xff0c;他们功能各异、价格不同、效果也大相径庭&#xff0c;经过对比使用、用户口碑和技术网站评判&#xff0c;安企神在各方面都稳坐第一把交易。其原…

Swift中的循环语句

在Swift中&#xff0c;循环语句用于重复执行一段代码块。Swift提供了几种不同的循环语句&#xff0c;包括for-in循环、while循环和repeat-while循环。 for-in循环&#xff1a; for-in循环用于遍历一个集合&#xff08;如数组或范围&#xff09;中的每一个元素。语法如下&#…

洛谷P4913 二叉树深度

【洛谷P4913 深基16.例3】二叉树深度 文章目录 【洛谷P4913 深基16.例3】二叉树深度题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 正确代码 题目描述 有一个 n ( n ≤ 1 0 6 ) n(n \le 10^6) n(n≤106) 个结点的二叉树。给出每个结点的两个子结点编号&#xff08;…

新闻媒体行业邮件推广:精准推送,创造价值

在当今信息爆炸的时代&#xff0c;新闻行业如何在竞争激烈的市场中脱颖而出&#xff0c;吸引读者的目光&#xff0c;成为了每个新闻机构都需要认真思考的问题。许可式邮件营销成为了一种强大的工具&#xff0c;不仅能够向订阅者发送新闻期刊&#xff0c;还能够向广告商发送宣传…

Leetcode 4.16

1.找两个和为目标值且不重叠的子数组 找两个和为目标值且不重叠的子数组 初始化变量: sum&#xff1a;用于存储当前左边界 l 到右边界 r 之间的子数组和。r&#xff1a;初始化为数组的最后一个元素的索引&#xff0c;表示初始的右边界。ans&#xff1a;用于存储最小的两个子数…

【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验(下)【北京航空航天大学】

本次实验&#xff08;上&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验&#xff08;上&#xff09;【北京航空航天大学】 本次实验&#xff08;中&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实…