gethはGoにより実装されたCUIクライアントであり、gethをインストールすることでethereumネットワークにフル・ノードとして参加することができます。
何か試してみたい!と思った時に必要となるgeth。まずはこちらをインストールしてみましょう。
OSはOSXを対象にしています。
はじめに。
いろいろインストールをしているとファイルが散らばってしまい、あとで収拾がつかなくなってしまいます。今後どのディレクトリで作業をするか決めておいた方が楽です。例えば自分のホームディレクトリ配下にdevフォルダを作成し、必ずそこで作業するなど決めておきましょう。
また、コマンドラインを利用しますのでターミナルの環境を整える必要があります。OSXは初めからターミナルが付属してはいますが、個人的にはiTerm2をおすすめします。設定変更せずとも良い感じの配色設定です。またショートカットキーも揃っており、たとえば複数タブで作業している場合にCommand+右(もしくは左)でタブの切り替えをできるなどは非常に便利です。
ではOSXでのインストールを始めていきましょう。
https://book.ethereum-jp.net/first_use/installing_geth.html
を見ながらやれば済む話なのですが、補足も含めて本ブログでもそれぞれの手順を追っていきたいと思います。
xcode-cuiをインストールする
Homebrewを利用してgethをインストールするのが一番簡単です。そのためにはxcode-cuiが必要となります。何もインストールしていない方は実行。
1 | $ xcode-select --install |
homebrewをインストールする
https://brew.sh/が本家のサイトです。インストールの方法はバージョンによって変わることもあるので、なるべく本家を参照し、最新のインストール方法を確認する癖をつけましょう。
1 | $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
homebrewを用いてgethをインストール
1 2 | $ brew tap ethereum/ethereum $ brew install ethereum |
この時点でgethが動作するか確認しておきましょう。
1 2 3 4 | #gethのインストール先はどこか $ which geth #ヘルプは表示されるか $ geth -help |
データディレクトリを作成しGenesisファイルを作成
1 2 3 | $ cd 自分で作業すると決めたディレクトリ $ mkdir eth_private $ vi eth_private/Genesis.json |
下記内容をGenesis.jsonに書き込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | { "config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "", "gasLimit": "0x8000000", "difficulty": "0x100", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": {} } |
作成したGenesisファイルを用いで初期化します。
1 | $ geth --datadir ./eth_private/ init ./eth_private/Genesis.json |
ちょっと前のGenesis.jsonファイルにはhomesteadBlockが記載されていませんが、これがないと
1 | Fatal: invalid genesis file: json: cannot unmarshal hex string of odd length into Go struct field Genesis.extraData of type hexutil.Bytes |
というエラーが出るようです。ご注意ください。
ではいよいよgethを起動してみましょう
細かいオプションはさておき、下記で動かしてみましょう。
1 | geth --networkid 10 --datadir /path_to/eth_private --nodiscover --rpc --rpccorsdomain '*' --rpcport 8545 --rpcaddr '0.0.0.0' --rpcapi "web3,eth,net,personal" console 2>> /path_to/eth_private/geth.log |
1 | Welcome to the Geth JavaScript console! |
と表示されればひとまず成功です。