zoukankan      html  css  js  c++  java
  • centos 以太坊多节点私链搭建

    环境  centos 7   搭建 3 个节点的 私链.

    第一步 安装 一些依赖的 工具 

    yum update -y && yum install git wget bzip2 vim gcc-c++ ntp epel-release nodejs cmake -y

    第二步 安装 Go  ,以太坊的区块链是GO写的

    下载go:   wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz
    解压:     tar -C /usr/local -xzf go1.10.linux-amd64.tar.gz

    然后配置环境变量
    echo 'export GOROOT=/usr/local/go' >> /etc/profile
    echo 'export PATH=$PATH:$GOROOT/bin' >> /etc/profile
    echo 'export GOPATH=/root/go' >> /etc/profile
    echo 'export PATH=$PATH:$GOPATH/bin' >> /etc/profile
    source /etc/profile

    检查 go 是否正确安装 : go version

    第三步: 下载 geth 源码 ,并且编译安装.

      下载源码:  git clone https://github.com/ethereum/go-ethereum.git

      进入源码根路径 cd go-ethereum

      编译源码: make all

      备注编译 后的文件在 源文件的 根目录下面的 build 目录下面.

      配置 geth 的环境变量 :echo 'export PATH=$PATH:/你源码的路径/go-ethereum/build/bin' >> /etc/profile

      刷新配置文件: source /etc/profile

      检查:geth version 

    安装工具完成,下面开始创建节点.

    1 在 每台机子上都 创建初始化创世区块的文件 genesis.json

        

    {
      "config": {
            "chainId": 22,
            "homesteadBlock": 0,
            "eip155Block": 0,
            "eip158Block": 0
        },
      "alloc"      : {},
      "coinbase"   : "0x0000000000000000000000000000000000000000",
      "difficulty" : "0x400",
      "extraData"  : "",
      "gasLimit"   : "0x2fefd8",
      "nonce"      : "0x0000000000000032",
      "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
      "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
      "timestamp"  : "0x00"
    }
    

      

    备注:因为后面节点要相互连接,所以创世区块配置文件要相同,不让无法连接.

    2 关闭防火墙,并且设置时间为同一时区,然后把时间和网络时间对对齐,并且设置为自动和网络时间同步.

      上面这部 很重要.不然节点无法同步,不管是防火墙,还是 时间不同步,都不能同步区块,时间差异不大,会同步,但是会不停的跑异常.

    3 初始化

      geth --datadir  放区块的文件夹路径 init  genesis.json(创世区块配置文件)

      

      初始成功以后启动节点: geth --networkid 1234 --nodiscover --datadir d1  --rpc --rpcaddr 192.168.1.111 --rpcport 9001 --port 30001  console 2    --dev.period 1 --allow-insecure-unlock

      备注上面定义了 网络id 是  1234 ,必须一样,并且不能是1 .

      --datadir d1  放区块的文件夹路径 d1

       --rpc --rpcaddr 192.168.1.111 --rpcport 9001  指定启动 rpc 服务,端口  9001 ,这个是给 java 通过  web3j 来 调用链数据的接口.不写不会开启.

      -port 30001 是 指定 账本数据节点之间 数据同步的端口.

      console  会一命令的方式启动,不带,启动以后只能看,不能交互式的敲命令.

      --dev.period 和生成区块有关,有了它 miner.start() 再回挖矿.没有不会

      --nodiscover  关闭自用发现

    4 三个节点都启动以后  查看他们的连接码: admin.nodeInfo.enode 

      备注:上面连接码 使用的时候需要把127.0.0.1 改成真实的ip 

    5 然后通过 admin.addPeer("连接码"); 来连接 

    6 通过 admin.peers 查看 当前节点连接了那些节点.

      

        备注: abc 三节点 ,只要 要 a 连接 b,a连接 c,然后 b连接c ,就可实现三节点的互联,并且 geth 或记住上次连接的 节点,下次 启动会自动连接.  公链上 应该是通过相互自动发现的机制.

    7 私链搭建完成,但是 eth.accounts 只能看到本地创建的钱包, 但是这个钱包的余额 ,在别的节点上依旧可以查到. 挖矿产区块的 信息也会同步到别的节点.

    8 如果 节点挖矿 太慢,并且修改挖矿难度无效,这时候可能是 网络 id 的问题,换个  networkid  就可以了.

        

       挖矿难度的最小值 是  16进制的  0x20000 ,也就是  13 W 多 ,只能 币这个大,不能比这个小,小于这个值会用默认值. 0x20000

    9 启动时指定矿工账号

         --etherbase 0xad27e0a42831ee84700f612035da59826041abf9 

      备注:据说加上 --mine 或自动挖矿 ,但是实测无效.

  • 相关阅读:
    获取Tekla属性方式
    基于C# 百度AI和科大汛飞语音合成SDK
    BIM工程信息管理系统-EF实体框架数据操作基类
    BIM工程信息管理新系统- 系统管理模块
    EChart绘制风速风向曲线分析图
    BIM工程信息管理系统-详细设计
    BIM工程信息管理系统搭建-系统功能需求
    基于C# 调用百度AI 人脸识别
    mago3DJS 应用
    Bitnami redmine windows环境下升级
  • 原文地址:https://www.cnblogs.com/cxygg/p/11507274.html
Copyright © 2011-2022 走看看