スポンサーリンク

WindowsでEthereumスマートコントラクト入門「gethのインストールからHelloWorldまで」を写経してみる(1)

以下の本を読んでいるが、amazonのレビューによると、イーサリアムの仕様?が変わっていて、2018年1月現在、Chapter3以降は、なんと動かないらしい。
(分かっていて購入しましたが、まだ実行していないのでなんとも、、、)

とりあえず、以下のサイトを写経してみる。

https://blockchain-jp.com/tech/240

(開発環境)
Windows 8.1 Pro 64bit
geth 1.7.3
Visual Studio Code

スポンサーリンク

(1)gethのZIPファイルのダウンロード

いきなり写経できないのだが、以下のサイトからダウンロード。

https://geth.ethereum.org/downloads/

なんかこのページ。開いてから30秒ほど待たされる。ブロックチェーンと何か関係があるのかな?

上記サイトで、をクリックしてインストーラーをダウンロード。

しかし、1回目のダウンロードは、「ネットワークエラー」で失敗。

こんなことあったかな、今まで。。。

なんか、ダウンロードに数分時間がかかっているので、そちらの方はやめて、下の方へ行ってWindows 64bit用のArchive(約10MBのZIPファイル)をクリックしてダウンロード。

1分以内にダウンロードが終了し、ZIPファイルを展開すると以下の容認なっている。

C:/geth/ フォルダを作成し、その中に、上記ZIPファイルの中のgeth.exeをコピーする。

(2)VisualStudioCodeで開いて、geth.exeの動作確認。

C:/geth/ フォルダを、VisualStudioCodeで開く

Ctrl + @ でVisualStudioCode内にコマンドプロンプトが出てくるので、そこで、

geth help

(3)genesis.jsonを作成

C;/geth/ フォルダに、genesis.json を作成して、こちらのサイトのコードをコピペ。

一度、VisualStudioCodeを閉じます。

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

テスト用のプライベートネットワークに接続する。

VisualStudioCodeを右クリックして、「管理者として実行」をクリック。

「ターミナル」のところに、

geth --datadir ./test1 init ./genesis.json

とりあえず、Successfully wrote genesis state と書いてあるので大丈夫そう。

geth --networkid 9991457239471 --datadir ./test1 --maxpeers 0 --nodiscover console 2>> node.log

よくわからないけれど、こちらのサイトにあるように、以下のコマンドを入力。

eth.getBlock(0)

genesis.json と同じ内容が表示されればOKらしい。全く同じではないが、genesis.jsonの一部が表示されているので、OKかな。

(5)etherを手に入れる(プライベートネットワーク内で)

あくまで、自分のプライベートネットワーク内で通用するetherをマイニングします。

実際に世界で使用できるetherをマイニングするためには、メモリ4GB以上のGPUが必要だそうです。え!?メモリ4GB以上のGPUって、ひと昔私に自作パソコンしていた私にはありえないです。ちなみに、メモリ6GBのGTX 1060 は、GPUだけで4万円くらいのようです。

とりあえず、以下のコマンドを入力。(今回はプライベートネットワーク内なので、パパスワードは見えるようにしていますが、本番では、この"testPass”というのが、他の人に絶対に知られてはいけない「秘密鍵」になるらしいです。自分がパスワードを忘れても、そのウォレットに入っていたお金は二度と戻らないらしいです。)

personal.newAccount("testPass")

以下のコマンドを入力して、etherのマイニングを開始。(あくまで、プライベートネットワーク内ですが、、、)

miner.start(1)

がっくし、ここでエラー。

と思ったら、nullと出ても、このサイトによると、

miner.getHashrate()

と入力した後に出てくる値は0以上であれば、エラーではないらしい。実際、タスクマネージャーを見てみると、CPU 100 %となっており、私の貧弱なノートパソコンは、なんだかマイニングしまくっているらしい。

しばらくして、20分くらいたったころ、タスクマネージャーを見ると、以下のようになっており、

miner.getHashrate()

すると、以下のうように、"35487″と表示された。

(6)マイニングを停止

 miner.stop()

(7)残高を確認

eth.getBalance(eth.accounts[0])

geth ではなく、eth でした。とりあえず、1.9×10^21 wei (1 wei = 0.000000000000000001 ether) はマイニングできたようです。(自分のプライベートネットワーク内でしか使用できませんが。)

 

もう一つ、以下の方法でも、手に入れたETHを確認できるそうです。

web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")

こっちの方が、1935ETH手に入ったということで、分かりやすいかもしれません。

 

とりあえず、プライベートネットワーク内で、ETHをマイニングすることができました。

次回こそ、Hello Worldしたいと思います。

(参考)

https://blockchain-jp.com/tech/240

https://qiita.com/amachino/items/b59ec8e46863ce2ebd4a

https://tatujin-dejimono.com/virtual_currency/eth_2017_02/

 

https://qiita.com/zaburo/items/9c8fab5da3b7d782ee89

https://qiita.com/oggata/items/eea4d5e37f38785f6079

仮想通貨

Posted by twosquirrel