Linux 环境下部署以太坊节点,从零开始的详细指南

以太坊作为全球领先的智能合约平台和去中心化应用(DApp)的基础设施,其节点网络是整个生态系统的基石,在 Linux 环境下部署以太坊节点,无论是对于开发者、DApp 用户,还是对于希望参与网络共识、验证交易的验证者(如以太坊 2.0 的验证者),都是一项核心技能,本文将详细介绍在 Linux 系统上部署以太坊节点的步骤、注意事项以及不同类型节点的选择。

为什么选择 Linux 部署以太坊节点

在开始之前,我们先简要为何 Linux 是部署以太坊节点的理想选择:

  1. 稳定性和安全性:Linux 系统以其出色的稳定性和安全性著称,适合需要长期不间断运行的服务。
  2. 高性能:Linux 对系统资源的利用效率较高,能够在有限的硬件条件下获得更好的性能。
  3. 开源和灵活性:绝大多数以太坊客户端软件都是开源的,并且原生支持 Linux,提供了高度的定制性和灵活性。
  4. 随机配图
i>社区支持:拥有庞大的开发者社区,遇到问题时更容易找到解决方案和帮助。
  • 命令行友好:Linux 强大的命令行工具使得自动化部署、监控和管理节点变得更加便捷。
  • 部署前的准备工作

    在开始部署之前,请确保您的 Linux 系统满足以下基本要求:

    1. 硬件要求

      • CPU:至少 2 核 CPU,推荐 4 核或以上。
      • 内存 (RAM):运行全节点至少需要 8GB RAM,推荐 16GB 或以上,如果运行验证者节点,建议 32GB 以上。
      • 存储 (SSD):这是最关键的部分,以太坊主网的全节点数据(状态、区块、交易等)截至 2023 年)已超过 2TB,并且持续增长,至少需要 2TB 以上的高速 SSD 硬盘,推荐 4TB 或更大,并确保预留足够空间。
      • 网络:稳定且带宽充足的有线互联网连接,建议上行和下行带宽均不低于 10Mbps,并且端口(默认 30303,TCP/UDP)能够开放。
    2. 软件要求

      • 操作系统:推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS,以及其他主流的 Linux 发行版如 Debian、CentOS 等,本文以 Ubuntu 为例进行演示。
      • 更新系统:确保系统已更新到最新状态。
        sudo apt update && sudo apt upgrade -y
      • 安装必要工具
        sudo apt install -y curl wget git build-essential unzip

    选择以太坊客户端软件

    以太坊节点是通过运行客户端软件来实现的,目前主流的以太坊 1.0(执行层)客户端有:

    • Geth:Go 语言编写,功能全面,用户基数大,官方推荐之一。
    • Nethermind:.NET (C#) 语言编写,性能较好,模块化设计。
    • Besu:Java 语言编写,由 Hyperledger 贡献,企业友好,支持 EVM 和以太坊 2.0。

    对于以太坊 2.0(共识层,PoS),客户端有:

    • Lodestar:Node.js/TypeScript 语言编写,由 Chainlink 贡献。
    • Lodestar (Prysmatic Labs):Go 语言编写,用户较多。
    • Teku:Java 语言编写,由 ConsenSys 贡献,企业级特性。

    本文将以 Geth(执行层)和 Lodestar(共识层)为例,介绍如何搭建一个以太坊 2.0 的验证者节点(如果硬件充足,也可以选择同步执行层后运行验证者)。

    部署以太坊 1.0 执行层节点 (以 Geth 为例)

    1. 下载并安装 Geth: 访问 Geth 官方 GitHub Releases 页面获取最新版本的下载链接,或使用以下命令(以最新版本号为例,请替换为实际版本号):

      # 获取最新版本号 (示例,请替换为实际最新版本)
      GETH_VERSION="1.13.6"
      wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-${GETH_VERSION}-d2b8c9e5.tar.gz
      tar -xvzf geth-linux-amd64-${GETH_VERSION}-d2b8c9e5.tar.gz
      sudo cp geth-linux-amd64-${GETH_VERSION}/geth /usr/local/bin/
      # 验证安装
      geth version
    2. 初始化节点(可选,对于新节点): 如果您是从零开始同步,Geth 会在第一次启动时自动初始化,如果您有特定的创世文件或需要自定义配置,可以手动初始化。

    3. 启动 Geth 节点: 启动 Geth 的命令非常灵活,以下是一些常用选项:

      geth \
        --http \
        --http.addr "0.0.0.0" \
        --http.port "8545" \
        --http.api "eth,net,web3,personal" \
        --ws \
        --ws.addr "0.0.0.0" \
        --ws.port "8546" \
        --ws.api "eth,net,web3" \
        --syncmode "full" \  # 全同步模式,同步所有历史数据
        --gcmode "full" \    # 保持全节点模式
        --cache 8192 \       # 缓存大小,单位 MB,根据内存调整
        --datadir "/mnt/ethereum/geth" \  # 指定数据目录,务必使用大容量 SSD
        --metrics \
        --metrics.expensive \
        --pprof
      • --http--ws:分别启用 HTTP 和 WebSocket RPC 服务,方便 DApp 连接。
      • --syncmode "full":全同步,下载所有区块和状态数据,对于新节点,这是最慢但最完整的同步方式,也可以选择 snap 快速同步(默认),但快速同步的“全”节点在查询某些历史状态时可能不完全准确。
      • --datadir:指定数据存储路径,请务必选择一个空间充足、性能好的 SSD 分区。
      • --metrics:启用 Prometheus 格式的指标导出,方便监控。
    4. 后台运行和管理: 为了让节点在后台持续运行,可以使用 nohupsystemd 服务。

      • 使用 nohup

        nohup geth [上面的参数] > geth.log 2>&1 &
      • 更推荐使用 systemd 创建服务,便于管理和开机自启,创建 /etc/systemd/system/geth.service 文件,内容类似:

        [Unit]
        Description=Geth Ethereum Client
        After=network.target
        [Service]
        User=your_username
        Group=your_username
        Type=simple
        Restart=always
        RestartSec=5
        ExecStart=/usr/local/bin/geth \
          --http \
          --http.addr "0.0.0.0" \
          --http.port "8545" \
          --http.api "eth,net,web3,personal" \
          --ws \
          --ws.addr "0.0.0.0" \
          --ws.port "8546" \
          --ws.api "eth,net,web3" \
          --syncmode "full" \
          --gcmode "full" \
          --cache 8192 \
          --datadir "/mnt/ethereum/geth" \
          --metrics \
          --metrics.expensive
        [Install]
        WantedBy=multi-user.target

        然后启用并启动服务:

        sudo systemctl daemon-reload
        sudo systemctl enable geth
        sudo systemctl start geth
        sudo systemctl status geth

    部署以太坊 2.0 共识层节点 (以 Lodestar 为例)

    如果您计划成为验证者,需要运行共识层客户端,这里以 Lodestar 为例。

    1. 安装 Node.js (Lodestar 需要)

      curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
      sudo apt-get install -y nodejs
      node --version
      npm --version
    2. 安装 Lodestar

      npm install -g @chainsafe/lodestar
      lodestar --version
    3. 初始化 Lodestar: 指定数据

    本文由用户投稿上传,若侵权请提供版权资料并联系删除!

    上一篇:

    下一篇: