3、开发环境搭建:从零开始,把工具箱备齐
说实话,每次开始一个新项目,我最享受的就是搭建环境这个环节。就像木匠开工前要磨好刨子,程序员写代码前也得把工具备齐。这一章,咱们就把 NFT 平台开发需要的所有工具,一个一个装好、配好。
我个人习惯把环境搭建分成三块:基础工具(Node.js、Git)、区块链框架(Truffle/Hardhat)、节点服务(Infura/Alchemy)。咱们按顺序来,别急。
3.1 安装 Node.js 和 npm/yarn
Node.js 是整个开发环境的核心。没有它,后面所有工具都跑不起来。
下载安装
去官网 nodejs.org 下载 LTS 版本。我建议用 LTS,别追新。曾经有个同事装了最新版,结果某个依赖包不兼容,折腾了一下午。
# 验证安装
node -v
# 输出类似 v18.17.0
npm -v
# 输出类似 9.6.7
npm 还是 yarn?
我个人更倾向 yarn,因为它的依赖管理更稳定,安装速度也快。但 npm 是官方标配,用哪个都行。
# 安装 yarn(全局)
npm install -g yarn
# 验证
yarn --version
npm config set registry https://registry.npmmirror.com
yarn config set registry https://registry.npmmirror.com
3.2 安装 Git 并配置
Git 是版本控制的标配,没有它,代码管理就是一团乱麻。
# 下载安装后验证
git --version
# 配置用户名和邮箱(重要!)
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
嗯,这里要注意:邮箱最好和你的 GitHub 账号一致,不然提交记录会显示成两个不同的人。我曾经因为这个被队友吐槽过。
3.3 选择框架:Truffle 还是 Hardhat?
这是个经典问题。我两个都用过,说说我的感受。
| 对比项 | Truffle | Hardhat |
|---|---|---|
| 上手难度 | 简单,配置少 | 稍复杂,但灵活 |
| 调试能力 | 一般 | 强,内置 console.log |
| 插件生态 | 成熟 | 快速增长 |
| 本地测试链 | Ganache(独立应用) | Hardhat Network(内置) |
| 社区活跃度 | 稳定 | 目前更活跃 |
我个人现在更常用 Hardhat。为什么?因为它内置了本地测试链,不用额外启动 Ganache,而且调试时可以直接在 Solidity 代码里写 console.log,太方便了。
安装 Hardhat
mkdir nft-platform
cd nft-platform
npm init -y
npm install --save-dev hardhat
# 初始化项目
npx hardhat init
# 选择 "Create an empty hardhat.config.js"
安装 Truffle(如果你想用)
npm install -g truffle
truffle init
3.4 配置 MetaMask 钱包
MetaMask 是浏览器里的以太坊钱包,开发测试时必不可少。
- 去 Chrome 应用商店搜索 MetaMask,安装扩展
- 创建钱包,保存好助记词(别截图,别存云端)
- 添加测试网络:打开设置 → 网络 → 添加网络
配置本地测试网络参数:
| 网络名称 | Localhost 8545 |
| RPC URL | http://127.0.0.1:8545 |
| 链 ID | 31337(Hardhat 默认)或 1337(Ganache 默认) |
| 货币符号 | ETH |
3.5 注册 Infura 或 Alchemy 节点服务
为什么需要节点服务?因为你的 DApp 不能直接连以太坊主网,需要一个中间人帮你转发交易。Infura 和 Alchemy 就是干这个的。
注册步骤(以 Alchemy 为例)
- 打开 alchemy.com,注册账号
- 创建一个 App,选择网络(比如 Ethereum Goerli 测试网)
- 复制 HTTP Endpoint 地址,后面部署合约时会用到
我个人推荐 Alchemy,因为它的免费额度更慷慨,而且有实时监控面板,方便调试。
# 在 .env 文件中保存你的 API Key
ALCHEMY_API_KEY=your_key_here
SEPOLIA_PRIVATE_KEY=your_wallet_private_key
3.6 启动本地测试链
本地测试链让你可以在自己的电脑上模拟区块链环境,不用花钱,也不用等区块确认。
方式一:Hardhat Network(推荐)
npx hardhat node
# 输出示例:
# Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/
#
# Accounts
# ========
# Account #0: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (10000 ETH)
# ...
它会自动创建 20 个测试账户,每个有 10000 ETH,随便用。
方式二:Ganache(如果你用 Truffle)
# 安装 Ganache CLI
npm install -g ganache-cli
# 启动
ganache-cli -p 8545
我个人更喜欢 Hardhat Network,因为它启动更快,而且和 Hardhat 框架无缝集成。
3.7 部署第一个 Hello World 合约
环境搭好了,总得跑个 Hello World 试试吧?
写合约
// contracts/HelloWorld.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
contract HelloWorld {
string public message;
constructor() {
message = "Hello, NFT World!";
}
function setMessage(string memory _newMessage) public {
message = _newMessage;
}
}
写部署脚本
// scripts/deploy.js
async function main() {
const HelloWorld = await ethers.getContractFactory("HelloWorld");
const hello = await HelloWorld.deploy();
await hello.waitForDeployment();
console.log("合约部署地址:", await hello.getAddress());
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
运行部署
# 先启动本地链(另一个终端)
npx hardhat node
# 部署合约
npx hardhat run scripts/deploy.js --network localhost
# 输出示例:
# 合约部署地址: 0x5FbDB2315678afecb367f032d93F642f64180aa3
3.8 避坑指南
- 端口冲突: 如果 8545 端口被占用,可以用
--port 8546指定其他端口 - 版本兼容: Hardhat 2.x 需要 Node.js 16+,别用太老的版本
- Gas 费用: 本地测试链不需要真钱,但部署到测试网时记得领测试币
- 网络切换: 部署前确认 MetaMask 选对了网络,我曾在主网上部署过测试合约,花了真金白银
好了,环境搭建就到这里。下一章咱们开始写真正的 NFT 合约,到时候这些工具就全派上用场了。