知乎专栏 | 多维度架构 |
新增节点显示 true ,但是使用 admin.peers 查看不到。
> admin.addPeer("enode://c4586276391b3c88ec23889d1bc825d0c7d69bd5765d4545686f835608068b8dc48799d2686a04ea0f9e17aed099bf9b56935679fa6493e9b17151624a320714@172.16.0.17:30303") true > admin.peers []
查看节点,如果发现 ip: "::" 同时 discovery: 0
> admin.nodeInfo { enode: "enode://9f6490ffb5236f2ddc5710ae73d47c740e0a3644bbd2d67029cf4a6c4693d2f470b642fd2cc3507f7e851df60aaeb730a1270b7a477f91ec5b6b17a8a4b40527@[::]:30303?discport=0", id: "9f6490ffb5236f2ddc5710ae73d47c740e0a3644bbd2d67029cf4a6c4693d2f470b642fd2cc3507f7e851df60aaeb730a1270b7a477f91ec5b6b17a8a4b40527", ip: "::", listenAddr: "[::]:30303", name: "Geth/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.1", ports: { discovery: 0, listener: 30303 }, protocols: { eth: { difficulty: 131072, genesis: "0x611596e7979cd4e7ca1531260fa706093a5492ecbdf58f20a39545397e424d04", head: "0x611596e7979cd4e7ca1531260fa706093a5492ecbdf58f20a39545397e424d04", network: 123456 } } } >
解决方案启动时可能增加了 --nodiscover 参数,去掉参数后可以解决。
有三种方法新增节点
第一种,启动指定
geth --bootnodes enode://pubkey1@ip1:port1,enode://pubkey2@ip2:port2,enode://pubkey3@ip3:port3
第二种,在控制台中添加
> admin.addPeer('enode://9f6490ffb5236f2ddc5710ae73d47c740e0a3644bbd2d67029cf4a6c4693d2f470b642fd2cc3507f7e851df60aaeb730a1270b7a477f91ec5b6b17a8a4b40527@172.16.0.1:30303')
第三种,在文件 ~/.ethereum/geth/static-nodes.json 中添加节点数据
[ "enode://9f6490ffb5236f2ddc5710ae73d47c740e0a3644bbd2d67029cf4a6c4693d2f470b642fd2cc3507f7e851df60aaeb730a1270b7a477f91ec5b6b17a8a4b40527@172.16.0.17:30303", "enode://pubkey@ip:port" ]
这个文件内容是一个数组,类似 ["","",""] 。