(小白一个,查不到资料,这个搭建过程是我自己蒙出来的,若有错误还请海涵,谢谢,同时,欢迎各位大佬指出我的纰漏。)
条件: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进行操作,博主后续会更新。读者或者可以通过访问
以及
http://web3js.readthedocs.io/en/1.0/