问题
以太坊底层采用了P2P去中心化网络,在不知道任何其它节点的情况之下,它是如何寻找到其它节点并与之通信的呢?
答案
本身一定事先知道了其它节点的
首先厘清两个概念
bootnode
从名字上看得出来,该node作用于 本机节点 boot,预定义在源代码中
staticnode
从名字上看的出来,该node是static的,是 本机节点 稍后的指定连接节点。
cmd/swarm/bootnodes.go中,预定义了很多初始化节点。
// In cmd/swarm/bootnodes.go
var SwarmBootnodes = []string{
// Foundation Swarm Gateway Cluster
"enode://e5c6f9215c919a5450a7b8c14c22535607b69f2c8e1e7f6f430cb25d7a2c27cd1df4c4f18ad7c1d7e5162e271ffcd3f20b1a1467fb6e790e7d727f3b2193de97@52.232.7.187:30399",
"enode://9b2fe07e69ccc7db5fef15793dab7d7d2e697ed92132d6e9548218e68a34613a8671ad03a6658d862b468ed693cae8a0f8f8d37274e4a657ffb59ca84676e45b@52.232.7.187:30400",
"enode://76c1059162c93ef9df0f01097c824d17c492634df211ef4c806935b349082233b63b90c23970254b3b7138d63040