Ethereum私有网络的搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guokaikevin/article/details/78998601

好久没有弄以太坊,因为工作需要,需要搭建一个以太坊的私有网络(private network)。

0. 实验环境

3台阿里云服务器,Ubuntu 16.04,分别简称为ali1, ali2, ali3.

1. Ethereum节点的编译、安装。

这一点无需赘述,以前的文章详细介绍过,请参见这里

2. 创始块

因为要搭建自己的私有网络,所以要从头构建私有网络的区块链,我们需要初始化创世块。

首先,我们需要为自己的网络选取一个网络编号chainid或者叫networkid。以太坊网络的网络id好为1. 我们需要选取另一个整数即可,比如130629.

其次,需要一个.json文件,描述创世块和区块的一些属性。例如:

//genesis.json
{                                                                                                                                                                     
    "config": {
        "chainId": 130629, 
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },  
    "difficulty": "400",
    "gasLimit": "2100000",
    "alloc": {
    }   
}

其中,config.chainId是刚才选取的网络id。difficulty 是挖矿的难度,也决定你的私有网络区块的速度。这里设置的400,大概是几秒钟1个块,可以根据不同的需求,通过实验,合理调整。

最后,我们需要用genesis.json初始化每个节点。

# geth --datadir=%YOUR_ETH_DATA_DIR% init %PATH_TO_FILE/genesis.json

3. 创建bootnode。

节点一个一个的启动起来,要让自己的节点相互连接,形成p2p的网络,我们需要创建一个bootnode, 然后启动

$ bootnode --genkey=boot.key
$ bootnode --nodekey=boot.key

4. 启动节点。

geth --fast --cache=512 --datadir=%PATH_ETH_DATA_DIR% --bootnodes enode://NODE_ID@NODE_IP:NODE_PORT --networkid 130629 --rpcapi web3,eth,personal,admin --rpc --rpcaddr 0.0.0.0 --rpcport RPC_PORT console

其中, --rpcapi web3,eth,personal,admin --rpc --rpcaddr 0.0.0.0 --rpcport RPC_PORT表示打开这个节点rpcapi,监听在端口RPC_PORT上,并且开启web3, eth, personal, adminapi。

console表示显示控制台输入输出窗口。

--networkid 130629指定了网络id。

实验中,我需要手动添加节点,这个bootnodes好像没管用。

> admin.addPeer("enode://id@ip:port")

节点的enode信息可以在console中通过命令获取到。

> admin.nodeInfo()

猜你喜欢

转载自blog.csdn.net/guokaikevin/article/details/78998601