未分类

新编搭建cpp-ethereum 私有链

平台:ubuntu

 

首先先准备源码(从github上clone)

 

git clone –recursive https://github.com/ethereum/aleth.git

 

(若没有安装git则首先安装git,这里建议挂梯子,要不然速度会奇慢无比,一定要加—recursive,不然就只clone了个文件目录)

 

下载完以后,进入文件夹,

 

cd aleth

 

安装相关编译环境

 

sudo apt install cmake

 

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

 

安装完成后开始搭建

 

sudo mkdir build

sudo chmod 777 build

cd build

sudo cmake ..

(别看掉那两个点,这一步需要花费点时间)

make

(这一步也需要点时间,半个小时左右)

make -j <number>

(number随便输入一个数字)

 

接下来安装控制台

 

方法一: 通过npm安装

 

sudo apt install npm

 

这里需要注意的是npm默认的node 版本过低,需要升级Node,

 

sudo npm install -g n

 

sudo n stable 7.10.0

 

node -v

若版本为7.10.0则升级成功。若升级不成功则尝试其他方法升级,或者挂个梯子再试一下。

 

安装ethconsole

 

sudo npm install -g ethereum-console

 

这里可能出现一个奇怪的bug,系统显示permission denied,这里有两种方法解决,

首先sudo chmod -R  755 “文件夹目录”

若失败则在安装命令那句后面加上一句 –perm-unsafe=true

 

检查安装是否成功,输入ethconsole

 

只要不出现command not found就行。

 

如果不管你挂不挂梯子,死活不能安装,这里还有方法二可以试一下。

 

方法二:用cnpm 安装

 

npm install -g cnpm –registry=https://registry.npm.taobao.org

 

cnpm install -g Ethereum-console

 

开始搭建私有链

 

cd aleth

 

新建一个json文件,取名为config,json

{

“sealEngine”: “Ethash”,

“params”: {

“accountStartNonce”: “0x00”,

“homesteadForkBlock”: “0x00”,

“daoHardforkBlock”: “0x00”,

“EIP150ForkBlock”: “0x00”,

“EIP158ForkBlock”: “0x00”,

“byzantiumForkBlock”: “0x00”,

“networkID”: “0x10”,

“chainID”: “0x10”,

“maximumExtraDataSize”: “0x20”,

“tieBreakingGas”: false,

“minGasLimit”: “0x1388”,

“maxGasLimit”: “7fffffffffffffff”,

“gasLimitBoundDivisor”: “0x0400”,

“minimumDifficulty”: “0x00200000”,

“difficultyBoundDivisor”: “0x0800”,

“durationLimit”: “0x0d”,

“blockReward”: “0x4563918244F40000”},

“genesis”: {

“nonce”: “0x0000000000000042”,

“difficulty”: “0x400”,

“mixHash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,

“author”: “0x0000000000000000000000000000000000000000”,

“timestamp”: “0x5b5ae8f2”,

“parentHash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,

“extraData”: “0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa”,

“gasLimit”: “0x1388”

},

“accounts”: {

“3282791d6fd713f1e94f4bfd565eaa78b3a0599d”: {

“balance”: “1337000000000000000000”

}

}

}

 

 

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 // 预设账号以及账号的以太币数量,私有链挖矿比较容易可以不配置

 

 

输入

./aleth –-private “test”  –config config.json -d data1 -v 4

 

–private 表明你要建一个私有链

–config 为你的配置文件

-d 为你的链要存放的地址

-v 为你的log等级,这个是方便你监测链运行情况的

 

接下来输入

 

cd data1

ethconsole data1

 

连接上你的链

 

至此,新建私有链的全部操作完成。至于后续步骤,请查阅以太坊控制台的操作。

Leave a Reply

邮箱地址不会被公开。 必填项已用*标注