ビットコインの次に注目されているEthereum(イーサリアム)ですが、投機対象としてみているのでは勿体無いほど可能性を秘めています。
そんなEthereum(イーサリアム)をPCから操作してみたいと思います。テスト環境を用意し、そのうえでアカウント作成やマイニングなど色々試していきたいと思います。環境としては、macを利用します。windowsなどのセットアップについては別途また書いて行こうと思います。
今回想定している内容としては、
- Gethのインストール
- Gethを起動(テストネットワーク)
上記2点をやってみようと思います。
Contents
Gethとは
イーサリアムを学ぼうとすると必ずといっていいほど出てくるGethですが、これはGo-ethereumの略語です。
Official Go implementation of the Ethereum protocol
とあるように、Go言語で実装された公式に認めらているイーサリアムプロトコルです。Gethをインストールすることで、Ethereumネットワークにフルノードとして参加することができます。
HomebrewからGethをインストール
macへのインストールについて、Homebrewを利用します。Homebrewは、Gethなどのパッケージを簡単にインストールすることができるツールだと考えて貰って大丈夫です。macにHomebrew自体が入っていない人は、「MacにHomebrewをインストールする」という記事を見て貰うとわかりやすいと思います。
$ brew tap ethereum/ethereum $ brew install ethereum
簡単ですが、これで終わりです。インストールが出来ているか確認してみましょう。
$ which geth /usr/local/bin/geth
こんな感じでパスが通っていれば、インストールが完了しています。
Gethをテストネットワークで起動
では早速Gethを起動させていきましょう。
データディレクトリを作成
まずはじめに「データディレクトリ」を用意しましょう。データディレクトリは、送受信したブロックデータやアカウント情報を保存するためのディレクトリです。
#ホームディレクトリに移動 $ cd #ディレクトリを作成 $ mkdir eth_testnet #作成したディレクトリに移動 $ cd eth_testnet #ディレクトリを確認 $ pwd /Users/***/eth_testnet
ここまでできたら、次は「genesisファイル」を作成してみましょう。
genesisファイルを作成
genesisファイルは、名前通り0番目の情報を書いたブロックです。これはjson形式のテキストファイルで作成します。
$ vim genesis.json
vimコマンドを打つとターミナル上にテキストエディタが起動します。「i」コマンドをうち編集モードに変更し、
{ "nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x0", "gasLimit": "0x8000000", "difficulty": "0x4000", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": {} }
この内容で記述をして下さい。記述が終わったら、「esc」で編集モードを終了し、「:wq」コマンドで保存して下さい。
Gethを初期化しよう
ここまでできたら、Gethを初期化しましょう。ディレクトリの「/Users/***/eth_testnet」の部分は、各自のユーザー名に変更して下さい。
$ geth --datadir /Users/***/eth_testnet init /Users/***/eth_testnet/genesis.json
上手くファイルが作成されたでしょうか。
ちなみにここで、上手くファイルが作成されないことがあります。
Fatal: invalid genesis file: json: cannot unmarshal hex string of odd length into Go struct field Genesis. extraData of type hexutil.Bytes
こういうメッセージが表示されたときは、jsonファイルを若干書き換えましょう。
{ "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x400", "alloc": {}, "coinbase": "0x3333333333333333333333333333333333333333", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x", "gasLimit": "0x8000000", "config": {} }
私の場合は、このようにネット情報を参考にjsonファイルの情報を書き換えたら上手くいきました。
データディレクトリを確認しよう
上手く初期化ができたでしょうか。ここまでできたら、初期化できているか早速確認してみましょう。
$ cd $ tree eth_testnet eth_testnet/ ├── genesis.json ├── geth │ ├── LOCK │ ├── chaindata │ │ ├── 000002.ldb │ │ ├── 000003.log │ │ ├── CURRENT │ │ ├── LOCK │ │ ├── LOG │ │ └── MANIFEST-000004 └── keystore
こんな感じで生成されていれば、大丈夫です。若干の内容に差があるかもしれませんが、それは気にしなくて大丈夫です。
Gethを起動してみよう
ここまできたら、最後にGethを起動してみましょう。「/Users/***/eth_testnet」の部分は、各自のユーザー名に書き換えて下さい。
$ geth --networkid 4649 --nodiscover --maxpeers 0 --datadir /Users/***/eth_testnet console 2>> /Users/***/eth_testnet/geth.log
コマンドのオプションをつけていますが、そこまで気にしなくて大丈夫です。もし気になる方は、ぜひ調べてみて下さい。
Welcome to the Geth JavaScript console! instance: Geth/v1.7.1-stable-05101641/darwin-amd64/go1.9.1 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 >
起動コマンドを実行し、問題なければWelcomeメッセージが表示されているはずです。
おわりに
上手くGethをインストールできたでしょうか。ここまでくれば、テストネットワークでイーサリアムを動かすことができます。次は、アカウント作成などについてまた書いてみたいと思います。