以太坊开发文档03 - 连接到网络

连接到网络

如何找到同伴

Geth不断尝试连接到网络上的其他节点,直到它有对等体。如果您的路由器上启用了UPnP,或者在面向Internet的服务器上运行了以太网,则它也将接受来自其他节点的连接。

Geth通过称为发现协议的东西找到同伴。在发现协议中,节点彼此闲聊以找出网络上的其他节点。为了最初进行,geth使用一组引导节点,其终点记录在源代码中。

要在启动时更改引导--bootnodes节点,请使用该选项并用空格分隔节点。例如:

geth --bootnodes "enode://pubkey1@ip1:port1 enode://pubkey2@ip2:port2 enode://pubkey3@ip3:port3"

连接性的常见问题

有时你不能连接。最常见的原因如下:

  • 您当地的时间可能不正确。参加以太坊网络需要准确的时钟。检查你的操作系统如何重新同步你的时钟(例如sudo ntpdate -s time.nist.gov),因为即使12秒太快可能导致0个同行。
  • 一些防火墙配置可以防止UDP流量流动。您可以使用静态节点功能或admin.addPeer()在控制台上手动配置连接。

要在没有发现协议的情况下启动geth,可以使用--nodiscover参数。你只希望这是你正在运行一个测试节点或一个具有固定节点的实验测试网络。

检查连接

要查看交互式控制台中客户端连接到net的对等点的数量,该模块有两个属性,可以提供有关对等点数量以及是否为侦听节点的信息。

> net.listening
true
> net.peerCount
4

要获得有关连接对等方的更多信息,例如IP地址和端口号,支持的协议,请使用peers()admin对象功能admin.peers()返回当前连接的对等体列表。

> admin.peers
[{
  ID: 'a4de274d3a159e10c2c9a68c326511236381b84c9ec52e72ad732eb0b2b1a2277938f78593cdbe734e6002bf23114d434a085d260514ab336d4acdc312db671b',
  Name: 'Geth/v0.9.14/linux/go1.4.2',
  Caps: 'eth/60',
  RemoteAddress: '5.9.150.40:30301',
  LocalAddress: '192.168.0.28:39219'
}, {
  ID: 'a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c',
  Name: 'Geth/v0.9.15/linux/go1.4.2',
  Caps: 'eth/60',
  RemoteAddress: '52.16.188.185:30303',
  LocalAddress: '192.168.0.28:50995'
}, {
  ID: 'f6ba1f1d9241d48138136ccf5baa6c2c8b008435a1c2bd009ca52fb8edbbc991eba36376beaee9d45f16d5dcbf2ed0bc23006c505d57ffcf70921bd94aa7a172',
  Name: 'pyethapp_dd52/v0.9.13/linux2/py2.7.9',
  Caps: 'eth/60, p2p/3',
  RemoteAddress: '144.76.62.101:30303',
  LocalAddress: '192.168.0.28:40454'
}, {
  ID: 'f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0',
  Name: '++eth/Zeppelin/Rascal/v0.9.14/Release/Darwin/clang/int',
  Caps: 'eth/60, shh/2',
  RemoteAddress: '129.16.191.64:30303',
  LocalAddress: '192.168.0.28:39705'
} ]

要检查geth使用的端口并找到您的enode URI,请执行以下操作:

> admin.nodeInfo
{
  Name: 'Geth/v0.9.14/darwin/go1.4.2',
  NodeUrl: 'enode://3414c01c19aa75a34f2dbd2f8d0898dc79d6b219ad77f8155abf1a287ce2ba60f14998a3a98c0cf14915eabfdacf914a92b27a01769de18fa2d049dbf4c17694@[::]:30303',
  NodeID: '3414c01c19aa75a34f2dbd2f8d0898dc79d6b219ad77f8155abf1a287ce2ba60f14998a3a98c0cf14915eabfdacf914a92b27a01769de18fa2d049dbf4c17694',
  IP: '::',
  DiscPort: 30303,
  TCPPort: 30303,
  Td: '2044952618444',
  ListenAddr: '[::]:30303'
}

自定义网络

有时您可能不需要连接到实时公共网络,您可以选择创建自己的私人测试网络。这是非常有用的,如果你不需要测试外部合同,只是为了测试技术,因为你不必与其他矿工竞争,并会很容易地产生大量的测试乙醚玩(取代12345任何非负数):

geth -—networkid="12345" console

通过提供--genesis标志,还可以通过来自JSON文件的自定义创建块运行geth 起源JSON文件应该具有以下格式:

{
  "alloc": {
    "dbdbdb2cbd23b783741e8d7fcf51e459b497e4a6": { 
        "balance": "1606938044258990275541962092341162602522202993782792835301376"
    },
    "e6716f9544a56c530d868e4bfbacb172315bdead": {
      "balance": "1606938044258990275541962092341162602522202993782792835301376"
    },
    ...
  },
  "nonce": "0x000000000000002a",
  "difficulty": "0x020000",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x",
  "gasLimit": "0x2fefd8"
}

静态节点

Geth也支持一个称为静态节点的功能,如果您有某些您始终想要连接的对等节点。静态节点在断开连接时重新连接。您可以通过将以下内容放入永久静态节点<datadir>/static-nodes.json

[
  "enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303",
  "enode://pubkey@ip:port"
]

您也可以使用admin.addPeer()以下命令通过js控制台在运行时添加静态节点

admin.addPeer("enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303")

警告:目前控制台不支持删除对等体,增加对等体或添加非静态对等体,但不保持尝试重新连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值