開発

プログラマー必見!Ethereumのプライベートネットワーク起動【2017年8月25日最新版】

EthereumのクライアントであるGethのインストールは以前の記事で完了したので、今回はGethによるプライベートネットワークでの起動まで行います。

プログラマー必見!Gethの環境構築について その1【2017年8月25日更新版】

 

 

Gethで接続できるネットワークの種類

 

Gethを起動して接続できるネットワークの種類は、「パブリックネットワーク」「プライベートネットワーク」の2つに分けられます。

パブリックネットワークは、その名の通りパブリックに運用されている不特定多数のノードが参加するP2Pネットワークです。一方でプライベートネットワークは、プライベートに運用されているネットワークで、自分または自分の知るノードのみが参加するEthereumネットワークを構築することが可能です。限られた参加者だけのネットワークであるため、容易に採掘することができたり、安全性の高いネットワークになります。そのため、Ethereumの動作を調べたり、コントラクトなどを使った分散型アプリケーション(Dapp)の開発作業など個人的な作業を行う際には、プライベートネットを用いて行うのが一般的です。

ここでの説明は、macOS 10.12 Sierra環境下での作業として説明しますが、他の環境下でも基本的な操作は同じですのでディレクトリやファイルなどのパスは自分の開発環境に合わせて行なってください。

 

パブリックネットワークに接続する

 

まずは、メインネットを立ち上げパブリックネットワークに接続します。
任意の場所にディレクトリを作成してもよいですがここではホームディレクトリ下に作成します。

データを保管するためのディレクトリを作成

$ mkdir ${HOME}/eth_main_net

 

次にGethの起動を行います。

$ geth --datadir ${HOME}/eth_main_net console

これで、メインネットを立ち上げパブリックネットワークに接続されました。
Ethereumのブロックの情報が表示されていくと思います。
Ctrl+Cを入力する(ControlキーとCを同時に押す)ことで終了できます。

 

プライベートネットワークに接続する

 

続いて、Gethをプライベートネットワークに接続して立ち上げる方法を説明していきます。

1.プライベートネットワーク用の各種データを格納するディレクトリを作成

$ mkdir ${HOME}/eth_private_net

 

2.Genesisファイルの作成

1で作成したディレクトリに、Genesisファイルというブロックチェーンの0番目のブロックであるGenesisブロックについての情報を書いたファイルを作成します。プライベートネットワークを構築する際、ゼロからブロックチェーンを作ることになるため、ブロックチェーンの性能などの情報を記載したGenesisファイルが必要になります。

1で作成したディレクトリにJSONファイルを「genesis.json」として保存してください。
なお、GethのバージョンによってGenesisファイルに記載が必要な事項が少し変わります。現在、主に使われているGethのバージョンとして、1.5から始まる1.5系と呼ばれるバージョンと1.6から始まる1.6系と呼ばれるバージョンがありますので、各自がインストールしているバージョンに合わせてファイルを記述してください。

 

バージョンの確認方法は以下のコマンドで表示されます。

$ geth version

 

以下は、Genesisファイルのサンプルです。

 

1.5系
genesis.json

{
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x00",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0xffffffff"
}

1.6系
genesis.json

{
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x00",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0xffffffff",
"alloc":{},
"config":{}
}

 

3.Gethの起動

続いて、Gethを起動します。まず、1で作成したディレクトリ下に「geth.log」という空のファイルを作成してください。
そして、コンソール上で以下のコマンドを入力してください。

$ geth --networkid "10" --nodiscover --datadir "${HOME}/eth_private_net" console 2>> ${HOME}/eth_private_net/geth.log

実行後に、「Welcome to the Geth JavaScript console!」という文字が出力され、「>」のプロンプトが表示されていればプライベートネットワークへの接続が成功し、コンソールが起動しました。

実際に今回立ち上げたプライベートネットのGenesisブロックがgenesis.jsonに記載されたものになっているのかを確認してみます。Gethプロンプト上で以下のコマンドを実行してみます。

> eth.getBlock(0)

このコマンドは指定したブロック番号のブロック情報を表示するもので、今回はブロック番号”0″を指定してGenesisブロックの情報を表示します。下の結果のように例えばdifficultyがgenesis.jsonで指定したものになっているはずです。(ただし数値は16進表記から10進表記に変換されています。)

gethのコンソールから抜けるには、以下のコマンドを入力すると終了します。

> exit

getからプライベートネットワーク上でのアカウント作成、マイニングや送金などが行えます。
それに関しての記事は、後日更新します。

日本で一番簡単にビットコインが買える取引所 coincheck bitcoin
bitFlyer ビットコインを始めるなら安心・安全な取引所で

関連記事

  1. 開発

    プログラマー必見!Gethの環境構築について【2017年8月25日更新版】

    Ethereumには複数のクライアントがありますがそれらをご存知でしょ…

  2. 開発

    プログラマー必見!Ethereumのマイニング・送金方法【2017年8月30日最新版】

    前回はEthereumの代表的なクライアントであるGethをインストー…

  3. ブロックチェーン

    トランザクションのscriptとScript言語とは?【Bitcoinを理解する-5】

    ビットコインのトランザクションには、トランザクションscriptと、S…

日本で一番簡単にビットコインが買える取引所 coincheck bitcoin

おすすめ記事

最近の記事

  1. 【概要と結果を簡単理解】分散型台帳技術に関する共同調査【日本…
  2. トランザクションのscriptとScript言語とは?【Bi…
  3. 【ICOを読み解く】ChangeはERC20トークン準拠・A…
  4. マクロの視点でBlockchainの動向を理解する。
  5. Dapps(自律分散型アプリケーション)とは何か。
  1. スマートコントラクト

    【概要と結果を簡単理解】分散型台帳技術に関する共同調査【日本銀行・欧州中央銀行】…
  2. マイニング

    Bitcoinにおけるマイニング(採掘)とはそもそも何なのか。【Bitcoinを…
  3. ICO解説

    【ICOを読み解く】ChangeはERC20トークン準拠・APIを投資家向けに公…
  4. 開発

    プログラマー必見!Ethereumのプライベートネットワーク起動【2017年8月…
  5. ブロックチェーン

    トランザクションのscriptとScript言語とは?【Bitcoinを理解する…
PAGE TOP