dockerを使ってethereumのプライベート環境をつくる

dockerを使ってethereumのプライベート環境をつくる

  • Docker version 17.05.0-ce, build 89658beで構築しています
  • ethereum/client-goのdockerイメージを使います
  • Host側とはport番号を変え接続します。環境を2つ作ります
    • node01:port8546,port30304
    • node02:port8547,port30305
dockerのプライベートネットワークを作ります。

イメージをpullする

データの永続化用保存先を作成

プライベート用のgenesisを作成する

  • nonce : アカウントが発行したトランザクション数
  • difficulty : マイニングの難易度。
  • alloc : 初期状態で特定のEOAにetheを割り当てたりできる
  • coinbase : minerのアカウント。仮で設定している
  • parentHash : 親ブロックのハッシュ。今回は初期
  • extraData : 任意の値(関連値の保管用)

初期設定
node01

node02

起動
node01

node02

node01のgethに接続してアカウントを作成して採掘を開始する
node01

node02

ブロックチェーンをプライベートで試してみた

ブロックチェーンをプライベートで試してみた

環境
  • OS
    • ubuntu17.10
  • 試したブロックチェーンアプリ
    • ethereum(1.7.3-stable-4bb3c89d)
  • wallet
    • simple-ether-wallet(node.js/meteor)
  • sa

  • ブロックチェーンの保管場所
    • /home/yosshi/eth_private_net/
プライベートネットでのセットアップ

アカウント作成

採掘

※coinの単位
通常はweiで表示される

  • 1 ether $$=$$ 10^3 finney
  • 1 ether $$=$$ 10^6 szabo
  • 1 ether $$=$$ 10^18 wei
外部ツールからAPI的にアクセスさせる

  • ※オプションの意味
    • –nodiscover : ピアを自動接続させない
    • –maxpeers 1 : 隣接接続数の最大を定義。左記例は1
    • –network 10 : 1,2,3以外を設定する。プライベートネット識別用
サンプルウォレットアプリ

ブラウザで http://localhost:3000/ にアクセスする

他のノードとつなぐ
  • 端末Aのアドレス : 192.168.1.108
  • 端末Bのアドレス : 192.168.1.110

最初は接続ホストなし

接続先情報もなし

ノードの情報を表示する(端末A/B両方確認しておく)

※ @[::]:30303の部分が @IPアドレス:ポート番号。[::]はIPv6のlocalhostの意味。

端末Aで端末Bを登録

端末Bで端末Aを登録 (実際は端末AでBを登録したら両方ともnet.peerCountは1だしadmin.peersにも相手が登場したので以下実行していない)

参考

https://github.com/ethereum/go-ethereum/wiki/Installing-Geth