イーサリアムGethとは、イーサリアムファンデーションが開発するイーサリアム公式のクライアントです。Gethを使用することでイーサリアムネットワークにノードとして参加することができ、GethのコマンドでKeystoreをローカル環境で安全に使用することができます。
また2020年11月5日にデプロイされたイーサリアム2.0のデポジットコントラクトを使用後、イーサリアム2.0のBeacon Nodeを起動するのにGethなどで同期をしたETH1ノードが必須となっています。
本稿ではコマンドラインに慣れていない非エンジニア向けにGethのインストールから、Keystore(アカウント)の作成、同期モードの選択やGoerliテストネットへの切り替えなどについて詳しく実演で解説を行います。
- 1 MistとEthereum Walletの開発終了
- 2 Ethereum Walletでブロック同期ができない問題
- 3 保管に最適なHDDとUSBメモリ
- 4 Gethをインストールする
- 5 Gethの使い方
- 5.1 イーサリアムのブロック同期ができるか確認する
- 5.2 同期する際のオプション(Fast, Light, Full)
- 6 Goerliテストネットに参加する
- 7 GethでKeystore(アカウント)を作成する
- 7.1 安全にイーサリアムアカウントを作成する
- 7.2 Keystoreの保存場所
- 8 Keystoreからイーサリアムアカウントを復元する
- 9 念の為Keystoreから秘密鍵を生成する
- 10 MetamaskでGoerliを使用する
イーサリアムウォレットの仕様についての詳しい解説はこちら
MistとEthereum Walletの開発終了
イーサリアムウォレットは、イーサリアムファンデーションにより提供されるDappsで、わかりやすいインターフェイスにより簡単にイーサリアムのアカウントをKeystoreで管理することができます。ですが、初期のDappsブラウザであるMistが開発停止となり、2018年7月24日の公開を最後にアップデートが行われなくなってしまいました。
Ethereum Walletでブロック同期ができない問題
イーサリアムブロックを同期するためのクライアント”Geth”の開発が進むにつれ、イーサリアムウォレットのバックで動くGethを最新のバージョンにアップデートしても、イーサリアムウォレットでブロック同期ができない問題があります。
このように、起動時に最新のブロックを同期できても、ノードが見つからずにRemote状態になってしまいます。これは、「地方でノードが見つからない」や「ライトモードだからブロック同期できない」などが原因ではなく、イーサリアムウォレット自体の問題となります。
そのため、ローカル環境で安全にKeystoreファイルを作成するには、Gethでコマンドを使用して行う必要があるのです。
保管に最適なHDDとUSBメモリ
私がハードウェアウォレットを使用しない理由として、ニーモニックフレーズを安全に管理しなければならないからです。例えばLdger NanoやTrezorは署名をハードウェアウォレット内で行うことができるという利点はあるものの、破損リスクや紛失リスクを避けるには3~4個のハードウェアウォレットを用意する必要があり、多くのコストが必要となります。
それに伴いニーモニックフレーズを安全に保存するためにHDDやフラッシュメモリなどを複数用意が必要であり、Keystoreの管理リスクと同じとなるのです。そのため、Keystoreは複数保管や分割保管などを管理できることから、HDDとフラッシュメモリを複数使用して管理を行っています。
フラッシュメモリはデータの長期保管に適さないため、普段使いは便利ですがHDDでのバックアップがより安全となります。
HDDはWestern Digitalが最大手なので、Western Digital製を選ぶのが最適でしょう。
また同じHDDを2つ買うと製造元による不具合や破損リスクがあることから、別メーカーのものを用意するとより安全となります。シリコンパワーのポータブルHDDは防水かつ、耐衝撃となるのでWDとは別に保有していると安心でしょう。
また、USBメモリは業務用のSLCを採用したものが最適であり、Transcendの512MBが最適です。価格のやすいUSBメモリは、MLCやTLCなのでデータ寿命が短くなるという問題がありますが、安価になります。
普段使いの場合ならMLCのUSBメモリで十分となります。オリジナルデータとして、1つ保管する場合にはSLCのUSBメモリ、普段使いでKeystoreのみ参照用等の場合はMLCにしましょう。
Gethをインストールする
ではGethをインストールしてアカウントを作成してみましょう。まず、Github上にあるGethは