【从0学习Solidity】合约入门 Hello Web3

news2025/1/19 20:38:08

【学习Solidity的基础】入门智能合约开发 Hello Web3

📱不写代码没饭吃上架主页
在这里插入图片描述

在强者的眼中,没有最好,只有更好。我们是全栈开发领域的优质创作者,同时也是阿里云专家博主。
✨ 关注我们的主页,探索全栈开发的无限可能!
🔥我们与您分享最新的技术洞察和实战经验,助您在移动应用开发领域取得成功。
📌欢迎访问我们的微信公众号:不写代码没饭吃,获取更多精彩内容、实用技巧、行业资讯等。您关注的是我们前进的动力!
💼我们还担任阿里云专家博主的角色,为您提供更深入的技术指导和解答疑点。
🌟期待与您一起在移动开发的世界中,不断进步和创造!

文章目录

  • 【学习Solidity的基础】入门智能合约开发 Hello Web3
    • Solidity 简介
    • 开发工具:Remix
    • 编写第一个 Solidity 程序
    • 编译和部署代码
    • 总结

Solidity 简介

Solidity 是一种编程语言,用于编写以太坊虚拟机(EVM)智能合约。掌握 Solidity 是参与区块链项目的必备技能,因为大部分区块链项目都是开源的。如果能够理解代码,就能够避免许多亏钱的项目。

Solidity 具有以下两个特点:

  1. “基于对象”:学会 Solidity 可以帮助你在区块链领域找到好的工作机会,从而实现挣钱和结识新伴侣。
  2. “高级”:不熟悉 Solidity 在加密货币领域可能显得不够专业。

开发工具:Remix

在本教程中,我们将使用 Remix 来运行和测试 Solidity 合约。Remix 是以太坊官方推荐的智能合约集成开发环境(IDE),适合新手使用。通过在浏览器中使用 Remix,你可以快速开发和部署合约,无需在本地安装任何软件。

网址:https://remix.ethereum.org ↗

Remix 中,左侧菜单栏有三个按钮,分别对应文件(用于编写代码)、编译(用于运行代码)和部署(将合约部署到区块链上)。点击“创建新文件”按钮(Create New File),即可创建一个空白的 Solidity 合约。

在这里插入图片描述

编写第一个 Solidity 程序

这个简单的程序只包含 1 行注释和 3 行代码:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

contract HelloWeb3 {
    string public _string = "Hello Web3!";
}

我们来逐行解析这段代码,学习 Solidity 源文件的结构:

  1. 第 1 行是注释,用于说明代码所使用的软件许可证(license),这里使用的是 MIT 许可证。如果不写许可证,编译时会出现警告(warning),但程序仍然可以运行。Solidity 的注释以“//”开头,后面跟着注释内容。这些注释不会被程序执行。
  // SPDX-License-Identifier: MIT
  1. 第 2 行声明了源文件所使用的 Solidity 版本,因为不同版本的语法有所差异。这行代码表示源文件只能使用 0.8.4 版本的编译器进行编译(第二个条件由 ^ 提供)。Solidity 的语句以分号(;)结尾。
 pragma solidity ^0.8.4;
  1. 第 3-4 行是合约部分。第 3 行创建了一个合约(contract),并将其命名为 HelloWeb3。第 4 行是合约的内容,声明了一个公共的字符串变量 _string,并将其赋值为 “Hello Web3!”。
contract HelloWeb3 {
    string public _string = "Hello Web3!";
}

接下来,我们将更详细地介绍 Solidity 中的变量。

编译和部署代码

Remix 的代码编辑页面中,按下 Ctrl + S 即可对代码进行编译,非常方便。

编译完成后,点击左侧菜单栏的“部署”按钮,进入部署页面。

在这里插入图片描述

默认情况下,Remix 会使用 Remix 虚拟机(之前称为 JavaScript 虚拟机)来模拟以太坊链,以运行智能合约。这类似于在浏览器中运行一个测试链。Remix 还会为你分配一些测试账户,每个账户中都有 100 ETH(测试代币),你可以自由使用。点击“Deploy”(黄色按钮),即可部署我们编写的合约。

在这里插入图片描述

部署成功后,你会在下方看到名为 HelloWeb3 的合约。点击 _string,即可看到显示的内容为 “Hello Web3!”。

总结

本节课程中,我们简要介绍了 SolidityRemix 工具,并完成了第一个 Solidity 程序 —— HelloWeb3。接下来,我们将继续深入学习 Solidity

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

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

相关文章

torch.bmm功能解读

bmm 是 batch matrix multiple 的简写,即批量矩阵乘法,矩阵是二维的,加上batch一个维度,因此该函数的输入必须是两个三维的 tensor,三个维度代表的含义分别是:(批量,行,列…

递归与递推

会独立敲一遍代码并debug(1,3题较难;2,4题较简单) 部分题需要买课,可到洛谷或其他OJ找原题 目录 📕空间复杂度(计算方法) 🌼1,费解的开关 🌼2,…

图神经网络教程之HAN-异构图模型

异构图 包含不同类型节点和链接的异构图 异构图的定义:节点类别数量和边的类别数量加起来大于2就叫异构图。 meta-path元路径的定义:连接两个对象的复合关系,比如,节点类型A和节点类型B,A-B-A和B-A-B都是一种元路径。 …

[C++] STL_list常用接口的模拟实现

文章目录 1、list的介绍与使用1.1 list的介绍1.2 list的使用 2、list迭代器3、list的构造4、list常用接口的实现4.1 list capacity4.2 插入删除、交换、清理4.2.1 insert任意位置插入4.2.2 push_front头插4.2.3 push_back尾插4.2.4 erase任意位置删除4.2.5 pop_front头删4.2.6 …

Keil 编译 Debug

# 头文件无法导入进来 # 导入头文件,只有函数声明,但缺少函数实现 已经导入了air32f10x_gpio.h但是没有导入 .c,就导致 编译出错出现undefined symbol (某个函数),这时候按照下面的操作,导入外设模块就好。

PQUEUE - Printer Queue

题目描述 The only printer in the computer science students union is experiencing an extremely heavy workload. Sometimes there are a hundred jobs in the printer queue and you may have to wait for hours to get a single page of output. Because some jobs are …

pip切换源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

CLFS信息泄露漏洞CVE-2023-28266分析

引用 这篇文章的目的是介绍今年4月发布的CLFS信息泄露漏洞CVE-2023-28266分析. 文章目录 引用简介CVE-2023-28266漏洞分析CVE-2023-28266调试过程漏洞复现相关引用参与贡献 简介 文章结合了逆向代码和调试结果分析了CVE-2023-28266漏洞利用过程和漏洞成因. CVE-2023-28266漏洞…

两个线程同步执行:解决乱箭穿心(STL/Windows/Linux)

C自学精简教程 目录(必读) C并发编程入门 目录 多线程同步 线程之间同步是指线程等待其他线程执行完某个动作之后再执行(本文情况)。 线程同步还可以是像十字路口的红绿灯一样,只允许一个方向的车同行,其他方向的车等待。 本…

UART串口Shell软硬件模型分析总结

文章目录 层次一、最底层逻辑配置交互----如何从Uart硬件读写单个字节数据层次二、抽象串口软件模块交互----基于串口对接输入输出流 和 Printf适配层次三、类似Shell封装抽象交互----基于串口交互命令行界面(命令解析、补全、修改、记录)case1 依次输入…

自建音乐服务器Navidrome之一

这里写自定义目录标题 1.1 官方网站 2. Navidrome 简介2.1 简介2.2 特性 3. 准备工作4. 视频教程5. 界面演示5.1 初始化页5.2 专辑页 前言 之前给大家介绍过 Koel 音频流服务,就是为了解决大家的这个问题:下载下来的音乐,只能在本机欣赏&…

上海的正西边有哪些城市

背景 上海一路向西,来一趟拉萨之行,那么上海出现,所经过的那么多城市,哪些是在上海的正西边呢? 画一幅地图 基于这个背景需求,我们需要拿来一幅地图,一看便知。下面的python代码生成了一幅地…

通信原理板块——平稳随机过程

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 1、平稳随机过程的定义 (1)严平稳随…

UE4 显示遮挡物体

SceneDepth是你相机能够看见的物体的深度距离 CustomDepth是你相机包括看不见被遮挡的物体的深度距离 如果CustemDepth比SceneDepth的距离相等,那么就是没有被遮挡的物体,如果被遮挡那么就是CustemDepth比SceneDepth深度距离远,然后再做对应…

PYTHON知识点学习-循环语句

🚀write in front🚀 🔎大家好,我是Aileen★。希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🆔本文由 Aileen_0v0★ 原创 CSDN首发🐒 如需转载还…

【机器学习】线性回归

Model Representation 1、问题描述2、表示说明3、数据绘图4、模型函数5、预测总结附录 1、问题描述 一套 1000 平方英尺 (sqft) 的房屋售价为300,000美元,一套 2000 平方英尺的房屋售价为500,000美元。这两点将构成我们的数据或训练集。面积单位为 1000 平方英尺&a…

Swift 如何从图片数据(Data)检测原图片类型?

功能需求 如果我们之前把图片对应的数据(Data)保持在内存或数据库中,那么怎么从 Data 对象检测出原来图片的类型呢? 如上图所示:我们将 11 张不同类型的图片转换为 Data 数据,然后从 Data 对象正确检测出了原图片类型。 目前,我们的代码可以检测出 jpeg(jpg), tiff,…

WebRTC 安全之一

WebRTC 的安全需要满足三个基本需求 Authentication 用户访问需要认证Authorization 用户访问需要授权Audit 用户的访问应该可被追踪和审查 其中前两项也可以归结为 CIA Confidentiality 机密性:信息需要保密, 访问权限也需要控制Integrity 完整性&#…

Spring Cloud集成Nacos配置中心/注册中心

Spring Cloud版本 2021.0.5 Spring Cloud Alibaba版本 2021.0.5.0 Spring Boot版本 2.7.10 pom文件 需要放在依赖管理的pom文件 <dependencyManagement><dependencies><!-- spring boot依赖 --><dependency><groupId>org.springframewor…

2023-9-3 试除法判定质数

题目链接&#xff1a;试除法判定质数 #include <iostream>using namespace std;bool is_prime(int n) {if(n < 2) return false;for(int i 2; i < n / i; i){if(n % i 0) return false;}return true; }int main() {int n;cin >> n;while(n--){int x;cin &g…