Ethereum(イーサリウム)をMacにインストールして、ローカルのプライベートネットワークでマイニングまでやってみた。

2018年1月13日

最近話題のブロックチェーン、暗号通貨。
興味が出てきて、自分でGPUマイニングはしてみたのですが、まだいまいちブロックチェーンのことを理解していない気がする。。。

実際に触ってみないと理解できないですよね〜、ということでやってみました。

今回は、EthereumをMacにインストールして、Mac内(ローカル)のプライベートなEthereumを使えるようにして、ローカル内でマイニングをするってところまでやってみます。

まずEthereumを(イーサリウム)インストールしたいのですが、homebrewの公式リポジトリにないので、
Ethereum(イーサリウム)のリポジトリをbrewコマンドでインストールできるようにします。
ターミナルをひらいて、下記コマンドを実行。

[code]
brew tap ethereum/ethereum
[/code]

brew tapでethereum(イーサリウム)がbrewでインストールできるようになったので、実際にインストール!!
[code]
brew install ethereum
[/code]

下記のコマンドを叩いて、helpがダーッと出たら、インストール成功しています。

[code]
geth help
[/code]

※ brew tapについては以下参照
http://tukaikta.blog135.fc2.com/blog-entry-204.html

次に、任意の場所に、フォルダを作ります。
[code]
mkdir eth_test
[/code]

自分の場合は、
[code]
/Users/hiroki/eth_test
[/code]
にしました。

次に設定のファイルを作ります。
[code]
vim /Users/hiroki/git/eth_test/genesis.json
[/code]

[code]
{
"config" : {},
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty" : "0x200",
"coinbase" : "0x0000000000000000000000000000000000000000",
"timestamp" : "0x0",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit" : "0x8000000",
"alloc" : {}
}
[/code]
※数値は任意で。。

ブロックチェーン情報をgenesisファイルの内容で初期化
[code]
geth –datadir /Users/hiroki/eth_test init /Users/hiroki/eth_test/genesis.json
[/code]

プライベートネットワークに接続
[code]
geth –networkid "10" –nodiscover –datadir "/Users/hiroki/eth_test" console 2>> /Users/hiroki/eth_test/geth_err.log
[/code]

すると、以下の画像みたいに、Welcomeと出たら成功です!わーい!
[code]
Welcome to the Geth JavaScript console!

instance: Geth/v1.7.0-stable-6c6c7b2a/darwin-amd64/go1.9
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
[/code]

これはGethというもので、コマンドでEthereumをいろいろ操作できます。
今回は、プライベートなEthereumをGethでいじっていきます。

まずは、アカウントの作成をします。()内は、パスフレーズです。
[code]
personal.newAccount("passwd0”)
[/code]

アカウント確認は以下でできます。
[code]
eth.accounts
[/code]

下記でマイナーのアカウントを確認できます。
[code]
eth.coinbase
[/code]

これで、マイナーアカウントの変更
[code]
miner.setEtherbase(eth.accounts[1])
[/code]

マイニング開始
[code]
miner.start(1)
[/code]

miner.startをしてもnullとでるけど、問題ないらしいです。

[code]
eth.hashrate
[/code]
でハッシュレイト確認すると、数字がどんどん上がっているのがわかると思います。

そして、どのくらい掘れているのかは、以下のコマンドで確認
[code]
eth.getBalance(eth.accounts[0])
[/code]

ちょっと0が多いので、以下のコマンドでEthereumの単位で表示
[code]
web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")
[/code]

0以上の数字が帰ってきたら、マイニング成功です。その数自分のイーサが掘れてます。

放置しておくとPCがどんどん計算を続けて熱くなってくるので、
[code]
miner.stop(0) 
[/code]
で止めましょう

miner.stop()してもハッシュレートは0にならない時があります。
おかしいなとおもったけど、0になるまでには少し時間がかかるみたいです。

これで、EthereumをMacに落として、gethを起動、アカウントを作って、マイニングをしてみる。 まででした。

次は、EthereumのWalletでもつくってみようかな。

参考
http://www.ethdocs.org/en/latest/
https://book.ethereum-jp.net/