Ubuntu 系统下搭建以太坊私链完整指南

网络 阅读: 2026-01-18 22:11:57

以太坊作为全球领先的智能合约平台,其公链虽然功能强大,但对于开发者而言,在进行应用测试、算法验证或学习研究时,搭建一个本地或私有的以太坊网络(即“私链”)往往更为便捷和高效,本文将详细介绍如何在 Ubuntu 系统上,从零开始搭建一个以太坊私链。

准备工作

在开始之前,请确保您的 Ubuntu 系统满足以下基本条件:

  1. 操作系统:推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS 版本,这些版本拥有较好的稳定性和社区支持。
  2. 硬件要求:私链对硬件要求不高,一般 2GB 以上内存,10GB 以上可用硬盘空间即可满足基本需求。
  3. 软件环境
    • git:用于下载源代码。
    • make:用于编译构建。
    • g :C 编译器。
    • build-essential:包含基本编译工具集。
  4. 网络连接:虽然私链可以离线运行,但初期安装和下载依赖需要网络连接。

更新系统并安装必要的软件包:

sudo apt update
sudo apt upgrade -y
sudo apt install -y git make g   build-essential

安装 Go 语言环境

以太坊客户端(如 Geth)通常使用 Go 语言开发,因此需要先安装 Go。

  1. 下载 Go:访问 Go 官方下载页面 获取最新版本的 Linux AMD64 下载链接,以下以 Go 1.21.0 为例:

    wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
  2. 解压并安装

    sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
  3. 配置环境变量:编辑 ~/.bashrc 文件,添加 Go 的 bin 目录到 PATH:

    echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
    source ~/.bashrc
  4. 验证安装

    go version

    如果显示 Go 版本号,则安装成功。

编装并安装 Geth 客户端

Geth(Go-Ethereum)是以太坊官方实现的 Go 语言客户端,是最常用的以太坊节点软件之一。

  1. 克隆 Geth 源代码

    git clone https://github.com/ethereum/go-ethereum.git
    cd go-ethereum
  2. 编译 Geth

    make geth

    编译过程可能需要一些时间,具体取决于您的电脑性能。

  3. 验证安装

    ./build/bin/geth version

    如果能看到 Geth 的版本信息,说明编译安装成功,为了方便使用,可以将 Geth 添加到系统 PATH:

    sudo cp ./build/bin/geth /usr/local/bin/

初始化创世区块

私链需要一个独特的“创世区块”(Genesis Block),这是区块链的起点。

  1. 创建创世配置文件:在您的用户目录下创建一个 ethereum 目录,并在其中创建一个 genesis.json 文件。

    mkdir ~/ethereum
    cd ~/ethereum
    nano genesis.json
  2. 编写创世配置内容:以下是一个简单的创世区块配置示例,您可以根据需要修改:

    {
      "config": {
        "chainId": 15,          // 私链 ID,用于区分不同的以太坊网络,公链是 1, Ropsten 是 3,这里自定义一个数字
        "homesteadBlock": 0,
        "eip150Block": 0,
        "eip155Block": 0,
        "eip158Block": 0,
        "byzantiumBlock": 0,
        "constantinopleBlock": 0,
        "petersburgBlock": 0,
        "istanbulBlock": 0,
        "berlinBlock": 0,
        "londonBlock": 0,
        "mergeNetsplitBlock": 0,
        "terminalTotalDifficulty": 0,
        "terminalTotalDifficultyPassed": true,
        "ethash": {}
      },
      "alloc": {
        // 可以在这里预分配一些账户及其余额,格式为 "地址": {"balance": "数值"}
        // "0x742d35Cc6634C0532925a3b844Bc454e4438f44e": {"balance": "1000000000000000000000"}
      },
      "coinbase": "0x0000000000000000000000000000000000000000",
      "difficulty": "0x40000", // 初始难度,私链可以设置低一些
      "extraData": "",
      "gasLimit": "0xffffffff", // Gas 限制
      "nonce": "0x0000000000000042",
      "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "timestamp": "0x00"
    }

    保存并退出 nano 编辑器(Ctrl X,Y,回车)。

  3. 初始化创世区块

    geth --datadir ~/ethereum/data init ~/ethereum/genesis.json

    这会在 ~/ethereum/data 目录下创建区块链数据,并根据 genesis.json 初始化创世区块,如果提示 datadir already exists,可以删除 ~/ethereum/data 目录后重新执行。

启动私链节点

现在可以启动您的私链节点了。

  1. 基本启动方式

    geth --datadir ~/ethereum/data --networkid 15 console

    参数说明:

    • --datadir ~/ethereum/data:指定数据存储目录。
    • --networkid 15:指定网络 ID,必须与 genesis.json 中的 chainId 一致。
    • console:启动后进入 JavaScript 交互式控制台,方便管理节点和执行命令。

    启动后,节点会开始同步区块(因为是创世区块,所以同步很快),然后您会看到一个 > 提示符,表示已进入控制台。

  2. 常用启动参数(可选)

    • --rpc:启用 HTTP-RPC 服务,方便其他工具(如 MetaMask、Remix)连接。
    • --rpcaddr "localhost":指定 RPC 监听地址。
    • --rpcport "8545":指定 RPC 端口。
    • --ws:启用 WebSocket 服务。
    • --wsaddr "localhost":指定 WebSocket 监听地址。
    • --wsport "8546":指定 WebSocket 端口。
    • --nodiscover:禁止自动发现其他节点,适合私链。
    • --maxpeers 0:限制最大连接节点数为 0,即纯私链,不与外部任何节点连接。

    带 RPC 服务的启动命令:

    geth --datadir ~/ethereum/data --networkid 15 --rpc --rpcaddr "localhost" --rpcport "8545" --nodiscover console

私链基本操作与验证

进入控制台后,您可以执行以下命令:

  1. 查看账户信息

    // 查看账户列表
    eth.accounts
    // 默认是空列表,除非在 genesis.json 中预分配了
    // 查看当前账户余额(单位:Wei)
    eth.getBalance(eth.accounts[0])
  2. 创建新账户

    personal.newAccount("your_password_here")
    // 记下返回的地址,并设置密码
  3. 启动/停止挖矿

    // 启动挖矿,默认 1 个线程
    miner.start(1)
    // 停止挖矿
    miner.stop()

    挖矿会产生新的区块,并给矿工(coinbase 地址)奖励以太币,默认情况下,coinbase 地址是第一个创建的账户或预分配的账户。

  4. 转账(发送交易)

    //

本文 原创,转载保留链接!网址:https://licai.bangqike.com/bixun/1333095.html

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

扫一扫关注我们,了解最新精彩内容

搜索