Windows 10にインストールしたGethを使ってマイニングを実行してみます。
こういうプライベートネットワーク
ブロックチェーンのルールでは
あるノードがマイニングを実行することで、取引を収集してブロックが生成されます。
このマイニングに対して報酬(インセンティブ)が与えられます。
この報酬が仮想通貨であり、ブロックチェーンのネットワークが動き続けるモチベーションとなります。
とはいえ、例えばラズパイのみで構成されたプライベートチェーンの場合、取引を行いたくても現ラズパイでは非力すぎてマイニングを実行できません。
そこで今回のプライベートチェーンでは取引のトランザクションを発行したあるノードのラズパイがマイニングのみ行うために参加しているWindows 10 PCにマイニングの実行をお願いすることにしました(^^)。
つまり、このプライベートネットでのモチベーションは「マイニングで報酬を得る」ことではなく「報酬を与えてマイニングしてもらう」ことです。
まずはWindowsで手動でマイニングを実行してみます。
Windows 10にGethをインストールしてアカウントを作成後、コマンドプロンプトを開いてGethを起動しておきます。
1 |
>geth --networkid "10" --nodiscover --datadir "C:\Geth\My_eth_chain" --rpc --rpcaddr "localhost" --rpcport "8545" --rpccorsdomain "*" --rpcapi "eth,net,web3,personal,miner" --verbosity 6 --targetgaslimit "20000000" console 2>> C:\Geth\My_eth_chain\node.log |
アカウントを作成します。
>personal.newAccount(“パスワード“)
アドレスが表示されます。こんな感じのものです。
0x6128e3be4b06e4102dc55284e70a89ecc02dd9ba
作成しておいたアカウントは以下で確認できます。
>eth.accounts
例えばこんな感じ。
[“0x6128e3be4b06e4102dc55284e70a89ecc02dd9ba”]
最初に作成されたアカウントがcoinbaseでここに報酬が与えられます(アカウントが複数ある場合はcoinbaseをどれにするか変更できます)。
上記のインストール方法の場合、アカウントの実体はここにあります。
C:\Geth\My_eth_chain\keystore\UTC–xxxxxxx
アカウントは基本的にロックされています。アカウントに関連する変更操作や送金などを行いたい場合これを解除します。
>personal.unlockAccount(”アドレス”, ”パスワード”)
or
>personal.unlockAccount(eth.accounts[0])
再度ロックする場合
>personal.lockAccount(eth.accounts[0])
マイニングを実行
>miner.start(2)
null
カッコの中の数字はスレッド数で、空白だとCPUを占有してしまいます。状況によって調整します。スレッド数はCPUのコア数内で使用。コア数は以下のDOSコマンドで調べられます。
set NUMBER_OF_PROCESSORS
進行状況は以下でチェック
>eth.hashrate
マイニングされている場合は0より大きい整数。
>eth.mining
これがtrueなら実行中。
>eth.blockNumber
これが増えていればOK。
で、1ブロック以上マイニングされれば、トランザクションが実行され取引はブロックチェーンに書き込まれます。
他のノードと接続されていればマイニングの状況が表示されます。
マイニングの停止(カッコ内は空白です)。
>miner.stop()
マイニングが実行されない場合.。
miner.start()を行っても実際にマイニングが始まるまでは少々のタイムラグがあります。
DAGの作成や再作成にかかる時間のようですが、このDAG生成プロセスがログに表示されないこともあります。
感覚的には10~15分ほど待つ感じです。
でもいつまでたっても始まらないことがあります。
eth.miningはtrueなのに
eth.hashrateは0のままで、eth.getBalanceも増えない。
で、対策
Gethをいったん停止。
DAGファイルを削除して再起動します。
これでOKな理由は….まだ分かりません。
DAGファイルはここにあります。
Appendix1
Windows側でGethコンソールの外からGethのコマンドを実行
CURLでJSON-RPC API
バッチファイルでマイニングを実行
【start_mining.bat】
1 2 |
@echo off START curl -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"miner_start\",\"params\":[1],\"id\":10}" http://localhost:8545 |
バッチファイルでマイニングを停止
【stop_mining.bat】
1 2 |
@echo off START curl -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"miner_stop\",\"params\":[],\"id\":10}" http://localhost:8545 |
Appendix2
記録データ(今回のインストール方法)の所在
DAG
Windows -> C:\Users\<ユーザー>\AppData\Ethash\full-R23-xxxxxxxxxx
ラズパイ -> /home/pi/My_eth_chain/geth/ethash/cache-R23-xxxxxxxxxx
ブロックチェーン
Windows -> C:\Geth\My_eth_chain\geth\chaindata
ラズパイ -> /home/pi/My_eth_chain/geth/chaindata
Leave a Reply