以太坊系列之九: 从零一步一步搭建以太坊私有链
从零一步一步搭建以太坊私有链
我会说明一步一步怎么做,同时说明可能的注意事项。
1.下载geth
这一步网上很多,就不细说了,windows的,linux的,mac都有。
2. 创建genesis.json
关于genesis文件的介绍,在此处:http://blog.csdn.net/sportshark/article/details/51855007有详细说明,自行查阅。
我的genesis.json如下
{
"config": {
"chainId": 89120348581,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "20",
"gasLimit": "2100000",
"alloc": {
"0x1a9ec3b0b807464e6d3398a59d6b0a369bf422fa": { "balance": "30000000000000000000000" },
"0x33df901abc22dcb7f33c2a77ad43cc98fbfa0790": { "balance": "40000000000000000000000" }
}
}
我这里预先给自己的测试账号分配了一些以太币,这样就不用挖矿了。
3.初始化区块链
这里需要注意的是,如果你要有多台电脑,那么每台电脑都要执行一遍下面的操作,也不能图省事,复制geth目录。
geth --datadir ~/eth/privnet/ init genesis.json
,我设定的私有链主目录是~/eth/privnet,你可以根据自己的情况修改
4.节点运行
节点之间能够联通,首先要保证网络是通的,测试网络是否畅通,可以通过telnet ip 30303
来测试,有时候由于防火墙或者nat等原因,有些节点之间是没法直接通信的.
在各个节点上运行下面命令
geth --datadir ~/eth/privnet --networkid 89120348581
这时候各个几点已经独立运行起来了,但是他们是没有连通的,因为他们的networkid,和创世块和以太坊网络上的都不一样,所以导致在p2p网络认证过程中会失败.
5.连接节点
在各自节点上运行geth attach来添加节点
各自节点信息可以通过admin.nodeInfo来获取,获取以后再其他节点通过
admin.addPeer('enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303')
来添加,
还有一种方式可以通过在运行参数中直接指定
如下:
geth.exe --datadir=d:/privnet --networkid 89120348581 --bootnodes enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303
如果有多个node,用逗号分隔即可.
6.注意事项
-
- init genesis.json必须每个节点都运行一遍,否则添加节点的时候因为创世块不匹配,会失败,我就是在这里耽误了很久.
-
- 节点之间单向网络通就可以,也就是在nat环境下A可以直接访问B,那就用A添加B
-
- 后续转账等操作,必须启动挖矿,怎么挖矿,很简单,就是在启动的时候加上--mine参数就可以了.
7 加入我的私有链
-
- 将上面的genesis.json内容保存为c:\privnet\genesis.json
-
- 运行命令
geth --datadir c:\privnet init genesis.json
- 运行命令
-
- 启动节点
geth.exe --datadir=c:/privnet --networkid 89120348581 --bootnodes enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@123.206.176.142:30303
- 启动节点
-
- 特别注意,genesis.json要一字不差,否则无法加入我的私有网络.
在私有链上挖矿很容易,方便自己测试开发.
- 特别注意,genesis.json要一字不差,否则无法加入我的私有网络.