Geth 入门实战:本地私链搭建、账户创建与转账全教程

·

核心关键词:Geth、以太坊私链、账户创建、转账、geth命令、本地测试链、区块链开发

跟着本实战教程,你将在 15 分钟内 完成以下任务:下载并配置 Go-Ethereum(Geth)、初始化本地私链、创建至少两个账户、启动矿工挖以太币并完成第一笔链上转账。所有操作零成本,无需消耗主网 Gas。


1. 准备环境:下载并放置 Geth 可执行文件

  1. 访问 官方下载页面 获取对应系统版本。
  2. 解压缩后得到名为 geth 的二进制文件。
  3. 建议将其统一放入 ~/go/bin,方便后续命令行直接调用。

    mkdir -p ~/go/bin
    mv /下载路径/geth ~/go/bin
    chmod +x ~/go/bin/geth

2. 初始化私链:genesis.json 的作用与步骤

私链不会同步主网数据,也不会上传任何真实交易,完全本地化运行。

  1. 在项目根目录新建 go 文件夹,随后把你准备好的 genesis.json 放入。
    👉 完整示例 genesis 模板在此,点开直接复制即可使用
    https://okxdog.com/
  2. 初始化数据目录:

    ./bin/geth --datadir=./datadir init genesis.json
  3. 查看目录结构,确认生成 gethkeystore 两个子文件夹:

    sudo snap install tree   # 如未安装 tree
    tree datadir

3. 创建你的第一个账户

  1. 命令:

    ./bin/geth --datadir=./datadir account new
  2. 系统提示输入 两次密码,务必牢记;示例密码:123456(正式环境请使用强密码)。
  3. 完成后,keystore 将多出一个以 UTC 时间戳开头的文件,文件名内嵌 公钥地址

4. 进入 Geth JavaScript 控制台

./bin/geth --datadir=./datadir console

控制台内可直接调用 web3ethpersonal 等 API,实现对区块链的交互。


5. 启动矿工:一键挖出本地以太币

在 Geth 控制台依次输入:

> miner.start(1)   // 1 线程挖矿

当看到 Commit new sealing workSuccessfully sealed a new block 提示时,代表开始生产区块。挖 30 秒左右即可停止:

> miner.stop()
> eth.blockNumber   // 检验区块高度
> web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")   // 检验余额

如遇到 DAG 生成卡顿,👉 常见卡点与解决方案。
https://okxdog.com/


6. 创建第二个账户并解锁

  1. 控制台内继续:

    > personal.newAccount("123456")
  2. 查看当前全部账户:

    > 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,为指定地址预分配任意数量即可跳过挖矿。


总结与行动清单

  1. 完成环境搭建并保存命令脚本,方便下次直接复用。
  2. 继续深入:尝试部署 智能合约、构建 DApp 或对接 Web3.js
  3. 关注矿工难度、Gas Limit 等配置,实战模拟真实业务场景。

通过一次快速上手,你已掌握区块链开发必经的 私链账户管理转账 三大核心环节。在每个不确定的地方,反复实践是最好的老师。祝你编码愉快!