当前位置: 首页 > 工具软件 > Cpp Ethereum > 使用案例 >

搭建cpp-ethereum的私有链

王杰
2023-12-01

                                                         

(小白一个,查不到资料,这个搭建过程是我自己蒙出来的,若有错误还请海涵,谢谢,同时,欢迎各位大佬指出我的纰漏。)

        条件:linux系统(64位ubuntu)

                      cpp-ethereum源码

                      ethconsole控制台

      

  1.从github上下载源代码,在linux终端输入

    git clone --recursive https://github.com/ethereum/cpp-ethereum.git

     (若没安装git,则需先输入sudo apt-get install git,安装git)

   

    下载完成后,输入

    cdcpp-ethereum

    进入下好的cpp-ethereum文件夹。

  

    2.安装cmake,以及相关组件。

      输入

     sudo apt-get install cmake

 

     sudo apt-get install libboost-all-dev libleveldb-devlibcurl4-openssl-dev libmicrohttpd-dev libminiupnpc-dev libgmp-dev

 

 

     3.开始搭建

     依次输入

    mkdir build                       创建一个build文件夹

    cd build                            进入创建的那个文件夹

    cmake ..                            生成一个生成文件(makefile)

    make                                  搭建那个生成文件

    make  -j<number>             number为执行所用的核心数

 

      4.安装ethconsole

       首先下载npm

       输入

        sudo apt-get install npm

       

        npm install -g ethereum-console

       

        不出意外的话,此处应该会出现错误无法安装,具体如下

   

      WARN engine servify@xxx:wanted:{“node”:”>=6”}(current:{“node”:”4.2.6”})

      

      这是由于npm默认的node版本过低,需要升级Node

      执行以下命令:

    

    sudo npm install -g n

    

  想好你要安装的node版本 ,这里以安装7.10.0版本为例

 

  sudo n stable 7.10.0

 

  输入

  

  node -v

 

 检测是否安装成功。输入

 

 ethconsole 

 

只要不出现

  

ethconsole: command not found

 

 即为安装成功

 

5.开始搭建私有链。

 首先在切换文件夹到eth 进行操作

 

cd eth

 (写一个小插曲,eth目录下的那个eth不是完整的,有些命令没有,但考虑到我们是通过控制台进行操作不需要通过eth操作,故可以不下载完整的eth。)

在eth文件夹下新建一个json文件,格式如下

 {

 "config": {

        "chainId": 1000,

        "homesteadBlock": 0,

        "eip155Block": 0,

        "eip158Block": 0

    },

 "coinbase"   : "0x0000000000000000000000000000000000000000",

 "difficulty" : "0x400",

 "extraData"  : "Oh My God!",

 "gasLimit"   : "0x2fefd8",

 "nonce"      : "0x0000000000000042",

 "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",

 "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",

 "timestamp"  : "0x00",

 "alloc": {}

}

 

 

这个文件为你想要创世区块的配置文件,各参数的涵义如下:

 

config.chainId // 区块链的ID,在 geth 命令中的--networkid 参数需要与 chainId 的值一致
config.homesteadBlock // Homestead
硬分叉区块高度,不需要关注
config.eip155Block // EIP 155
硬分叉高度,不需要关注
config.eip158Block // EIP 158
硬分叉高度,不需要关注
coinbase //
矿工账号,第一个区块挖出后将给这个矿工账号发送奖励的以太币
difficulty //
难度值,越大越难
extraData //
附加信息随便填
gasLimit // gas
的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大
nonce //
一个 64 位随机数
mixhash //
nonce 配合用于挖矿,由上一个区块的一部分生成的 hash
parentHash //
上一个区块的 hash
alloc //
预设账号以及账号的以太币数量,私有链挖矿比较容易可以不配置

 

将这个文件取名为zero.json,待会会用到。在eth文件夹下新建一个文件夹,取名为data0,待会用来存放区块数据。

 

下面介绍几个常用的eth操作,

 

--help或者-h: 展示帮助清单

--no-discovery : eth默认连接全节点,通过输入—no-discovery让我们的私有链不去链接全节点。

--genesis : 初始化私有链的创世节点用法为–genesis <filename>

--network-id: 你的id名,为一个数,和你的json文件里的chainid一致,以后连接其他节点需要用到。

--datadir <filename>: 你想用来存放区块数据的文件夹名。

--private <name>:你创建区块的名称。

--m <on/off/number>: on 为你允许挖矿,off为不允许,number为你指定区块数目。

………..

 

下面输入:

 ./eth--genesis zero.json --d data0 –no-discovery -m on –network-id 1000

(若报错,可尝试使用系统提供的json文件例子替换我上面所给的json文件)

打开data0文件夹,会生成一个.ipc后缀的文件。记住这个文件的绝对路径。

新打开一个终端,输入ethconsole +路径,例如:

ethconsole cpp-ethereum/build/eth/data0/geth.ipc

 

即可连接你的私有链。并通过ethconsole进行操作。注意,当你关闭挖矿后,连接会自动终止。

关于ethconsole的操作方法,以及如何直接通过eth进行操作,博主后续会更新。读者或者可以通过访问

https://github.com/ethereum/homestead-guide/blob/master/source/contracts-and-transactions/developer-tools.rst#ethereum-console

以及

http://web3js.readthedocs.io/en/1.0/

 

 

 

 类似资料: