一、Hello world
一、运行环境
编辑器:https://remix.ethereum.org/ 可以在线编辑,也可以下载到本地,在线编辑适合新手学习solidity代码。
二、hello word
Solidity 合约类似于面向对象语言中的类。合约中有用于数据持久化的状态变量,和可以修改状态变量的函数。 调用另一个合约实例中函数时,会切换执行时的上下文,此时前一个合约的状态变量就不能访问了。后面会逐步展开介绍,国际惯例,使用当前语言的 Hello World 作为第一个例子。
1、点击左侧 File explorer,然后点击 Create new file 图标,新建一个HelloWorld.sol文件, 编写如下代码,代码很简单,定义一个状态变量message和函数f1,函数返回状态变量message的值。
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; contract Hello { //消耗gas费:3467 string public message = "Hello world"; //消耗gas费:3473 function f1() public view returns(string memory) { return message; } //消耗gas费:715 function f2() public pure returns(string memory) { return "Hello world"; } //消耗gas费:772 function f3() public pure returns(string memory) { return f2(); } }
2、代码写完之后,接下来要编译代码,如下图,先勾上auto Compile自动编译修改的代码,然后点击Compile HelloWorld.sol编译代码,左侧出现绿色图标就说明代码编译成功。
3、编译之后就可以开始部署合约了,点击左侧 Deploy & run transactions 页面,点击黄色按钮 「Depoly」,此时按钮下方区域会出现Deployed Contracts,这里就是刚刚部署出来的合约地址。
4、部署完就可以开始运行合约了,点击运行f1函数,右下方就可以看到函数执行结果,execution cost 表示gas费,decoded input表示函数输入值,decoded output 表示函数返回值。
4、解析:
上面的代码获取 message 可以得到 "Hello World"
,调用 f1()
函数,也可以得到 "Hello World"
; 这是因为 f1
里面的逻辑是返回 message。通过这个例子可以发现,合约内调用变量并不需要使用 this
之类的关键字,直接使用即可,调用函数也是如此,直接 fnName([x])
就可以。
通过 Remix 调用详情我们可以发现,他们消耗的 gas 不相同。通常直接获取 message
更省钱,因为message
储存在状态变量中,而函数helloWorld
是读取了状态变量然后再返回出去。但是在 Remix 中有时候得到的结果却并不相同,不用太相信 Remix 内的 gas。在 Remix 中,代码顺序,变量名/函数名长短的修改都可以大大影响 gas 消耗,不要太相信 Remix 的 ga 消耗。
在编写 solidity 代码时,保证安全的前提下,让合约消耗更少的 gas 是一个重要的优化方向。后面会有专门的一章进行 gas 优化的探讨,这里不再多展开。
5、到这里solidity已经算入门了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)