Ethereumのノードをたてて、Smart Contractをデプロイする予定があったので
まずは、ノードをたてた時のやり方と、その時の注意点をメモ用としてまとめてみました。
尚、環境はUbuntu16.04
上で構築しています。
gethのインストール
gethはEthereumのクライアントソフトウェアです。
gethのコマンドをたたくことによって、Ethereumのネットワークへの操作を行うことができるようになります。
ここを参考にしました。
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum
gethのtestnetでの起動
Ethereumのテストネットワークには何種類かあり(IDで識別されています)代表的なものは、以下です。
- ROPSTEN (Revived) - Proof Of Work
- KOVAN - Proof Of Authority (Parity only)
- RINKEBY - Clique Consensus (Geth only)
今回は ROPSTEN (Revived) - Proof Of Work
を選択しました。
以下のコマンドで起動しました。
$ geth --testnet --fast --cache=1024 console
初回起動時には、ブロックチェーンのデータの同期が始まります。これがものすごく時間がかかります。(かなり誤算でした。)
いろんなサイトで「数時間でおわる」と言っていたのですが・・・僕の環境がいけてないせいか半日くらいかかりました。
なので、--fast
オプションや--cache
オプションをつけて高速同期化しています。
尚、最近--light
オプションもでたらしいのですが、なるべくデータをローカルに保持したいこともあり、選択しませんでした。
同期の確認
基本的には console中で、今どのblock numberを処理しているのかがでてくるのですが・・
以下のコマンドをうつことで同期の進捗状況を確認することができます。
$ eth.syncing
{
currentBlock: 処理が完了したblock,
highestBlock: ネットワーク上の最大block,
/* 以下略 */
}
testnetでのetherの取得
主に2つのやり方があるようです。
- 頑張ってminingする
- だれかから送金してもらう
今回は2を採用しました。
ropsten.faucet.b9lab.com
にリクエストを出すと、任意のアドレスに 1eth 送金してくれるサービスを使って
ethを取得しました。
apiが公開されており、以下のようなリクエストを出すと送金されます。(便利ですね!)
※ ただ、一度に1ethまでの制約があります。
$ curl -X POST -H "Content-Type: application/json" -d '{"toWhom":"your address here"}' https://ropsten.faucet.b9lab.com/tap
{
"txHash" : "transaction hash here"
}
このトランザクションがマイニングされると、はれて自分のアドレスに1ethが着金されます。
データサイズの確認
- ディスク容量がいっぱいの時にやる事 - Qiitaを参考にさせていただきました。
$ cd .ethereum
$ du -sh ./*
ROPSTEN testnetではだいたい2.7Gを使用していました。
(fastオプションつけないともう少し大きくなると思われます。)
gethのmainnetでの起動
以下で起動できます。
$ geth --fast --cache=1024 console
おそらくしょぼいネットワーク環境がボトルネックになっているのでしょうが・・同期が全然おわりません。
想定では2日くらいかかってしまいます。。。(絶賛同期中です^^)
何か原因わかったら追記しようかと思います。
以上になります。