プラスプラス開発者ブログ

岩手県盛岡市のシステム開発会社「株式会社プラスプラス」の開発者ブログです。

Ethereumのテストネット(ROPSTEN)に接続してみる

こんにちは。

プライベートネットでの動作確認が出来ましたら、次はテストネットにつなげる実験として、 gethのコマンドを直接使用して接続を行ってみましょう。

テストネットは3種類あるのですが、今回は ROPSTEN を使用します。

  • ROPSTEN (Revived) - Proof Of Work
  • KOVAN - Proof Of Authority (Parity only)
  • RINKEBY - Clique Consensus (Geth only)

テストネットは世界中のノードとつながっていますので、実際の運用のように、近い操作を試すことが出来ます。

https://ropsten.etherscan.io/

f:id:plusplus-sawada:20180424192011p:plain
ROPSTEN (Revived) - Proof Of Work

↓こちらを見るとテストネットに繋げている地域がわかります

ethernodes.org - The ethereum node explorer

f:id:plusplus-sawada:20180424192127p:plain
テストネットの動作状況

接続の方法

フォルダなどの用意は、以前のプライベートネットをgethコマンドで作成したときの記事を参考にしてください。

plusplus-jp.hateblo.jp

nohup geth --testnet --datadir ~/eth-test-net/ \
        --syncmode "fast" \
        --cache=2048  \
        --verbosity 4 2>> ~/eth-test-net//geth.log &

コマンドは基本的にこれだけです。

--cache=2048 が動作させるマシンのメモリによって増減するようにしてください。

あとはひたすら同期が終わるまで待ちます。 私が実験したときは、ずっと同期させ続けて2〜3日位かかりました。

同期が完了するまでの間、PCを停止できませんので、連続して動かしても大丈夫な準備を前もってしておいてください。 (同期が完了する前に止めてしまうと、もう一度最初からやり直す必要があるようです)

ちなみに、どこのサーバーと同期しているのか知りたいときは、JavaScriptコンソールにつなげて、admin.peersコマンドを実行します。 その時つながっているサーバーの情報がこんな感じで表示されます。(複数つながっていることもあります)

> admin.peers
[{
    caps: ["eth/62", "eth/63", "par/1", "par/2", "pip/1"],
    id: "865a6325****************************************************aa7349c",
    name: "Parity/v1.9.2-beta-0feb0bb-20180201/x86_64-linux-gnu/rustc1.23.0",
    network: {
      inbound: false,
      localAddress: "***.***.1.13:41548",
      remoteAddress: "***.***.100.77:30303",
      static: false,
      trusted: false
    },
    protocols: {
      eth: {
        difficulty: 8152197801867759,
        head: "0xe1b6f7**********************************deb887ea62",
        version: 63
      }
    }
}]
>

同期完了

同期が終わったか判断する方法として、コンソールで eth.syncing を実行し、その結果で確認する方法がわかりやすいかなと思います。

> eth.syncing
{
  currentBlock: 3186669,
  highestBlock: 3350248,
  knownStates: 35756250,
  pulledStates: 35756250,
  startingBlock: 3186578
}

currentBlock が同期できたブロックナンバー、highestBlock が最新のブロックナンバー

同期が終わると、いろいろなことができるようになりますが、 コンソールだけですと、あまり面白みは無いですよね。

今回書いた方法を複数のPCを別の通信回線に接続して連動させることで、 テストネットに参加している他のノードを経由してデータがやりとりされるを実感できると思います。

今後、スマートコントラクトについての内容も少し書いてみたいと思います。 テストネットの環境に挑戦したいときは、こちらの記事も参照してみてください。

ちなみに、テストネットは世界中のマシンで成り立っていますので、同期が完了しても、 止めてしばらくすると世間から置いてけぼりの状態になります。(^^;

起動させれば自動的に他のノードに接続して最新ブロックに追いつくまで同期されますので テストネットを使いたいときは前もって同期をしておくと良いようです。 (戻るまで結構時間がかかるときもあります)