ノートパソコンでetherをマイニングしてみた【結果:0】

【PoSの移行前に】ノートパソコンでetherを採掘してみた【結果:惨敗】
博士
博士

イーサアリアムは、現在の「プルーフ・オブ・ワーク(PoW)」から「プルーフ・オブ・ステーク(PoS)」への移行でマイニングは無くなっていくようじゃ。

イーサリアムの開発者Tim Beiko氏もマイニング設備にこれ以上投資しないように勧めているのじゃ。




ゆるり
ゆるり

じゃあその前にということで、ノートパソコン1つでetherをマイニングしてみました。

博士
博士

結果は 0 ETH だったのじゃ。

イーサリアムはグラフィックカード(GPU)を使うマイニングに適しているから、ノートパソコン1つでソロマイニングはちょっと難しかったようじゃ。

ゆるり
ゆるり

でもマイニング体験はできたので良しとします。

博士
博士

今回のマイニングでは「Ubuntu」「Geth」「Visual Studio Code」を使用するので、これらが無ければ過去記事を参考にするのじゃ



環境
  • OS:Windows 10/バージョン 21H2 (OS ビルド 19044.1706)
  • プロセッサ:Intel(R) Core(TM) i7-7500U
  • メモリ:DDR4 8GB
  • マザーボード:L-NSS172-L(みんなもっとカッコイイ名前の使ってますよね…)
参考サイト

Gethの確認

博士
博士

「Ubuntu」を立ち上げ、「Geth」がインストールされているか確認するのじゃ。




コマンドを実行↓

geth --help
Gethの確認
Gethコマンドのオプション情報がずらーーーーっと出てきたのでOK



Genesisファイルを作成する

博士
博士

過去記事「Solidityで独自トークンを発行し、Faucetアプリを作る方法②」とは違う方法で作成するのじゃ。

ゆるり
ゆるり

以前作ったGenesisファイルはChain IDが「4」のRinkebyネットワークを使いました。
今回は「15」のChain IDを使っていますが、いくつかの番号以外であれば、自分で指定できます。



博士
博士

テストネット用のディレクトリを作るのじゃ。

今回は「My_eth_chain」としたのじゃ。

●コマンドを実行↓

mkdir /home/ユーザー名/My_eth_chain
Genesisファイルを作成する
ディレクトリ名は何でもいい




博士
博士

「VS Code」をWSL2(Windows Subsystem for Linux 2)に接続するのじゃ。

①リモートエクスプローラーを選択
②「Ubuntu」を右クリックすると接続メニューが表示されるので、「Connect to WSL」を選択↓

Genesisファイルを作成する
博士
博士

新規でVisual Studio Codeが起動するのじゃ。
左下に「WSL: Ubuntu」と表示されていれば接続完了なのじゃ。

Gethをプライベート(テスト)ネットワークに接続する




①「Open Folder」をクリック
②作成したディレクトリ「My_eth_chain」を選択

③「OK」↓

Genesisファイルを作成する




●「myGenesis.json」ファイルを作り、下記コードを貼り付け↓

{
  "config": {
    "chainId": 15,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "berlinBlock": 0
  },
  "nonce": "0x0000000000000042",
  "timestamp": "0x0",
 "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "",
  "gasLimit": "0x8000000",
  "difficulty": "0x4000",
 "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {}
}
Genesisファイルを作成する
「Ctrl + S」でセーブ




genesisブロックの初期化

●コマンドを実行↓

geth --datadir /home/ユーザー名/My_eth_chain init /home/ユーザー名/My_eth_chain/myGenesis.json
genesisブロックの初期化




Gethの起動

●コマンドを実行↓

geth --networkid "15" --nodiscover --datadir "/home/ユーザー名/My_eth_chain" console 2>> /home/ユーザー名/My_eth_chain/geth_err.log
Gethの起動



博士
博士

今作ったmyGenesis.jsonファイルの内容のGenesisブロックか確認するのじゃ。

●コマンドを実行↓

eth.getBlock(0)
Gethの起動
博士
博士

内容を簡単に確認してみるのじゃ。

myGenesis.json
“nonce”“0x0000000000000042”
“gasLimit”“0x8000000″(16進表記)
“difficulty”“0x4000″(16進表記)
Genesisブロック
“nonce”“0x0000000000000042”
“gasLimit”134217728(10進表記)
“difficulty”16384(10進表記)
ゆるり
ゆるり

