Solidity 入门:写第一个智能合约

教程 · 2026-05-29 · 比特三棱镜编辑部
AI 搜索

5 步从零写出你的第一个 HelloWorld 合约

  1. 打开 Remix——浏览器里就能开发,不用装环境。
  2. 写一段最简单的 Solidity 代码。
  3. 编译,看编译产物。
  4. 切到测试网,用领来的免费 ETH 部署。
  5. 用 MetaMask 或 Remix 自带的接口和它交互。

不需要懂高等数学,不需要装 Linux,不需要任何区块链先修知识——你只要愿意花一个晚上跟着敲一遍。 (/uploads/20260529/1780066678858-99585.png)

Remix 浏览器 IDE 编写第一个 Solidity 合约的界面示意

为什么从 Solidity 开始

Solidity 是以太坊及所有 EVM 链(Polygon、Arbitrum、Base、BSC、Avalanche C-Chain)使用的主流智能合约语言。学会它,你写的合约理论上可以部署到几十条链上去——这是其他语言(Move、Rust)目前还做不到的覆盖度。

它的语法和 JavaScript 很像,曲线没那么陡。但它和普通编程的根本差别有三个

  • 每一行代码都要付 Gas——存储和计算都是钱。
  • 代码部署后无法直接修改——你只能"再部署一个版本"。
  • 合约里的"共识"=用户看到的真相——bug 会直接变成可被利用的洞。

这三点决定了智能合约的"工程心态"和普通后端完全不同。学完入门,再去深读 区块链开发学习路线,会顺很多。

第 1 步:打开 Remix

地址是 remix.ethereum.org。它是浏览器里的完整 Solidity IDE——编辑器、编译器、部署、调试一站到位。新手不要折腾 Hardhat / Foundry,Remix 足够。

界面三块:

  • 左侧 File Explorer:项目文件树。
  • 左侧侧栏图标:编译器(Solidity Compiler)、部署器(Deploy & Run)、调试器、插件。
  • 中间编辑区:写代码。
  • 底部终端:编译错误、交易日志在这里出现。

第一次打开会有默认示例(1_Storage.sol2_Owner.sol3_Ballot.sol),可以删,也可以留着对照。

第 2 步:写第一段代码

新建文件 HelloWorld.sol,敲下面这段:

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

contract HelloWorld {
    string public message;

    constructor(string memory _initialMessage) {
        message = _initialMessage;
    }

    function setMessage(string memory _newMessage) public {
        message = _newMessage;
    }
}

逐行看:

  • SPDX-License-Identifier:开源许可证标识,写不写都能编,但建议养成习惯。
  • pragma solidity ^0.8.20:要求编译器版本 ≥ 0.8.20。0.8 系列内置溢出检查,是当前推荐主线。
  • contract HelloWorld:合约关键字,类似 class。
  • string public message:状态变量,永久存在链上。public 自动生成同名 getter。
  • constructor(…):部署时执行一次,初始化 message。
  • setMessage(…) public:任何人都能调,改写 message。

不到 10 行,但已经包含了状态变量、构造函数、写函数三件套——绝大多数合约都是这三类东西的排列组合。

第 3 步:编译

切到 Solidity Compiler 标签:

  • Compiler version:选 0.8.20 或更新。
  • Compile HelloWorld.sol
  • 看到绿色对勾 = 通过。

编译产物里有两个关键值:

  • ABI(Application Binary Interface):函数签名清单,前端、钱包、Etherscan 用它来调用合约。
  • Bytecode:真正部署到链上的字节码。

点 “ABI” 按钮就能复制出 JSON——这玩意儿就是合约和外部世界的"插头",Etherscan 上的 Read/Write Contract 功能 解析的也是这个 ABI。

第 4 步:部署到测试网

MetaMask 切换 Sepolia 测试网准备部署合约的钱包界面

主网部署要花真钱(按 Gas 算可能几美元到几十美元),新手必须先在测试网练手。目前活跃的测试网是 Sepolia

准备工作:

  1. MetaMask 切到 Sepolia:钱包顶部网络列表里直接选。
  2. 领测试 ETH:访问任意 Sepolia Faucet(如 sepoliafaucet.com、Alchemy Faucet),输入地址。一次能领 0.05–0.5 ETH,够你部署几十次合约。
  3. Remix 切环境:Deploy & Run 标签里 ENVIRONMENT 选 “Injected Provider - MetaMask”。会弹出 MetaMask 让你授权连接。

然后:

  • 在 CONTRACT 下拉里选 HelloWorld
  • _initialMessage 输入框填 Hello, Web3(含引号或不含都行,看 Remix 版本提示)。
  • Deploy
  • MetaMask 弹窗 → 确认 → 等待 10–30 秒。
  • 部署成功后,左下角 “Deployed Contracts” 出现你的合约和地址。

把这个地址粘到 Sepolia Etherscan 搜一下,你能看到自己刚刚的部署交易——这条记录会永久存在,多年后还能查得到。

第 5 步:和合约交互

回到 Remix 左下角 “Deployed Contracts”,展开你的合约,看到两个按钮:

  • message(蓝色):调用 view,免费,立刻返回 "Hello, Web3"
  • setMessage(橙色):调用 state-changing,会发起一笔交易、付 Gas。

试一次:

  1. 在 setMessage 输入框填 "Hello from <你的名字>"
  2. 点按钮 → MetaMask 弹窗 → 确认。
  3. 等几秒后,再点 message → 返回值已经变了。

你的状态变量被写进了以太坊主网外的一个测试副本,全世界任何节点都能验证它的当前值。这就是智能合约最魔法的地方——没有服务器,但状态全网一致

(/uploads/20260529/1780066723209-22519.png)

几个新手必踩的坑

Gas 估算不够——Remix 会自动估,但偶尔失败。手动改大 Gas Limit 即可。

MetaMask 没切对网络——部署半天发现连主网了,Gas 烧出火星。每次部署前看一眼右上角网络名

没领够测试 ETH——Sepolia faucet 有频次限制,多个钱包轮流领。

改了代码忘了重新编译——Remix 不会自动重编,部署的是旧版本。习惯每次改完按 Ctrl+S 触发编译。

部署后想改代码? 不行。智能合约部署后字节码不可变。“升级合约” 的做法叫 Proxy Pattern,超出入门范围。

它和普通编程的根本差异

维度 普通后端 Solidity 合约
部署成本 几乎为零 按字节码大小付 Gas
修改 改了重启 不可改,只能新部署
状态存储 自有数据库 链上 storage,每字节都付钱
并发 多线程、锁 串行执行,无并发问题
调试 加日志重启 事件日志(event)+ 链上追踪

把这五行刻在脑子里,写代码时就不会犯"假设它和后端一样灵活"的错。

进阶往哪儿走

写完 HelloWorld 后,下一步通常是:

  • 写一个 ERC-20——大概 50 行,能让你理解事件、Mapping、modifier。
  • 写一个简易 NFT(ERC-721)——理解 metadata、tokenURI。
  • 读懂 Uniswap V2 的 Pair.sol——理解 Uniswap 怎么工作
  • 跑一遍 账户抽象 (ERC-4337) 示例,理解 EOA 和 SCA 的差别。
  • 不写新合约,先看合约,看主流项目都怎么写的。

常见提问

  • 必须懂 JavaScript 吗? 不必须,但语法接近,会更轻松。
  • 能直接部署到主网吗? 技术上可以,没人拦你。但任何主网合约都要先过测试、过审计——参考 智能合约审计
  • Solidity 是不是过时了? 没有。EVM 链占整个智能合约市场 70%+,可见的未来都不会过时。
  • 应该学 Solidity 还是 Rust? 想做主流 DApp,先学 Solidity;想做 Solana / 高性能基础设施,再补 Rust。

从读到写,只差一次部署的勇气

智能合约的入门门槛远比你想的低——一个 IDE、一个钱包、一杯咖啡的时间,你就能把字节码送上以太坊。真正的门槛在后面:怎么写出不被攻击的代码、怎么省 Gas、怎么设计可升级架构、怎么过审计——这些都是你部署完 HelloWorld 之后要走的路。

但今晚,先把这五步走完。

从读懂合约,到写出合约,只差一次部署的勇气。