Ethereum入門|macにGethをインストールしてみよう

参照元:Go Ethereum

ビットコインの次に注目されているEthereum(イーサリアム)ですが、投機対象としてみているのでは勿体無いほど可能性を秘めています。

ビットコインを超える?Ethereum(イーサリウム)の可能性

そんなEthereum(イーサリアム)をPCから操作してみたいと思います。テスト環境を用意し、そのうえでアカウント作成やマイニングなど色々試していきたいと思います。環境としては、macを利用します。windowsなどのセットアップについては別途また書いて行こうと思います。

今回想定している内容としては、

  • Gethのインストール
  • Gethを起動(テストネットワーク)

上記2点をやってみようと思います。

スポンサーリンク

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をインストールできたでしょうか。ここまでくれば、テストネットワークでイーサリアムを動かすことができます。次は、アカウント作成などについてまた書いてみたいと思います。

スポンサーリンク