核心关键词:Geth、以太坊私链、账户创建、转账、geth命令、本地测试链、区块链开发
跟着本实战教程,你将在 15 分钟内 完成以下任务:下载并配置 Go-Ethereum(Geth)、初始化本地私链、创建至少两个账户、启动矿工挖以太币并完成第一笔链上转账。所有操作零成本,无需消耗主网 Gas。
1. 准备环境:下载并放置 Geth 可执行文件
- 访问 官方下载页面 获取对应系统版本。
- 解压缩后得到名为 geth 的二进制文件。
建议将其统一放入
~/go/bin,方便后续命令行直接调用。mkdir -p ~/go/bin mv /下载路径/geth ~/go/bin chmod +x ~/go/bin/geth
2. 初始化私链:genesis.json 的作用与步骤
私链不会同步主网数据,也不会上传任何真实交易,完全本地化运行。
- 在项目根目录新建
go文件夹,随后把你准备好的genesis.json放入。
👉 完整示例 genesis 模板在此,点开直接复制即可使用。
https://okxdog.com/ 初始化数据目录:
./bin/geth --datadir=./datadir init genesis.json查看目录结构,确认生成
geth与keystore两个子文件夹:sudo snap install tree # 如未安装 tree tree datadir
3. 创建你的第一个账户
命令:
./bin/geth --datadir=./datadir account new- 系统提示输入 两次密码,务必牢记;示例密码:
123456(正式环境请使用强密码)。 - 完成后,
keystore将多出一个以 UTC 时间戳开头的文件,文件名内嵌 公钥地址。
4. 进入 Geth JavaScript 控制台
./bin/geth --datadir=./datadir console控制台内可直接调用 web3、eth、personal 等 API,实现对区块链的交互。
5. 启动矿工:一键挖出本地以太币
在 Geth 控制台依次输入:
> miner.start(1) // 1 线程挖矿当看到 Commit new sealing work 与 Successfully sealed a new block 提示时,代表开始生产区块。挖 30 秒左右即可停止:
> miner.stop()
> eth.blockNumber // 检验区块高度
> web3.fromWei(eth.getBalance(eth.accounts[0]), "ether") // 检验余额如遇到 DAG 生成卡顿,👉 常见卡点与解决方案。
https://okxdog.com/
6. 创建第二个账户并解锁
控制台内继续:
> personal.newAccount("123456")查看当前全部账户:
> eth.accounts ["0x5921A6Ee66Bb12B4...", "0x2A1a50f37F6514..."]
7. 构建并发送第一笔转账交易
确保 源账户解锁 后才能签名交易:
> personal.unlockAccount(eth.accounts[0], "123456")
> eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(10, "ether")})返回的哈希即为 交易 hash。若 eth.getTransaction 里的 blockNumber 仍为 null,说明尚未被矿工打包,需要再次启动:
> miner.start(1)
// 5 秒后
> miner.stop()
> web3.fromWei(eth.getBalance(eth.accounts[1]), "ether")8. 区块溯源:理解“链”如何连接
> eth.getBlock(39) // 获取刚挖出区块
> eth.getBlock("parentHash") // 追溯父块每一个区块通过 parentHash 指向上一块,最终回到创世块(genesis block)。这就是区块链名称的由来。
常见问题与解答 (FAQ)
Q1: 私链与测试网有什么区别?
A: 私链不依赖外部节点,区块产生的速度与难度全部由你定义;测试网需要在线同步数据且出块节奏固定。
Q2: 忘记账户密码怎么办?
A: 密码丢失等同失去私钥控制权,无法找回;建议在安全环境内使用 密码管理器。
Q3: 为什么 sendTransaction 报 “nonce too low”?
A: Geth 偶尔计数不同步。使用 txpool.status 检查交易池,并确保没有其他 pending 交易。
Q4: 钱包余额不更新?
A: 先确认被正确挖矿打包;eth.getTransactionReceipt(hash) 返回 status: 0x1 表示交易成功。
Q5: 能否一次性预挖大量以太币?
A: 把 alloc 字段写进 genesis.json,为指定地址预分配任意数量即可跳过挖矿。
总结与行动清单
- 完成环境搭建并保存命令脚本,方便下次直接复用。
- 继续深入:尝试部署 智能合约、构建 DApp 或对接 Web3.js。
- 关注矿工难度、Gas Limit 等配置,实战模拟真实业务场景。
通过一次快速上手,你已掌握区块链开发必经的 私链、账户管理 与 转账 三大核心环节。在每个不确定的地方,反复实践是最好的老师。祝你编码愉快!