首先在第一台机器168.192.0.5
mkdir private-geth && private-geth
vim genesis.json
{
"config": {
"chainId": 3434,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x400",
"extraData" : "0x123456",
"gasLimit" : "0xffffffff",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"alloc": { }
}
初始化创始块
geth --datadir ./data/00 init genesis.json
进入geth平台
geth --identity "newEth" --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/00 --networkid 3434 --ipcdisable --port 33333 --rpcport 4444 console
admin.nodeInfo 得到 enode: "enode://ef572405a99d655f41ec645a780e23b8dc243c1297c2f7b9da416ffbe79dc15298d2e31a78d903b3cb611d417287e17f5307971213b748d16929ff476bb8ea6c@[::]:33333"
在这里制作成镜像haha1
第二个节点 由haha1镜像创建主机成为192.168.0.6
cd private-geth
geth --datadir ./data/01 init ./genesis.json
连接第一个节点并进入geth平台
geth --identity "newEth" --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/01 --networkid 3434 --ipcdisable --port 33334 --rpcport 4446 --bootnodes "enode://ef572405a99d655f41ec645a780e23b8dc243c1297c2f7b9da416ffbe79dc15298d2e31a78d903b3cb611d417287e17f5307971213b748d16929ff476bb8ea6c@192.168.0.5:33333" console
Welcome to the Geth JavaScript console!
instance: Geth/newEth/v1.6.6-stable-10a45cb5/linux-amd64/go1.8.1
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
> eth.blockNumber
0
他会自动更新主链的信息
> INFO [07-12|14:28:29] Block synchronisation started
INFO [07-12|14:28:29] Imported new state entries count=1 flushed=1 elapsed=98.548碌s processed=1 pending=0 retry=0 duplicate=0 unexpected=0
INFO [07-12|14:28:30] Imported new block headers count=5 elapsed=1.369s number=5 hash=467a87鈥f2226 ignored=0
INFO [07-12|14:28:30] Imported new chain segment blocks=5 txs=0 mgas=0.000 elapsed=1.418ms mgasps=0.000 number=5 hash=467a87鈥f2226
INFO [07-12|14:28:30] Fast sync complete, auto disabling
> eth.blockNumber
5
制作成镜像Haha2
用第一个节点的镜像制作第三个节点 主机名字3 192.168.0.2
cd private-geth
geth --datadir ./data/02 init ./genesis.json
geth --identity "newEth" --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/02 --networkid 3434 --ipcdisable --port 33335 --rpcport 4447 --bootnodes "enode://ef572405a99d655f41ec645a780e23b8dc243c1297c2f7b9da416ffbe79dc15298d2e31a78d903b3cb611d417287e17f5307971213b748d16929ff476bb8ea6c@192.168.0.5:33333" console
Welcome to the Geth JavaScript console!
instance: Geth/newEth/v1.6.6-stable-10a45cb5/linux-amd64/go1.8.1
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
> eth.accounts
[]
>
> INFO [07-12|14:36:12] Block synchronisation started
INFO [07-12|14:36:12] Imported new state entries count=1 flushed=1 elapsed=98.452碌s processed=1 pending=0 retry=0 duplicate=0 unexpected=0
INFO [07-12|14:36:14] Imported new block headers count=5 elapsed=1.714s number=5 hash=467a87鈥f2226 ignored=0
INFO [07-12|14:36:14] Imported new chain segment blocks=5 txs=0 mgas=0.000 elapsed=1.445ms mgasps=0.000 number=5 hash=467a87鈥f2226
INFO [07-12|14:36:14] Fast sync complete, auto disabling
> eth.blockNumber
5
创建一个新映像haha3
这样三个节点相连的私链就搭建成功了
在篡改了第三台机器的数据或者ldb以后,第三个节点不能挖矿了,然后我再同一个目录下再创建一个新的节点,同样不能挖矿。
geth --datadir ./data/03 init ./genesis.json
geth --identity "newEth" --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/03 --networkid 3435 --ipcdisable --port 33336 --rpcport 4447 --bootnodes "enode://ef572405a99d655f41ec645a780e23b8dc243c1297c2f7b9da416ffbe79dc15298d2e31a78d903b3cb611d417287e17f5307971213b748d16929ff476bb8ea6c@192.168.0.5:33333" console
那我就把这台机器毁了吧,再复制一下第三台机器,重新试验。
一样是192.168.0.2的机器
进去以后直接同步好了区块链数据。
cd private-geth/data/02/geth/chaindata
但是一直不能挖矿,无奈我就在第二台机器上同样的方法创建第三台节点是可以挖矿的
那我在他上面继续创作镜像,直接开启看看可不可以挖矿hahasjd
192.168.0.3的机器
好了02可以挖一直觉得挖矿速度慢,原来是几台机器的配置不同导致的,吓死宝宝了
在 192.168.0.6机器上,重新开一个节点,注意该节点只有自己,没有接入其他的节点。进入控制台后他就有ldb文件,我把ldb文件删了,是不影响他挖矿的,奇怪的是在chaindata目录也没有继续生成ldb文件。我重新启动该节点,有新的ldb文件生成,但是区块高度为0 ,也不能挖矿了。是因为初始块被删了,导致不行,重新init的话也是不对的,他会提示该目录下的创始块已经存在了
geth --datadir ./data/04 init genesis.json
geth --identity "newEth" --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/04 --networkid 3434 --ipcdisable --port 33330 --rpcport 4449 console