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

新编搭建cpp-ethereum 私有链

长孙宜
2023-12-01

平台: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
cd build
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

 

连接上你的链

 

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

 类似资料: