技術情報

Windowsにgethを入れてEthereumの内部通貨etherを手に入れる

Blockchain 技術情報

ブロックチェーン初心者の自分が、手始めに「WindowsでEthereumの内部通貨etherを取得する」に取り組んでみた手順をご紹介します。

使うOSは、あえてのWindows

いろいろと検討し、取り組んでみる技術はEthereum(イーサリアム)に決めました。
まずは自分のPCにインストールしてみます。OSはWindows10です。

調べたところ、Ethereumで推奨されているCLI “geth” を入れれば良いとの事です。
CLIとはCommand Line Interfaceの事で、gethを入れればコマンド操作でEthereumを扱えるようになります。

ネット等でgethのインストールについて調べてみましたが、「LinuxかMacなら簡単にインストールできます(Windowsだと難しいので省略します)」と書かれているものが多かったです。

という事で、今回は難しいと噂のWindowsにgethを入れて、Ethereumの内部通貨etherを手に入れる
ところまでを目標に進めていきたいと思います。

途中ハマってしまったポイントもあったので、それも併せてご紹介します。

gethのダウンロード

事前にCドライブにgethフォルダを作成しておきます。

まず、gethをダウンロードします。
https://geth.ethereum.org/downloads/
このサイトからWindows 64bit用の最新gethをダウンロードします。
現時点の最新バージョンは1.5.7です。
「Installer」か「Archive」が選べるので、好きな方を選択して、
「Installer」であればインストーラーexeを実行、「Archive」であればzipファイルですので解凍をします。
これで、geth.exeが手に入りましたので、作成したgethフォルダに入れます。

どうやらこれで準備は完了のようです。
難しいという話でしたが、拍子抜けな簡単さです。

では、正常にダウンロードされたかを確認しておきます。
コマンドプロンプトを管理者として実行して、以下のコマンドを入力します。

これで、gethのコマンドやオプションについての情報が表示されたら確認OKです。

genesis.jsonファイルの用意

まず、genesis.jsonというファイルを用意します。
このファイルは、ブロックチェーンの最初のブロックの情報を定義するものなので、初めに用意しておく必要があります。

作成したファイルはgeth.exeと同じフォルダに配置します。

ファイルの中身は以下のように記述します。

テスト用ネットワークに接続

いきなり本番ネットワークに接続するのは怖いので、テスト用のプライベートネットワークに接続することにします。

まず、コマンドプロンプトを管理者として実行して、以下のコマンドを入力して、用意したgenesisファイルの内容で初期化をします。

実行結果の中にsuccessfullyの文字があれば成功です。

続いて以下のコマンドでgethを起動します。

これでgethが起動しました。
networkidに適当な値を設定することで、プライベートネットワークに接続されます。
処理結果はgethフォルダの中のnode.logに出力するように設定します。

用意したgenesisファイルの内容を読み込んでgethが起動しているかを確認しておきます。

用意したgenesisファイルと同じ内容が表示されていればOKです。例えば、[nonce]の値や[mixhash]の値を確認して同じかどうかです。

etherを手に入れる

gethも起動出来ましたし、今回の最終目的であるetherを手に入れたいと思います。

まず、etherを持たせるアカウントを用意します。
personal.newAccount(パスワード)を入力すると作成できます。

コマンドの下に表示されているのは実行結果として返却されるアカウントのアドレスです。

いよいよマイニング(採掘)でetherを手に入れます。
miner.start(スレッド数)と入力し、trueが返ってくればマイニングが開始されます。

※ハマったポイントその1
一番最初はスレッド数を入力しないでマイニングを実行しました。
採掘の途中で[eth.hashrate]というコマンドを実行すると採掘状況の確認が出来るという事だったのですが、しばらく経つと何のコマンドも入力出来ない状態となり、CPU利用率を確認すると100%になっていました。
▶この原因はスレッド数を指定しなかったためでは?と思い、[“ethereum” “miner” “start” デフォルト]というキーワードでgoogle検索したところ、「指定しない場合は動作環境でのCPUコア数に設定されます」という記載を見つけました。スレッド数を未指定にしたためCPUをフル利用してしまったようです。
そのため、スレッド数を指定して再実行しました。

では、etherが手に入ったかを確認してみます。

結果は0でした。手に入っていません。

ログファイルnode.logを確認してみると「panic: ethash_full_new IO or memory error」というエラーが出ていました。

残ディスク容量は余裕があるし、メモリーも16GBあるので余裕なはずなんだけど・・

と、いろいろ調べたところ、

※ハマったポイントその2
Windowsのアカウント名に日本語の全角文字を登録していた事が原因だったようです。
▶[“windows” “ethereum” “panic: ethash_full_new IO or memory error”]というキーワードでgoogle検索したところ、https://github.com/ethereum/go-ethereum/issues/1092というページが見つかり、その中で「Windowsのユーザー名がラテン文字でない場合に発生する問題」という記載がありました。

