Ethereumをはじめてみる①
備忘録がてらまとめておきます。
ほぼ最短ルートでプライベートネットが立てれるはず。
クライアントについて
イーサリアムにはいくつかの代表的なクライアントが存在していて、どれを使っても問題なさそう。ただ、Qiitaや書籍等ではGoで実装された「Go Ethereum (Geth)」がデファクトみたいなので、今回もそれを使ってみようかなと。
Gethのインストール
$ brew tap ethereum/ethereum $ brew install ethereum
以上でインストールは完了。
プライベートネットを立ててみる
Ethereumには3つのネットワークが存在。
パブリックネット
→パブリックなやつ
プライベートネット
→個人の管理下に置ける中央集権的なネットワーク。開発用(?)
コンソーシアムネット
→上2つを足して2で割った感じ。半非中央集権。
解説雑かよ。
今回はとりあえずEthereumをいじるのが目的なので、プライベートネットワークを使います。
プライベートネット用のディレクトリを作る
場所や名前は適当にどうぞ
$ mkdir /Users/userhoge/eth_private_net
genesisファイルの作成
ブロックチェーン上の初期ブロック、つまり0個目のブロックを定義するgenesisファイルを作り、
$ cd /Users/userhoge/eth_private_net $ touch genesis.json
お好みのエディタで編集。
{ "config": { "chainId": 10, "homesteadBlock" : 0, "e1p155Boock" : 0, "e1p158Boock" : 0 }, "nonce": "0x0000000000000033", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "", "gasLimit": "0x8000000", "difficulty": "0x4000", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": {} }
ブロックを初期化する
–datadirで指定した先のディレクトリに、genesisブロックの情報が保存される。(ここでは /Users/userhoge/eth_private_net)
$ geth --datadir /Users/userhoge/eth_private_net init /Users/userhoge/eth_private_net/genesis.json
プライベートネットに接続する
Gethコンソールを立ち上げ、プライベートネットワークに接続してみる
$ geth console --networkid "10" --nodiscover --datadir "/Users/userhoge/eth_private_net" 2>> /Users/userhoge/eth_private_net/geth_err.log
いろいろとオプションがついているので簡単にまとめると、
console
コンソールを立ち上げますよ〜と。
対話的にコマンドを実行できるようになる。
--networkid "10"
genesis.jsonで指定したchainidと同一の値を指定する。
5以上の整数を指定することで、プライベートネットワークを起動できる。参考までに、1: Mainnet、2: Morden,
、3: Ropsten、4: Rinkby
--nodiccover
同一networkidの他のノードと接続することを避けるため。
プライベートなオレオレイサーリアムを立てるので他のノードと通信する必要はありません。
--datadir
ログなどをどこに吐き出すか。
genesisブロックの初期化で使用したのと同じディレクトリを指定する。
詳細はここに乗ってるので見ていただければと。
Command Line Options · ethereum/go-ethereum Wiki · GitHub
こんなのが出てきたら成功
Welcome to the Geth JavaScript console! instance: Geth/v1.8.7-stable/darwin-amd64/go1.10.2 coinbase: コインベースのアドレス at block: 58 (Fri, 04 May 2018 11:28:16 JST) datadir: /Users/userhoge/eth_private_net modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
とりあえず今日はここまで。