zoukankan      html  css  js  c++  java
  • 以太坊系列之九: 从零一步一步搭建以太坊私有链

    从零一步一步搭建以太坊私有链

    我会说明一步一步怎么做,同时说明可能的注意事项。

    1.下载geth

    这一步网上很多,就不细说了,windows的,linux的,mac都有。

    2. 创建genesis.json

    关于genesis文件的介绍,在此处:http://blog.csdn.net/sportshark/article/details/51855007有详细说明,自行查阅。

    我的genesis.json如下

    {
        "config": {
            "chainId": 89120348581,
            "homesteadBlock": 0,
            "eip155Block": 0,
            "eip158Block": 0
        },
        "difficulty": "20",
        "gasLimit": "2100000",
        "alloc": {
            "0x1a9ec3b0b807464e6d3398a59d6b0a369bf422fa": { "balance": "30000000000000000000000" },
            "0x33df901abc22dcb7f33c2a77ad43cc98fbfa0790": { "balance": "40000000000000000000000" }
        }
    }
    

    我这里预先给自己的测试账号分配了一些以太币,这样就不用挖矿了。

    3.初始化区块链

    这里需要注意的是,如果你要有多台电脑,那么每台电脑都要执行一遍下面的操作,也不能图省事,复制geth目录。
    geth --datadir ~/eth/privnet/ init genesis.json,我设定的私有链主目录是~/eth/privnet,你可以根据自己的情况修改

    4.节点运行

    节点之间能够联通,首先要保证网络是通的,测试网络是否畅通,可以通过telnet ip 30303来测试,有时候由于防火墙或者nat等原因,有些节点之间是没法直接通信的.

    在各个节点上运行下面命令

    geth --datadir ~/eth/privnet --networkid 89120348581
    

    这时候各个几点已经独立运行起来了,但是他们是没有连通的,因为他们的networkid,和创世块和以太坊网络上的都不一样,所以导致在p2p网络认证过程中会失败.

    5.连接节点

    在各自节点上运行geth attach来添加节点
    各自节点信息可以通过admin.nodeInfo来获取,获取以后再其他节点通过

    admin.addPeer('enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303')
    

    来添加,

    还有一种方式可以通过在运行参数中直接指定
    如下:

     geth.exe --datadir=d:/privnet --networkid 89120348581 --bootnodes   enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303
    

    如果有多个node,用逗号分隔即可.

    6.注意事项

      1. init genesis.json必须每个节点都运行一遍,否则添加节点的时候因为创世块不匹配,会失败,我就是在这里耽误了很久.
      1. 节点之间单向网络通就可以,也就是在nat环境下A可以直接访问B,那就用A添加B
      1. 后续转账等操作,必须启动挖矿,怎么挖矿,很简单,就是在启动的时候加上--mine参数就可以了.

    7 加入我的私有链

      1. 将上面的genesis.json内容保存为c:privnetgenesis.json
      1. 运行命令
        geth --datadir c:privnet init genesis.json
      1. 启动节点
        geth.exe --datadir=c:/privnet --networkid 89120348581 --bootnodes enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@123.206.176.142:30303
      1. 特别注意,genesis.json要一字不差,否则无法加入我的私有网络.
        在私有链上挖矿很容易,方便自己测试开发.
  • 相关阅读:
    C#如何给Listbox添加右键菜单
    [GraphQL] Query Lists of Multiple Types using a Union in GraphQL
    [GraphQL] Query GraphQL Interface Types in GraphQL Playground
    [GraphQL] Reuse GraphQL Selection Sets with Fragments
    [Dart] final vs const
    [GraphQL] Set variable and default value & alias
    [置顶] 【Git入门之十一】标签管理
    poj 3182 The Grove bfs
    hdu1166敌兵布阵
    <WinForm_1>初识WinForm编程
  • 原文地址:https://www.cnblogs.com/baizx/p/7274255.html
Copyright © 2011-2022 走看看