区块链开发入门最怕一上来就面对主网、Gas费、测试币水龙头这些概念。其实最舒服的姿势是先在本地跑一条私链,用预置的10000 ETH随便“挥霍”。本文记录了我用 Hardhat 从零搭建本地节点并完成一笔转账的全过程,全程无需深入区块链原理,跟着敲命令就能跑通。
一、为什么从本地私链开始?
学习以太坊智能合约开发,本地私链是最好的练习场:
-
零成本:无需申请测试币,默认账户自带 10000 ETH
-
极速出块:按需打包,交易几乎即时确认
-
完全可控:可以随意重置、分叉、调试
这次我用的是 Hardhat —— 目前最流行的以太坊开发框架,集成了编译、部署、测试、本地节点于一体。以下是基于官方“保姆包”的实践记录。
二、准备工作:解压项目包
首先拿到一个预先配置好的 Hardhat 项目压缩包 my-hardhat-project.zip,解压到任意文件夹(路径最好不要包含中文或空格)。比如我解压到了:
text
D:\hardhat进度备份\my-hardhat-project①私链交易
解压后目录结构大致如下(标准的 Hardhat 项目):
text
my-hardhat-project/
├── contracts/ # 智能合约(Solidity)
├── scripts/ # 执行脚本(我们转账用的就在这里)
├── test/ # 测试文件
├── hardhat.config.js # 配置文件
└── package.json # 依赖管理
三、启动本地节点(挖矿监听)
我们需要两个命令行窗口(Windows 下用 CMD 或 PowerShell 均可),一个用来跑节点服务,另一个用来执行转账脚本。
3.1 打开两个 CMD 窗口
快捷键 Win + R,输入 cmd,回车打开第一个;再重复一次打开第二个。
3.2 切换到项目目录
在两个窗口中分别执行(注意替换成你自己的解压路径):
bash
cd /d "D:\hardhat进度备份\my-hardhat-project①私链交易\my-hardhat-project"
小提示:可以直接从资源管理器地址栏复制路径,避免手敲出错。
3.3 启动 Hardhat 本地节点(左边窗口)
在左边窗口输入:
bash
npx hardhat node
稍等片刻,你会看到如下信息(这就是私链的创世账户):
text
Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/
Accounts
========
WARNING: These accounts, and their private keys, are publicly known.
Any funds sent to them on Mainnet or any other live network WILL BE LOST.
Account #0: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (10000 ETH)
Private Key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
Account #1: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 (10000 ETH)
...
Hardhat 默认生成了 20 个账户,每个都有 10000 ETH(仅供开发测试使用)。千万不要把私钥用于主网!
此时这个窗口会一直保持运行,实时打印出块日志,不要关闭。
四、执行转账脚本(右边窗口)
项目包里已经写好了转账脚本 scripts/transfer.js,我们只需要指定转出方和接收方的地址即可。
4.1 运行脚本命令
在右边窗口输入:
bash
npx hardhat run scripts/transfer.js --network localhost
4.2 输入转账双方地址
脚本运行后会提示你输入两个地址:
-
发送方(从左边窗口复制任意 Account #x 的地址)
-
接收方(复制另一个不同账户的地址)
比如我选择:
-
发送方:
Account #0的地址0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 -
接收方:
Account #1的地址0x70997970C51812dc3A010C7d01b50e0d17dc79C8
按提示粘贴过去,回车。
4.3 观察区块打包
此时左边窗口(节点日志)会瞬间刷出一排绿色的日志,表示新区块已生成并打包了这笔转账交易:
text
eth_sendTransaction
Contract call: ...
Transaction: 0x...
Block: 1
Gas used: 21000
右边窗口也会返回交易哈希和转账成功的提示。
五、查账验证余额变化
转账完成后,我们当然要核对一下余额是否真的变了。
5.1 执行查账脚本
项目中通常还提供了查询余额的脚本(或直接在 Hardhat 控制台操作)。这里文档中给出了查账结果示例:
text
账户 #19 地址:0xdD2FD4581271e230360230F9337D5c0430Bf44C0 以太币余额:11100.0 ETH
账户 #20 地址:0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199 以太币余额:8899.999978999999853 ETH
可以看到,接收方余额增加了(比如 11100 ETH),发送方减少了(扣除转账金额 + Gas费)。至此,一条完整的本地私链转账流程就跑通了。
六、扩展:如何自定义其他脚本?
项目中的所有功能都由 scripts/ 目录下的 JS 脚本实现。如果你要部署合约、调用合约方法,只需:
bash
npx hardhat run scripts/你的脚本.js
# 如果需要连接本地节点,加 --network localhost
npx hardhat run scripts/你的脚本.js --network localhost
只要脚本逻辑正确,理论上任何链上操作都可以通过这种方式完成。
七、总结 & 一点感悟
这次本地私链的搭建和转账操作,全程不到 5 分钟,却让我直观地感受到了区块链交易的生命周期:发起 → 签名 → 广播 → 打包 → 确认。Hardhat 把底层复杂的事情封装得极其友好,开发者只需要关注业务逻辑。
值得一提的是,这份指导书本身也是借助 AI(DeepSeek、Kimi、豆包)辅助生成的。正如文档末尾所说:
“可以说是‘无需理解亦能胜任了’”——确实,在 AI 的帮助下,即使只有很少的区块链理论知识,也能顺利完成开发环境的搭建和基础操作。
但我也建议,跑通之后还是回头了解一下账户、私钥、Gas、nonce 这些基本概念,这样未来面对复杂合约时才能心中有数。
下一步:可以试试自己写一个 ERC-20 代币合约,用同样的方式部署到本地私链,然后用脚本转账——你会发现流程完全一致。祝你玩得开心!