/ 币圈行情

更新系统软件包

发布时间:2025-11-19 21:51:46
欧意最新版本

欧意最新版本

欧意最新版本app是一款安全、稳定、可靠的数字货币交易平台。

APP下载  官网地址

CentOS环境下搭建以太坊私有链详细指南

以太坊作为目前最智能合约平台之一,其公有链虽然功能强大,但在开发、测试或特定业务场景下,我们需要一个独立、可控的私有链环境,本文将详细介绍如何在CentOS操作系统上,从零开始搭建一个以太坊私有链。

前期准备

  1. 操作系统:CentOS 7.x 或 8.x (本文以CentOS 7.x为例)
  2. 硬件要求:至少2GB内存,10GB以上可用磁盘空间(根据需求调整)
  3. 网络连接:确保服务器可以连接互联网,以便下载必要的软件
  4. 用户权限:建议使用root用户或具有sudo权限的用户进行操作

安装必要依赖

我们需要安装一些构建和管理以太坊节点所需的依赖工具,如git, make, gcc等。

# 安装必要的开发工具和库
sudo yum groupinstall -y "Development Tools"
sudo yum install -y git wget curl cmake

安装Go语言环境

以太坊客户端(如Geth)是用Go语言编写的,因此需要先安装Go。

  1. 下载Go语言安装包: 访问Go官方下载页面(https://golang.org/dl/)选择适合Linux amd64的版本,或直接使用wget命令下载(以1.19.5版本为例,请根据需要替换为最新版本号)。

    wget https://golang.org/dl/go1.19.5.linux-amd64.tar.gz
  2. 解压并安装Go: 将下载的Go包解压到/usr/local目录下。

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

    sudo vim /etc/profile

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

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

    保存并退出(wq),然后使配置生效:

    source /etc/profile
  4. 验证Go安装

    go version

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

编译并安装Geth(以太坊客户端)

Geth是以太坊官方实现的Go语言客户端,我们将使用它来搭建私有链。

  1. 下载Geth源码

    cd ~
    git clone https://github.com/ethereum/go-ethereum.git
  2. 编译Geth: 进入go-ethereum目录,执行编译命令。make geth会编译生成geth可执行文件。

    cd go-ethereum
    make geth

    编译过程可能需要一些时间,请耐心等待,编译成功后,可执行文件位于build/bin/geth

  3. 将geth添加到系统PATH(可选,方便使用)

    # 确保build/bin在PATH中,或者直接复制到/usr/local/bin
    cp build/bin/geth /usr/local/bin/

    验证geth是否安装成功:

    geth version

初始化创世区块

私有链需要一个创世区块(Genesis Block)来定义链的初始规则和状态。

  1. 创建创世区块配置文件: 在目录下创建一个名为genesis.json的文件,内容如下,这是一个比较通用的私有链创世配置,你可以根据需要修改。

    cd ~
    vim genesis.json

    粘贴到genesis.json文件中:

    {
      "config": {
        "chainId": 15,       // 私有链ID,用于区分不同的以太坊网络,必须是整数,公有链是1(主网)、3(Ropsten)、4(Rinkeby)等
        "constantinopleFixActive": true,
        "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "eip155Block": 0,
        "eip158Block": 0,
        "byzantiumForkBlock": 0,
        "constantinopleForkBlock": 0,
        "petersburgForkBlock": 0,
        "istanbulForkBlock": 0,
        "berlinForkBlock": 0,
        "londonForkBlock": 0,
        "mergeForkBlock": 0,
        "terminalTotalDifficulty": 0,
        "terminalTotalDifficultyPassed": true
      },
      "nonce": "0x0",
      "timestamp": "0x0",
      "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "gasLimit": "0x47b760", // 0x47b760 = 50000000
      "difficulty": "0x40000", // 初始难度
      "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "coinbase": "0x0000000000000000000000000000000000000000", // 矿工地址
      "alloc": {
        // 可以在这里预分配一些账户和以太币,用于测试
        // "0x742d35Cc6634C0532925a3b844Bc454e4438f44e": {"balance": "0x20000000000000000000"}
      }
    }

    保存并退出。

  2. 初始化创世区块: 使用geth的init命令,指定刚才创建的genesis.json文件。

    geth --datadir ~/eth_private_data init genesis.json

    执行成功后,会在~/eth_private_data目录下创建gethkeystore等文件夹,用于存储链数据和账户信息。

启动私有链节点

现在我们可以启动私有链节点了。

  1. 基本启动命令

    geth --datadir ~/eth_private_data --nodiscover --networkid 15 console

    参数说明:

    • --datadir: 指定数据存储目录。
    • --nodiscover: 不自动发现其他节点,因为是私链,不需要发现公网或其他私链节点。
    • --networkid: 设置网络ID,必须与genesis.json中的chainId一致,用于区分以太坊网络。
    • console: 启动JavaScript控制台,方便与节点交互。

    启动后,你会看到类似Welcome to the Geth JavaScript console!的提示,表示节点已成功运行并进入交互控制台。

  2. 后台启动(可选): 如果希望节点在后台运行,可以使用nohup命令:

    nohup geth --datadir ~/eth_private_data --nodiscover --networkid 15 console 2>&1 > geth.log &

    这样节点会在后台运行,日志输出到geth.log文件,你可以使用ps aux | grep geth查看进程。

私有链常用操作(在geth控制台中)

启动节点后,进入geth控制台,可以进行以下操作:

  1. 查看账户列表

    eth.accounts

    刚开始可能是空的。

  2. 创建新账户

    personal.newAccount("your_password_here") // 替换为你的密码

    记下返回的账户地址。

  3. 查看账户余额

    eth.getBalance("0xYourAccountAddress") // 替换为你的账户地址
  4. 开始挖矿: 私有链需要挖矿来产生新的区块和以太币。

    // 启动挖矿,参数是线程数,根据CPU核心数设置
    miner.start(1)

    挖矿一段时间后,可以查看账户余额是否增加。

    // 停止挖矿
    miner.stop()
  5. 转账(发送交易)

     

免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

如有疑问请发送邮件至:bangqikeconnect@gmail.com