第二课:Solidity开发环境搭建

说实话,很多新手一上来就急着写合约,结果连环境都没配好,debug 到怀疑人生。我个人习惯是先把开发环境理清楚,后面写代码才能行云流水。这节课,我们就来把 Remix IDE、Hardhat、本地测试节点和 MetaMask 这四件套安排明白。

一、Remix IDE:零门槛的在线编辑器

如果你只是想快速验证一个合约逻辑,Remix 绝对是最佳选择。它不需要安装,打开浏览器就能用。我刚开始学 Solidity 时,就是靠 Remix 一点点试出来的。

访问地址https://remix.ethereum.org

界面主要分三块:

  • 文件管理器:左侧,管理你的 .sol 文件
  • 编辑器:中间,写代码的地方
  • 终端与插件:右侧,编译、部署、调试
小技巧:我个人习惯把 Solidity 编译器插件固定到快捷栏。在插件面板搜索 "Solidity compiler",点激活就行。这样每次编译只需 Ctrl+S。

写一个最简单的合约试试:

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

contract HelloWorld {
    string public message = "Hello, DEX!";
}

点击编译按钮,绿色勾出现就说明没问题。然后切换到 "Deploy & Run Transactions",选 "Remix VM" 作为环境,点 Deploy。嗯,就是这么简单。

注意:Remix VM 是虚拟环境,每次刷新页面数据就没了。别用它存重要数据,我吃过这个亏。

二、Hardhat:专业开发者的标配

Remix 适合小打小闹,真要开发 DEX 这种复杂项目,还得上 Hardhat。它集成了编译、测试、部署、调试全套流程。我个人在多个生产级项目中都用它,稳得很。

安装步骤

  1. 确保装了 Node.js(v16 以上)
  2. 创建项目目录并初始化
mkdir my-dex
cd my-dex
npm init -y
npm install --save-dev hardhat

初始化 Hardhat 项目:

npx hardhat init

选 "Create a JavaScript project",一路回车。你会看到这样的目录结构:

my-dex/
├── contracts/        # 放 Solidity 合约
├── scripts/          # 部署脚本
├── test/             # 测试文件
├── hardhat.config.js # 配置文件
└── package.json

核心配置:打开 hardhat.config.js,你会看到类似这样的内容:

module.exports = {
  solidity: "0.8.20",
  networks: {
    localhost: {
      url: "http://127.0.0.1:8545"
    }
  }
};

这里可以配置多个网络,比如本地测试网、测试网、主网。我一般会加一个 sepolia 测试网的配置,方便部署到真实测试环境。

三、本地测试节点:Ganache vs Hardhat Network

为什么要搭本地节点?你想想看,每次测试都往公链上发交易,gas 费谁受得了?本地节点就是你的私人测试环境,免费、快速、可控。

方案一:Hardhat Network(推荐)

Hardhat 自带一个内置节点,启动命令:

npx hardhat node

启动后,它会创建 20 个测试账户,每个账户有 10000 ETH。终端会显示账户地址和私钥。我个人更倾向这个方案,因为它和 Hardhat 深度集成,调试信息更丰富。

方案二:Ganache

Ganache 是 Truffle 团队的产品,有桌面版和命令行版。安装方式:

npm install -g ganache
ganache

它也会生成测试账户,默认监听 7545 端口。不过我现在很少用 Ganache 了,因为 Hardhat Network 已经足够好。

我的建议:直接用 Hardhat Network。少装一个工具,少一份麻烦。我曾经在 Ganache 和 Hardhat 之间切换,结果配置搞混了,debug 了一下午。

四、MetaMask 钱包配置

MetaMask 是浏览器插件钱包,用来和你的 DApp 交互。配置本地网络其实很简单:

  1. 安装 MetaMask 插件(Chrome/Firefox 商店都有)
  2. 创建钱包,保存好助记词(别告诉任何人)
  3. 点击网络切换按钮,选 "添加网络"

填入以下信息:

字段
网络名称 Localhost 8545
RPC URL http://127.0.0.1:8545
链 ID 31337
货币符号 ETH

链 ID 为什么是 31337?这是 Hardhat Network 的默认值。Ganache 默认是 1337,别搞混了。

添加完网络后,还需要导入测试账户。从 Hardhat node 终端复制一个账户的私钥,在 MetaMask 里点 "导入账户",粘贴私钥。搞定。

安全提醒:测试网的私钥无所谓,但主网的私钥绝对不要复制粘贴到任何地方。我曾经见过有人把主网私钥贴到聊天群里,结果钱包被清空。血的教训。

五、实战:跑通第一个 Hardhat 脚本

环境都搭好了,我们来写个部署脚本验证一下。在 scripts 目录下创建 deploy.js

const hre = require("hardhat");

async function main() {
  const HelloWorld = await hre.ethers.getContractFactory("HelloWorld");
  const hello = await HelloWorld.deploy();
  await hello.deployed();

  console.log("合约部署到:", hello.address);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

然后运行:

npx hardhat run scripts/deploy.js --network localhost

如果看到合约地址输出,恭喜你,整个开发环境就通了。

总结一下今天的成果

  • ✅ Remix IDE:快速原型验证
  • ✅ Hardhat:专业项目开发框架
  • ✅ 本地节点:免费测试环境
  • ✅ MetaMask:钱包交互配置

这套组合拳,足够支撑你完成整个 DEX 的开发。下一节课,我们就要开始写真正的合约代码了。

公众号:蓝海资料掘金营,微信deep3321