LoginSignup
3
0

More than 5 years have passed since last update.

Ethereum go-ethereum/gethバージョンによるNetwork Listening Portについて(プライベート環境)

Last updated at Posted at 2017-03-22

(2017/3/25追記)
以下の投稿リンクに続きを記載しました。
どちらかと言うと、複数ノード接続によるプライベート環境構築の方法に力点をおいていますが。。。
<リンク>
「Ethereum go-ethereum/gethでのプライベート環境構築方法について」

以上

Ethereum go-ethereum/gethをubuntuへインストールし、プライベート環境にて複数ノードの接続検証実施時に気づいたgethバージョンによる注意点について纏めました。
(ざっくりした感じですみません。。。)

【本文】

複数ノードをプライベート環境でP2P接続を実施する場合、geth起動時にオプションにてNetwork Listening Port(--port XXXXX(※パブリック環境はデフォルトで30303))を指定する必要がありますが、インストール時のgethバージョンによっては、正常に機能していない可能性があることに気づきました。

具体的には、gethバージョン1.5.9以上だと、geth起動時にNetwork Listening Portを指定しても、geth起動後にnodeinfoで中身を覗くと、ランダムなport番号が割り当てられてしまうようです。

なお、幾つかのバージョンで検証した結果、gethバージョン1.4.20までは指定したport番号の通りに起動するようです。

【検証したgethバージョン】

v1.3.6
v1.4.20
v1.5.9
v1.6.0

【geth起動例】

$ geth --dev --datadir ABC --port 50303 --nodiscover --maxpeers 10 console

上記でgeth起動後、

> admin.nodeInfo

を実行。

<~v1.4.20:geth>
[nodeinfo]
{
enode: "enode://publickey_of_node@[::]:50303?discport=0",
(以下略)
}
(コメント)
「--port 50303」と指定した通りに起動していることが、nodeinfoで確認できる。

<v1.5.9~:geth>
[nodeinfo]
{
enode: "enode://publickey_of_node@[::]:XXXXX?discport=0",
(以下略)
}
(コメント)
「--port 50303」と指定したもののnodeinfoで確認すると、実際にはランダムなport番号が割り当てられる。

【Network Listening Portがランダムに割り当てられる場合の問題点】

本来であれば、プライベート環境で複数ノードを接続する際に、static-nodes.jsonを使用すれば、毎回、接続コマンド(addPeer)を発行しなくても、static-nodes.json内の接続先情報を各ノードが読み込み自動接続してくれます。

その際、設定情報として、「"enode://publickey_of_node@ip:port"」が必要なのですが、今回の問題でいうと、portが毎回ランダムに変更されるため、static-nodes.jsonファイルを読み込んで自動接続ができなくなります。

また手動接続する場合も、ランダムなport番号を指定してaddPeerコマンドを発行しても、うまく接続できないという事象が発生します。

以上よりプライベート環境で複数ノードによる接続検証を行いたい場合、現時点では、gethバージョンをv1.4.20以下にしておくことをお薦めします。

【後記】

今回のgeth起動オプションの一つである「--port XXXXX」(Network Listening Port)がgethバージョン次第では指定したport番号ではなくランダムに割り振られる、という事象については、他事例や解決策がないか調査中です。
(※現状、英文含めこの話題に触れている記事を見つけることができず、私だけの固有な事象かもしれませんし。。。)
私と同事象が発生して悩んでおられる方がいればと思い、今回の投稿となりました。

何か有益な情報が確認できたらまた連携します。

【参考情報】

<複数ノードの接続方法について>
・ethereumのPrivate Chainを2台のマシンで運用する(ばりきのあしあと)
 http://barikidazu.blog.fc2.com/blog-entry-98.html

・Ethereum(geth)でプライベート・ネットワークを作る手順
 http://qiita.com/hshimo/items/8b69975d40466022f278

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0