この処理では以下のフォルダが使われているので、そのpathに全角文字が入っているとダメなようです。
よって、↓このようになっている(アカウント名)の部分を半角にしなくてはなりませんが

Windowsで普通にアカウント名を変更しても、上記フォルダのアカウント名は変更されない(出来ない)ので、対処のしようがありません。
こうなってしまったら、別のアカウントを作成してそちらのアカウントでWindowsにログオンする等の対応が必要です。

▶自分の場合は無理矢理フォルダ名を変更する方法を探して対応しましたが、Windows自体にいろいろと別な問題が起きるのでお勧めは出来ません。

なお、上記のような問題が発生していない場合でも、最初の数分から数十分間はetherは増えていきません。
ここで、ログファイルnode.logを確認すると、以下のようなログが残っており、DAGファイルを生成中となっています。

このデータファイルの生成が100%にならないとetherのマイニングは始まりません。

DAGの生成が100%になった後に、再度etherが手に入ったかを確認してみます。

20ETHがマイニングできました!これで目標達成です。

最後にマイニングを停止して、gethも終了させます。

まとめ

これで、WindowsにEthereumを入れてetherをマイニングするところまで完了しました。
Ethereumの初歩の部分ではありますが、一歩を踏み出すことが出来ました!
これからもEthereumの習得に取り組んでいきたいと思います。

今回の学習、記事作成にあたり以下のサイトを参考にさせて頂きました。
https://book.ethereum-jp.net/
https://github.com/ethereum/go-ethereum/wiki/Installation-instructions-for-Windows

The following two tabs change content below.
Haya
北海道に魅せられて移住してきた、現在北海道人のエンジニアです。

Pickup post

  1. ブロックチェーンを活用した医薬品のデッドストック販売プラットフォーム PoC […
  2. ブロックチェーンの基本的な仕組み
  3. ブロックチェーンの技術:公開鍵暗号

Related post

  1. Blockchain 技術情報

    技術情報

    Raspberry Pi(ラズパイ)でEthereumを動かす

    はじめまして。IoT機器でブロックチェーンが世の中に偏在する世界を妄想…

  2. Blockchain 技術情報

    技術情報

    Macにgethを入れてEthereumの内部通貨etherを手に入れる

    こんにちは。badyと申します。最近、金融やIT業界の一部では…

  3. Blockchain 技術情報

    技術情報

    JSON-RPC API で geth を便利に使う

    ブロックチェーンは、今後多くのサービス・システムに利用されることが期待…

  4. Ethereum

    技術情報

    Ethereumで複数ノードをつなげてプライベートネットワークを作ってみる

    以前本Blog内にて各OS別Ethereumのインストール及び簡単な操…

  5. Blockchain 技術情報

    技術情報

    DockerでHyperLedger Fabricの実行環境を構築する(v1.0.0-alpha向け…

    はじめまして。最近BlockChainを触り始めたnagiです。B…

  6. Blockchain 技術情報

    技術情報

    DockerでHyperLedger Fabricの実行環境を構築する(v0.6.1向け)

    はじめまして。最近BlockChainを触り始めたlumberです。…

Comment

    • masamomo
    • October 24th, 2017

    batファイルのgenesis.jsonのファイル作成がうまくいきません。。
    successがでないのですが何か原因が考えられますか?

    • 「genesis.jsonファイルの用意」から「テスト用ネットワークに接続」にかけてのところですね?
      こちらでも(Macですが)確認したところ、確かに動作しませんでした。

      どうやら、gethのバージョンがあがったどこかのタイミングで”genesis.json”に必要なパラメータが増えたようです。
      英語ですが、下記ページで同様のやりとりが行なわれていました。
      https://github.com/ethereum/go-ethereum/issues/14356

      上記のやりとりに従って”genesis.json”を下記のようにすると、私の方では動作しました。
      こちらでご確認いただけますと幸いです。

  1. 本記事に対するトラックバックはまだありません

最近の記事

  1. Blockchain 技術情報 Hyperledger Composer
  2. INDETAIL × Orb
  3. BHIP PoC 構想イメージ
  4. No Mapsブロックチェーンカンファレンス

おすすめ記事

  1. Hyperledger Composerのチュートリアルをや…
  2. Ethereum入門:5分でわかるEthereum(イーサリ…
  3. ブロックチェーンの基本的な仕組み
  1. INDETAIL × Orb

    イベント情報

    12月1日北海道初開催!エンジニア向け OrbDLTハンズオンセミナー★参加申し…
  2. Blockchain 技術情報

    技術情報

    Macにgethを入れてEthereumの内部通貨etherを手に入れる
  3. ブロックチェーン用語集

    ブロックチェーン用語集

    P2P(ピア・ツー・ピア)
  4. Ethereum

    技術情報

    Ethereum入門 – アカウントとマイニング
  5. Concept of hacking

    ブロックチェーンとは

    改ざん(二重支払い)や複製ができない理由
PAGE TOP