以太坊作为全球领先的智能合约平台,吸引了无数开发者和爱好者,在Ubuntu 20.04 LTS这一稳定且

随机配图
广泛使用的Linux发行版上配置以太坊环境,无论是进行节点运行、DApp开发还是简单的代币管理,都是一个非常不错的选择,本文将详细介绍如何在Ubuntu 20.04系统上配置以太坊开发环境,涵盖从基础准备到运行以太坊客户端(如Geth)的全过程。

系统准备与更新

在开始配置之前,确保你的Ubuntu 20.04系统处于最新状态,这有助于避免潜在的兼容性问题并安装必要的软件包。

  1. 更新系统包列表

    sudo apt update
  2. 升级已安装的包(可选,但推荐):

    sudo apt upgrade -y
  3. 安装必要的工具: 我们需要一些基础工具,如curl(下载文件)、wget(备用下载工具)、git(版本控制,有时需要)以及build-essential(编译工具,如果从源码编译)。

    sudo apt install -y curl wget git build-essential

安装Go语言环境(Geth编译与运行依赖)

虽然许多预编译的Geth二进制文件可以直接下载,但了解如何从源码编译Geth(或者运行其他Go开发的以太坊工具)是非常有用的,我们首先安装Go语言环境。

  1. 下载Go最新版本(请访问Go官方下载页面获取最新版本号,此处以1.19.5为例):

    wget https://go.dev/dl/go1.19.5.linux-amd64.tar.gz
  2. 解压Go安装包到/usr/local

    sudo tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz
  3. 配置Go环境变量: 编辑~/.profile文件(或~/.bashrc,取决于你的shell配置):

    nano ~/.profile

    在文件末尾添加以下内容:

    export PATH=$PATH:/usr/local/go/bin
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOPATH/bin

    保存并退出(在nano中按Ctrl+X,然后Y,回车)。

  4. 使环境变量生效

    source ~/.profile
  5. 验证Go安装

    go version

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

安装并配置以太坊客户端(以Geth为例)

Geth是以太坊官方的Go语言实现客户端,功能强大,常用作全节点、矿工或开发工具。

  1. 下载Geth预编译二进制文件(推荐方式): 访问Geth GitHub Releases页面,选择适合Ubuntu 20.04 (Linux AMD64)的最新稳定版本下载,或者直接使用curl

    # 请替换为最新的版本号
    curl -LO https://github.com/ethereum/go-ethereum/releases/download/v1.13.6/geth-alltools-linux-amd64-1.13.6-4e868c5e.tar.gz

    如果你希望只下载geth本身,可以单独下载:

    # 示例,版本号请自行更新
    curl -LO https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.6-4e868c5e.tar.gz
  2. 解压下载的文件

    # 假设下载的是alltools版本
    tar -xzf geth-alltools-linux-amd64-1.13.6-4e868c5e.tar.gz
  3. 将Geth添加到系统PATH: 解压后,你会得到一个geth-alltools-linux-amd64-1.13.6-4e868c5e(或类似名称)的目录,里面有geth等可执行文件。

    # 进入解压目录
    cd geth-alltools-linux-amd64-1.13.6-4e868c5e
    # 将可执行文件复制到/usr/local/bin
    sudo cp geth /usr/local/bin/
    # (可选)如果你下载的是alltools,其他工具如`abigen`, `bootnode`, `evm`, `rlpdump`等也可以一并复制
    sudo cp abigen bootnode evm rlpdump /usr/local/bin/
  4. 验证Geth安装

    geth version

    如果显示Geth的版本号和commit信息,则安装成功。

初始化以太坊节点(创世区块)

运行一个全节点需要一个创世区块配置文件,你可以使用官方的创世配置,或者创建自己的。

  1. 创建一个目录用于存放以太坊数据

    mkdir -p ~/ethereum/data
  2. 获取官方创世配置文件(主网): Geth已经内置了主网的创世配置,我们可以直接使用一个默认的配置来初始化,或者从一个JSON文件初始化,这里我们使用一个通用的方法,直接运行geth init并指定一个创世文件,如果你没有自定义创世文件,Geth会使用默认的。

    更常见的做法是如果你要连接到测试网(如Ropsten, Goerli)或私有链,才需要特定的创世JSON文件,对于主网,可以跳过手动创世文件步骤,直接启动节点时会自动处理。

    但为了演示,我们创建一个简单的创世文件(例如用于私有链):

    # 创建一个名为genesis.json的文件
    nano ~/ethereum/genesis.json

    输入以下内容(这是一个非常基础的创世配置示例):

    {
      "config": {
        "chainId": 15, // 私有链ID,自定义
        "homesteadBlock": 0,
        "eip150Block": 0,
        "eip155Block": 0,
        "eip158Block": 0
      },
      "alloc": {},
      "coinbase": "0x0000000000000000000000000000000000000000",
      "difficulty": "0x4000",
      "extraData": "",
      "gasLimit": "0xffffffff",
      "nonce": "0x0000000000000042",
      "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "timestamp": "0x00"
    }

    保存并退出。

  3. 使用创世文件初始化节点

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

    如果看到"Successfully initialized new genesis chain"等提示,则表示初始化成功。

启动以太坊节点

根据你的需求,可以以不同模式启动Geth节点。

  1. 启动全同步节点(主网): 这会下载并同步整个以太坊主网区块链,需要大量的存储空间(几百GB)和时间。

    geth --datadir ~/ethereum/data --syncmode full --http --http.addr "0.0.0.0" --http.port 8545 --http.api eth,net,web3,personal
    • --datadir: 指定数据存储目录。
    • --syncmode full: 完整同步模式。
    • --http: 启动HTTP-RPC服务。
    • --http.addr "0.0.0.0": 允许任何IP连接。
    • --http.port 8545: HTTP-RPC服务端口。
    • --http.api: 暴露的API接口。
  2. 启动快速同步节点(主网,推荐): 快速同步模式只下载区块头和状态数据,速度更快。

    geth --datadir ~/ethereum/data --syncmode snap --http --http.addr "0.0.0.0" --http.port 8545 --http.api eth,net,web3,personal
    • --syncmode snap: