ethrerumでプライベートネットワークを作る。

1台のVMだけで稼動していたのですが、それでは面白くないので
2台のVMでプライベートネットワークを作ってみます。

マシンの用意

1台目をVirtualBoxで構築したので2台目もVirtualBoxで構築をします。
うぶんつインストールして、gethをインストールして、VirtualBoxのネットワークを繋ぎます。
VMを止めて内部ネットワークを作って立ち上げなおします。

マシンA:195.168.56.101
マシンB:192.168.56.102
という構成です。

enodeの取得

マシンA,Bでenodeを取得します。
これがないと最初のP2Pネットワークに参加できません。Winnyのハッシュみたいなものですね、懐かしい

> admin.nodeInfo
{
  enode: "enode://307276d0a28c0fe5c3a672f8e6658b9692d2f59a33456a9d51b10f50c06c5aab00d6cf2862089f2ec29a74df828a262f60c559506b0debef988c72eb9d0872d1@[::]:30303",
  id: "307276d0a28c0fe5c3a672f8e6658b9692d2f59a33456a9d51b10f50c06c5aab00d6cf2862089f2ec29a74df828a262f60c559506b0debef988c72eb9d0872d1",
  ip: "::",
  listenAddr: "[::]:30303",
  name: "Geth/v1.4.0-unstable/linux/go1.5.1",
  ports: {
    discovery: 30303,
    listener: 30303
  },
  protocols: {
    eth: {
      difficulty: 13039949,
      genesis: "fd4af92a79c7fc2fd8bf0d342f2e832e1d4f485c85b9152d2039e03bc604fdca",
      head: "e81d5b82b468dda63e4a4a726f8c691a3b72a2ce392427934bd1fc4140cab48b",
      network: 10
    }
  }
}

と打つとわかります。
"enode://307276d0a28c0fe5c3a672f8e6658b9692d2f59a33456a9d51b10f50c06c5aab00d6cf2862089f2ec29a74df828a262f60c559506b0debef988c72eb9d0872d1@[::]:30303"
の部分ですね。
マシンBでも同じように取得します。
enode: "enode://1564b0df3a377ca3b0f987bbd85fe764d7cc6db62dea00ddca370c1a02892a1c8a1c9a35670e26d97d6f8aa2fded29f36350d4b17f79e6632caae81a4a734bcc@[::]:30303"

んで、これを相互に設定します。admin.addPeer()で設定するのですが、VMのネットワークの関係かローカルIPをみるようになっています。[::]のところ。
なのでこれを正しいIPに書き直して[192.168.56.102]:30303という感じで設定してあげます。

//マシンAに、マシンBのenodeを設定
> admin.addPeer("enode://1564b0df3a377ca3b0f987bbd85fe764d7cc6db62dea00ddca370c1a02892a1c8a1c9a35670e26d97d6f8aa2fded29f36350d4b17f79e6632caae81a4a734bcc@[192.168.56.102]:30303")

> admin.peers
[{
    caps: ["eth/61", "eth/62", "eth/63"],
    id: "1564b0df3a377ca3b0f987bbd85fe764d7cc6db62dea00ddca370c1a02892a1c8a1c9a35670e26d97d6f8aa2fded29f36350d4b17f79e6632caae81a4a734bcc",
    name: "Geth/v1.4.0-unstable/linux/go1.5.1",
    network: {
      localAddress: "192.168.56.101:40866",
      remoteAddress: "192.168.56.102:30303"
    },
    protocols: {
      eth: {
        difficulty: 131072,
        head: "fd4af92a79c7fc2fd8bf0d342f2e832e1d4f485c85b9152d2039e03bc604fdca",
        version: 63
      }
    }
}]
> net.peerCount
1
>

できましたねー!!!net.peerCountも1になっているので2台でネットワークが構築できているのがわかります。
ためしにインストールして間もないマシンBでeth.blockNumberを確認してみると最初なのに

> eth.blockNumber
97

とマシンAの状態を引き継いでいることがわかります。