本篇博客主要介绍一下在一台机器上建立多个节点,并且把节点连接在一起形成一个集群的方法笔记,以及配置时遇到的一些问题。
本文基于Ubuntu14.04 和 Geth 1.4.5-stable
建立一个私有节点时常用参数:
--nodiscover 使用这个参数,你的节点就不会被其他人发现,除非手动添加你的节点。否则,就只有一个被无意添加到一个陌生区块链上的可能,那就是跟你有相同的genesis文件和networkID。
--maxpeers 0 如果你不想有人连上你的测试链,就用maxpeers 0。或者,你可以调整参数,当你确切的知道有几个节点要连接上来的时候。
--rpc 允许RPC操作你的节点。这个参数在Geth上是默认的。
--rpcapi "db,eth,net,web3" 这个命令指示了允许通过RPC访问的命令。默认情况下,Geth允许web3。
--rpcport "8080"
--rpccorsdomain "http://chriseth.github.io/browser-solidity/"
--datadir "/home/etherTest" 私有链存放路径(最好跟公有链路径不同)
--port "30303" 网络监听端口,用来和其他节点手动连接
--identity “yooliee" 用来标识你的节点的,方便在一大群节点中识别出自己的节点
--networkid 1990 你自己的私有网络的id号
--rpccorsdomain "http://chriseth.github.io/browser-solidity/" 指定可以远程访问你的节点的URL, 值为"*"时是指任何地方都可以远程访问(避免使用*)
本地建立多个节点
为了能在本地建立多个节点,你必须确保:
- 每个节点所在路径不同(–datadir的值不同)
- 每个节点运行在不同的端口上(包括eth和rpc) (–port和–rpcport不同)
- ipc端点是唯一的或者禁用ipc接口(–ipcpath唯一或者–ipcdisable
为了建立一个本地集群,除了上面几个参数值不同以外,必须确保–networkid相同,即节点是属于同一个网络;创世区块相同、集群中的节点必须知道彼此。本测试建立三个节点,然后三个节点彼此相连,形成一个集群。
首先,建立一个文件夹,用来存放三个节点:
mkdir ether
所有节点的genesis.json文件必须相同:
{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0x80000000",
"difficulty": "0x1",
"