Solidity极简入门: 1. HelloWeb3 (三行代码)

Solidity简述

Solidity是以太坊虚拟机(EVM)智能合约的语言。同时,我认为solidity是玩链上项目必备的技能:区块链项目大部分是开源的,如果你能读懂代码,就可以规避很多亏钱项目。

Solidity具有两个特点:

  1. 基于对象:学会之后,能帮你挣钱找对象。
  2. 高级:不会solidity,在币圈显得很low。

开发工具:remix

本教程中,我会用remix来跑solidity合约。remix是以太坊官方推荐的智能合约开发IDE(集成开发环境),适合新手,可以在浏览器中快速部署测试智能合约,你不需要在本地安装任何程序。

网址:remix.ethereum.org

进入remix,我们可以看到最左边的菜单有三个按钮,分别对应文件(写代码的地方),编译(跑代码),部署(部署到链上)。我们点新建(Create New File)按钮,就可以创建一个空白的solidity合约。

第一个Solidity程序

很简单,只有1行注释+3行代码:

ini 复制代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract HelloWeb3{
    string public _string = "Hello Web3!";
}

Copy

我们拆开分析,学习solidity代码源文件的结构:

  1. 第1行是注释,会写一下这个代码所用的软件许可(license),这里用的是MIT license。如果不写许可,编译时会警告(warning),但程序可以运行。solidity的注释由"//"开头,后面跟注释的内容(不会被程序运行)。
arduino 复制代码
// SPDX-License-Identifier: MIT
  1. 第2行声明源文件所用的solidity版本,因为不同版本语法有差别。这行代码意思是源文件将不允许小于 0.8.4 版本或大于等于 0.9.0 的编译器编译(第二个条件由^提供)。Solidity 语句以分号(;)结尾。
ini 复制代码
pragma solidity ^0.8.4;
  1. 第3-4行是合约部分,第3行创建合约(contract),并声明合约的名字 HelloWeb3。第4行是合约的内容,我们声明了一个string(字符串)变量_string,并给他赋值 "Hello Web3!"。
ini 复制代码
contract HelloWeb3{
    string public _string = "Hello Web3!";
}

以后我们会更细的介绍solidity中的变量。

编译并部署代码

在编辑代码的页面,按ctrl+S就可以编译代码,非常方便。

编译好之后,点击左侧菜单的"部署"按钮,进入部署页面。

在默认情况下,remix会用JS虚拟机来模拟以太坊链,运行智能合约,类似在浏览器里跑一条测试链。并且remix会分配几个测试账户给你,每个里面有100 ETH(测试代币),可劲儿用。你点Deploy(黄色按钮),就可以部署咱们写好的合约了。

部署成功后,你会在下面看到名为HelloWeb3的合约,点击_string,就能看到我们代码中写的 "Hello Web3!" 了。

总结

这一讲,我们简单介绍了solidityremix工具,并完成了第一个solidity程序--HelloWeb3。下面我们将继续solidity旅程!

中文solidity资料推荐:

  1. Solidity中文文档(官方文档的中文翻译)
  2. 崔棉大师solidity教程 web3技术教学博主,我看他视频学到了很多
相关推荐
拾光拾趣录3 分钟前
CSS 深入解析:提升网页样式技巧与常见问题解决方案
前端·css
莫空00003 分钟前
深入理解JavaScript属性描述符:从数据属性到存取器属性
前端·面试
guojl4 分钟前
深度剖析Kafka读写机制
前端
FogLetter5 分钟前
图片懒加载:让网页飞起来的魔法技巧 ✨
前端·javascript·css
Mxuan5 分钟前
vscode webview 插件开发(精装篇)
前端
Mxuan6 分钟前
vscode webview 插件开发(交付篇)
前端
Mxuan8 分钟前
vscode 插件与 electron 应用跳转网页进行登录的实践
前端
拾光拾趣录8 分钟前
JavaScript 加载对浏览器渲染的影响
前端·javascript·浏览器
Codebee8 分钟前
OneCode图表配置速查手册
大数据·前端·数据可视化
然我9 分钟前
React 开发通关指南:用 HTML 的思维写 JS🚀🚀
前端·react.js·html