原文地址;https://blog.youkuaiyun.com/zhj_fly/article/details/79618194
在这之前,要先会在一台电脑上搭建一条私有链:链接
假设两台电脑A和B,ip地址分别为192.168.1.1和192.168.1.2
要求:
1、两台电脑要在一个网络中,能ping通
2、两个节点使用相同的创世区块文件
3、禁用ipc;同时使用参数--nodiscover
4、networkid要相同,端口号可以不同
这里两个节点都使用这个创世区块文件:
- {
- "config":{
- "chainId":15,
- "homesteadBlock":0,
- "eip155Block":0,
- "eip158Block":0
- },
- "nonce": "0x0000000000000042",
- "timestamp": "0x00",
- "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "extraData": "0x00",
- "gasLimit": "0x80000000",
- "difficulty": "0x400",
- "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "coinbase": "0x3333333333333333333333333333333333333333",
- "alloc": { }
- }
节点A:
geth --datadir "./" init genesis.json
geth --datadir "./" --nodiscover --networkid 333 --ipcdisable --port 1111 --rpc --rpcport 2222 console
这样就进入了控制台界面,获取本节点的信息:
admin.nodeInfo.enode
(我的返回值是:
"enode://c4561d49c91090f4666969dd01b223adbe10c9eeb3d65326002099e4a9f3f17dec3d3c70c8dceffbe4438d3f5f0ee5a9a11841076063422b629be778d669c8df@[::]:1111")
节点B:执行相同的命令
geth --datadir "./" init genesis.json
geth --datadir "./" --nodiscover --networkid 333 --ipcdisable --port 3333 --rpc --rpcport 4444 console
然后B节点主动加入A节点:(通过A的enode信息来连接,其中包括了ip地址和端口号)
admin.addPeer("enode://c4561d49c91090f4666969dd01b223adbe10c9eeb3d65326002099e4a9f3f17dec3d3c70c8dceffbe4438d3f5f0ee5a9a11841076063422b629be778d669c8df@192.168.1.1:1111")
(注意:不能原封不动的将上面的enode复制过来,需要将A节点的ip地址填上)
然后在两个节点上测试:
net.peerCount
会返回已连接的其他节点的个数
admin.peers
返回其他节点的信息
然后一个节点创建账户,开始挖矿,另一个节点也会自动同步。
(A节点可以将智能合约部署在私有链上,B节点可以根据合约部署地址来调用合约)