16進表記から10進表記を確認するのは面倒だけど、ちゃんと作ったmyGenesis.jsonファイルの内容になってるね。
16進表記から10進表記なんて初めて調べてみたよ
ε=( ̄。 ̄;A フゥ…

博士
博士

目次の「Genesisファイルを作成する」から「Gethの起動」の工程によって、プライベートネット(テストネット)に接続することができたのじゃ。




アカウントの作成

博士
博士

アカウントの作成を行うのじゃ。
このアカウントによってマイニングを行うのじゃ。

その前に、まだアカウントを作ってない状態でアカウントを表示させるコマンドを実行してみるのじゃ。




●アカウント表示↓

eth.accounts
博士
博士

すると下図のように[]が表示されるのじゃ。

[]の中が何も表示されないのは、まだアカウントが無いということなのじゃ。

マイニング用アカウントの作成
博士
博士

何もないことが分かったところで、アカウントを作成するのじゃ。




●アカウント作成↓

personal.newAccount("hogehoge01")
ゆるり
ゆるり

上記コマンドの hogehoge01 はアカウントを作成するためのパスワードなので、この部分は自分で決めたパスワードに書き換えて実行してください。

注意点
  • パスワードを忘れると復元する手段はないので、パスワードは忘れないように自分で保管しておく。
  • 半角英数記号を含む長い複雑なパスワードを設定して、セキュリティを強化しておく。
マイニング用アカウントの作成
ゆるり
ゆるり

ほー、メタマスクなんかでお馴染みのアドレスができた。

博士
博士

アカウントを作ったところで、さっき空のリスト[]が表示された eth.accounts コマンドを実行してみるのじゃ。

マイニング用アカウントの作成
ゆるり
ゆるり

うん、ちゃんと作成したアドレスが表示された。



博士
博士

送金テスト用に、もう1つアドレスを作成しておくのじゃ。

アカウント作成

personal.newAccount("hogehoge02")
ゆるり
ゆるり

hogehoge02にも新たにパスワードを設定して、忘れないようにしてください。

マイニング用アカウントの作成
マイニング用アカウントの作成
アカウント表示コマンドを実行すると、2つ表示される



博士
博士

マイニングが成功時したときに報酬を受け取るアカウントを表示してみるのじゃ。

●マイニング成功時に報酬を受け取るアカウント確認↓

eth.coinbase
マイニング用アカウントの作成
博士
博士

マイニングが成功時したときに報酬を受け取るアカウントを表示してみるのじゃ。

作成した2つのアカウントが表示されていて、この緑色の方が報酬を紐づけるアカウントなのじゃ。

ゆるり
ゆるり

2回目の表示からは緑色の方だけ表示されるみたいです。

博士
博士

このアカウントの事をetherbase(coinbase)と言うのじゃ。

etherbaseはデフォルトで eth.accounts[0] コマンドを実行して表示されるアドレスに設定されているのじゃ。

マイニング用アカウントの作成



ゆるり
ゆるり

違うアカウントに設定したい場合は…

●etherbase(coinbase)の変更↓

miner.setEtherbase(eth.accounts[1])
マイニング用アカウントの作成
変更後確認してみると、もう1つのアカウントがetherbase(coinbase)になってる。



etherをマイニング

博士
博士

いよいよetherのマイニングなのじゃ。

ゆるり
ゆるり

(((o(*゚∀゚*)o)))ワクワク




●スタートコマンド↓

miner.start()

●ストップコマンド↓

miner.stop()
etherのマイニング
ゆるり
ゆるり

ゆるりは miner.stop() をしても止まらないときがありました。

そんな時は「Ctrl + D」でコンソールから抜けると止まります。




●現在マイニング中かどうかの確認↓

eth.mining
博士
博士

マイニング中であればコマンドの実行結果が true になり、そうでなければ false が返ってくるのじゃ。

etherのマイニング




●マイニング状況の確認↓

eth.blockNumber
etherのマイニング
ほっといたら1361個もブロックが出来ていた( ゚Д゚)‼




●保有額確認(wei単位)↓

eth.getBalance(eth.accounts[0])

※etherbase(coinbase)を[0]以外で設定しているのであれば、[0]を自分の設定したアカウントの番号にに書き換えて実行。

etherのマイニング
ゆるり
ゆるり

「3.832e+21」?

博士
博士

このコマンド結果ではwei単位で表示されるのじゃ。

ゆるり
ゆるり

1wei = 0.000000000000000001ether だったね。

博士
博士

下記コマンドだとether単位でわかりやすくなるのじゃ。

●保有額確認(ether単位)↓

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

※etherbase(coinbase)を[0]以外で設定しているのであれば、[0]を自分の設定したアカウントの番号にに書き換えて実行。

etherのマイニング
博士
博士

報酬額は 3832eth なのじゃ。

ゆるり
ゆるり

∑(゚Д゚)ファッ!!?

3832eth !!!!!!!?

博士
博士

落ち着くのじゃ、これはプライベートネット(テストネット)なのじゃ。

だから 3832eth は例えると子供銀行券のようなもので、なんの価値もないのじゃ。

ゆるり
ゆるり

そうだったね、

いきなりメインネットに接続すると、スマートコントラクトがちゃんと動かなかった時でもガス代(トランザクション手数料)がかかっちゃうから、まずはこのプライベートネット(テストネット)で動作確認するんだったね…(´・ω・`)



etherの送金

etherの送金
博士
博士

上の図を見ると、etherbase(coinbase)であるaccounts[0]に 3832eth が保有されていて、accounts[1]は 0 なのじゃ。

このaccounts[0]からaccounts[1]へ、気前よく 555eth を送金してみるのじゃ。

前提条件
  • 送金元のアカウントのロックを解除すること
  • マイニング処理 miner.start() を実行していること




●送金元アカウントのロック解除↓

personal.unlockAccount(eth.accounts[0])
etherの送金
コマンドを実行するとaccounts[0]のアドレスが表示され、Passphraseを求められる。
博士
博士

Passphraseはアカウントを作成したときのパスワードを入力するのじゃ。

ゆるり
ゆるり

ちなみにパスワードは入力しても入力しているのかわからないし表示もされないので、間違えないようにキーボードをポチポチしましょう。

博士
博士

「true」と表示されれば、ロック解除成功なのじゃ。

ゆるり
ゆるり

デフォルトの設定で5分経過するとまたロックがかかりますが、気になる方はロックをかけなおしてください。

●アカウントのロック↓

personal.lockAccount(eth.accounts[0])




●ether送金↓

eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(555, "ether")})
博士
博士

from に送金元アドレス、 to に送金先アドレス、 value に送りたいether単位の額を指定するのじゃ

博士
博士

from に送金元アドレス、 to に送金先アドレス、 value に送りたいether単位の額を指定するのじゃ

コメント

タイトルとURLをコピーしました