Ethereum(geth)でプライベート・ネットワークを作る手順

NO IMAGE
  • Ethereumでプライベート・ブロックチェーンを作る手順
    • 主に開発用を念頭においています
    • ここでは、gethを使ったプライベート・ネットワークを作ります

事前準備

gethをインストールしておく

始める

genesis.jsonを作る

Setup a Local Test Blockchain []

genesis.jsonファイルを作成

{
    "nonce": "0x0000000000000042", 
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", 
    "difficulty": "0x4000", 
    "alloc": {},
    "coinbase": "0x0000000000000000000000000000000000000000", 
    "timestamp": "0x00", 
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", 
    "extraData": "Custem Ethereum Genesis Block", 
    "gasLimit": "0xffffffff"
}

ジェネシスブロックの作成

ジェネシス・ブロックとは、一番初めのブロックのことです。

1.4.xから以下の様に作成するようです。

geth init ./genesis.json

開発用でgethを立ち上げたい場合は、–devオプションをつけるとデカイファイルのDAGを作成しなくて良かったりして、楽です。

geth --dev --datadir ./data init genesis.json

アドレスを生成するため、初回のgeth実行

gethを起動する。

注意) geth 1.4.0以降 –genesisオプションが非推奨になり、エラーなります。
1.3.x 以前: geth –genesis genesis.json
1.4.x 以降: geth init genesis.json で初期化後、geth + オプション で起動。

$ geth --genesis  --datadir  --networkid 123 --nodiscover --maxpeers 0 console

例:

geth --genesis ./genesis.json --datadir ./data --networkid 123 --nodiscover --maxpeers 0 console

上記実行してから、以下でアカウントを作成

> personal.newAccount();
Passphrase:
Repeat passphrase:
"0xcd65f280ca5460398e95c2ae98dd00585de607cb"

作ったら、exitとうって、gethを停止する。
これで、etherを取得するためのアドレスが作成された。

余計なファイル(ブロックチェーンデータ)の削除

keystore以外の余計なファイルを消す。

$ cd 
$ rm -rf `ls | grep -v keystore`

10 etherを取得する

以下のように、CustomGenesis.jsonに自分のアドレスを設定

"alloc": {
    "": {
        "balance": "10000000000000000000"
    }
}

再度gethを起動

geth --genesis ./CustomGenesis.json --datadir ./data --networkid 123 --nodiscover --maxpeers 0 console

作成したアドレスに10 etherがあることを確認

primary = eth.accounts[0];
"0xcd65f280ca5460398e95c2ae98dd00585de607cb"
balance = web3.fromWei(eth.getBalance(primary), "ether");
10

参考コマンド

コネクションをチェック

> net.listening
true
> net.peerCount
4

接続ピアを表示

> 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'
} ]

NodeUrlを取得する

> admin.nodeInfo
> admin.nodeInfo.NodeUrl

グローバルIP addressに変更することを忘れずに

開始時にノードを指定して起動する

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

ノードを追加する

admin.addPeer(enodeUrlOfFirstInstance)

マイニングを開始

miner.start()

その他、プライベート・ブロックチェーンを作る方法

eth-utils

eth-utilsを使う方法もある

ethersphere/eth-utils: ethereum utilities, dev tools, scripts, etc

Eris

Erisを使う。
ドキュメントが微妙でセットアップが意外に大変

HydraChain

鍵とか生成せず、コマンド一つで立ち上げられるので、楽

コマンド例

hydrachain -d datadir runmultiple --num_validators=3 --seed=42

HydraChain/hydrachain: Permissioned Distributed Ledger based on Ethereum

geth-private

プライベートEthereumブロックチェーンをセットアップするツール。

geth-private – easily setup private Ethereum blockchains from the command-line and Node

gethdev

使ったことはないが、こんなのもある。

gethdev

参考

プライベートチェーン

ネットワーク

     

免責事項

本記事に掲載されている記事の内容につきましては、正しい情報を提供することに務めてはおりますが、提供している記事の内容及び参考資料からいかなる損失や損害などの被害が発生したとしても、弊社では責任を負いかねます。実施される際には、法律事務所にご相談ください。

技術・サービス・実装方法等のレビュー、その他解説・分析・意見につきましてはblock-chani.jp運営者の個人的見解です。正確性・正当性を保証するものではありません。本記事掲載の記事内容のご利用は読者様個人の判断により自己責任でお願いいたします。

     

コンセンサス・ベイス(株)とブロックチェーン事業を行なってみませんか?

当サイトを運営するコンセンサス・ベイス株式会社は、2015年設立の国内で最も古いブロックチェーン専門企業です。これまでに、大手企業の顧客を中心に、日本トップクラスのブロックチェーンの開発・コンサルティング実績があります。

ブロックチェーンに関わるビジネスコンサル・システム開発・教育・講演などご希望でしたら、お気軽にお問い合わせください。

     
     

ブロックチェーン学習に最適の書籍の紹介

図解即戦力 ブロックチェーンのしくみと開発がこれ1冊でしっかりわかる教科書

ブロックチェーン イーサリアムへの入り口 第二版 (ブロックチェーン技術書籍)

本書は、ブロックチェーン技術に興味を持ったエンジニアや、その仕組みを学び、自分の仕事に活かしたいビジネスパーソンを対象にして、ブロックチェーンのコア技術とネットワーク維持の仕組みを平易な言葉で解説しています。この本を読んだうえで、実際にコードを書くような専門書、ブロックチェーンビジネスの解説書を読むことで、理解度が飛躍的に高まるでしょう。(はじめにより)

イーサリアム(Ethereum)カテゴリの最新記事