FC2ブログ

Gethはじめ

どうも、ぺろりんです。


今回も「はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門」でお勉強していきます。
コード以外は本の内容そのまま書かないよう注意せねば。。

さて、今回はGethの起動です。


準備

ここでは、起動前にテストネットワーク用のデータディレクトリと、Genesisブロック(0番目のブロック)を作成します。
で、準備の最後にGethを初期化します。

前回rootユーザー(ユーザー名の横に「#」がついてる)になってたので、私の場合、ひとまず本に合わせて普通のユーザー(ユーザー名の横に「$」がついてる)になっておきます。初めから「$」になってたら特にやる必要はないです。
root@ubuntu:~# exit
ログアウト
vm01@ubuntu:~$


ユーザーを変えたので、とりあえずPathだけ確認しておきます。大丈夫そう。
vm01@ubuntu:~$ which geth
/usr/local/bin/geth



データディレクトリの作成

ここでは本に合わせた場所と名前でデータ用のディレクトリを作成します。
vm01@ubuntu:~$ mkdir ~/data_testnet
vm01@ubuntu:~$ cd data_testnet/
vm01@ubuntu:~/data_testnet$ pwd
/home/vm01/data_testnet



Genesisファイルの作成

次に、Genesisファイルを作成します。ファイルはjson形式[注1]です。本のとおり、Linuxのテキストエディタのviエディタ[注2]を起動して作成しましょう。viに慣れてなかったら、たぶん拡張子だけ「json」にして、GUIからテキストファイルで同じ場所にファイルを作れば良いかと思います。
vm01@ubuntu:~/data_testnet$ vi genesis.json


開いたらこんな感じの内容を入れます。
{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0x8000000",
"difficulty": "0x4000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {}
}
~
~
~
~
~
~
~
~
~
~
"genesis.json" 11 lines, 367 characters


作成できたことを確認します。ちゃんとありますね。
vm01@ubuntu:~/data_testnet$ ls
genesis.json


中身も確認しておきましょう。
vm01@ubuntu:~/data_testnet$ cat genesis.json 
{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0x8000000",
"difficulty": "0x4000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {}
}



Gethの初期化

この「おまじない」で初期化できるそうです。「vm01」のところはご自分のユーザー名を入れてください。
vm01@ubuntu:~/data_testnet$ geth --datadir /home/vm01/data_testnet init /home/vm01/data_testnet/genesis.json


おまじないを唱えると、こんな感じになります。はじめの行に「WARNING」と出てますが、本と同じなので大丈夫そう。
I0321 06:51:35.178564 cmd/utils/flags.go:615] WARNING: No etherbase set and no accounts found as default
I0321 06:51:35.180028 ethdb/database.go:83] Allotted 128MB cache and 1024 file handles to /home/vm01/data_testnet/geth/chaindata
I0321 06:51:35.243803 ethdb/database.go:176] closed db:/home/vm01/data_testnet/geth/chaindata
I0321 06:51:35.245107 ethdb/database.go:83] Allotted 128MB cache and 1024 file handles to /home/vm01/data_testnet/geth/chaindata
I0321 06:51:35.306442 cmd/geth/chaincmd.go:131] successfully wrote genesis block and/or chain rule set: 3b3326d56983eec74bcd3c5757801dcd42e0bf2f169fc0c5d695e28e20f217d7


初期化するとデータディレクトリがこんな感じになります。
vm01@ubuntu:~/data_testnet$ cd
vm01@ubuntu:~$ tree data_testnet/
data_testnet/
├── genesis.json
├── geth
│   └── chaindata
│   ├── 000002.log
│   ├── CURRENT
│   ├── LOCK
│   ├── LOG
│   └── MANIFEST-000003
└── keystore

3 directories, 6 files


これで準備が終わりました。


Gethの起動

本に言われた通りのおまじないをたたきます。(gethコマンドのヘルプはこちらへ)
vm01@ubuntu:~$ geth --networkid 4649 --nodiscover --maxpeers 0 --datadir /home/vm01/data_testnet console 2>> /home/vm01/data_testnet/geth.log


こうなればうまく起動したってことみたいです。
Welcome to the Geth JavaScript console!

instance: Geth/v1.5.5-stable-ff07d548/linux/go1.6.2
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

>



まとめ

今回は、Geth用のディレクトリを用意してGethの起動までやりました。

内容を気にせず本に言われた通りすすめてきましたが、そろそろ気持ち悪いので「Genesisファイル」と「Gethの起動コマンド」についてもう少し理解を深めていきたいと思います。
ここに書くと記事が長くなりそうだったので、これは次回にまわします。


[注1] json形式…JavaScript Object Notation の略だそう。調べた結果をザクっというと、「JavaScriptから派生し、テキストベースでいろんなブラウザとか言語に対応したデータ記述形式の一種」とのこと。
(参考)
非エンジニアに贈る「具体例でさらっと学ぶJSON」(Developers.IO)
JSONってなにもの?(Think IT)
JSONの意味・解説(Weblio 辞書)

[注2] viエディタ…Linuxで使うテキストエディタ。癖があるので初見だとドキッとするかも。「文字入力するためにモード切替する」とかいうエディタです。もう少しいうと、カーソルを動かしたりするモード、入力するモード、ファイルを終了(保存したりしながら)するためのモード、という3つのモードがあります。とりあえずviコマンドたたいてみたけど戻れねーよ!!ってなったら、[Esc]を押してから[:]を押して[q]、最後に[Enter]で抜けましょう。[q]でだめなら[:]のあとに[q]、[!]と入力して[Enter]で強制終了です。詳しい使い方は参考サイトをご参照ください。
(参考)
viエディタの使い方(Linux 入門)

コメントの投稿

Secret

プロフィール

ぺろりん

Author:ぺろりん
最近仮想通貨が楽しくなってきました。
基本的な技術をちゃんと知りたいなぁと思いつつ、まったりお勉強していこうかと思います。

twitter:ぺろりん@ぶろっくちぇーん

カテゴリ
最新記事
最新コメント
月別アーカイブ
カレンダー
11 | 2018/12 | 01
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
メールフォーム

名前:
メール:
件名:
本文: