CPUで鉱山を掘るにはどうすればいいですか?
3173 ワード
CPUマイニング
コンピューターの中央プロセッサ(CPU)でエーテルを掘ることができます.GPU鉱夫の効率が2桁高くなってから、利益はなくなりました.しかし、CPUを使用してMordenテストネットワークまたはプライベートチェーン上で鉱山を掘り起こして、リアルタイムネットワーク上の実際のイーサコインを費やすことなく、テスト契約と取引所に必要なイーサコインを作成することができます.
注意:テストネットワークイーサコインは、テストの目的以外に価値がありません(テストネットワークを表示します).
gethの使用
gethでEthernetノードを起動すると、デフォルトのマイニングではありません.CPUマイニングモードがオンになると、
--mine
コマンドラインオプションが使用されます.-minerthreads
パラメータは、マイニングスレッドに平行な数(デフォルトではプロセッサコアの合計数)を設定するために使用できます.geth --mine --minerthreads=4
実行中にコンソールでCPUマイニングをオンまたは停止することもできます.
miner.start
鉱夫スレッド数のオプションパラメータを取得します.> miner.start(8)
true
> miner.stop()
true
実際のエーテル貨幣を掘り起こすことに注意してください.ネットワークと同期しているときだけ意味があります(共通認識ブロックの上部で鉱山を掘っているからです).したがって、イーサブロックチェーンダウンロード/同期器は、同期が完了するまで掘削を遅延させ、その後、
miner.stop()
で掘削をキャンセルしない限り、掘削は自動的に開始されます.エーテル通貨を稼ぐには、etherbase(またはcoinbase)アドレスセットが必要です.このetherbaseはデフォルトであなたの最初のアカウントです.etherbaseアドレスがない場合は、
geth -mine
は開きません.コマンドラインでetherbaseを再設定できます.
geth --etherbase 1 --mine 2>> geth.log // 1 is index: second account by creation order OR
geth --etherbase '0xa4d8e9cae4d04b093aac82e6cd355b6b963fb7ff' --mine 2>> geth.log
コンソールでetherbaseを再設定することもできます.
miner.setEtherbase(eth.accounts[2])
あなたのetherbaseはローカルアカウントアドレスではなく、既存であればいいことに注意してください.
マイニングしたブロックに追加データを追加するオプションがあります(32バイトのみ).慣例に従って、統一コード文字列として解釈され、短期的な虚栄ラベルを設定することができます.
miner.setExtra("ΞTHΞSPHΞΞ")
...
debug.printBlock(131805)
BLOCK(be465b020fdbedc4063756f0912b5a89bbb4735bd1d1df84363e05ade0195cb1): Size: 531.00 B TD: 643485290485 {
NoNonce: ee48752c3a0bfe3d85339451a5f3f411c21c8170353e450985e1faab0a9ac4cc
Header:
[
...
Coinbase: a4d8e9cae4d04b093aac82e6cd355b6b963fb7ff
Number: 131805
Extra: ΞTHΞSPHΞΞ
...
}
minerを使ってもいいです.hashrateは散布率を調べ,結果をH/sで表した(毎秒散布操作).
> miner.hashrate
712000
いくつかのブロックをマイニングすることに成功したら、etherbaseアカウントのEthernet残高をチェックすることができます.etherbaseがローカルアカウントであると仮定します.
> eth.getBalance(eth.coinbase).toNumber();
'34698870000000'
あなたが稼いだgasを使って取引するために、口座をロックする必要があります.
> personal.unlockAccount(eth.coinbase)
Password
true
コンソールで次のコードクリップを使用して、どのブロックが特殊な鉱夫(住所)によって掘り起こされたかを確認できます.
function minedBlocks(lastn, addr) {
addrs = [];
if (!addr) {
addr = eth.coinbase
}
limit = eth.blockNumber - lastn
for (i = eth.blockNumber; i >= limit; i--) {
if (eth.getBlock(i).miner == addr) {
addrs.push(i)
}
}
return addrs
}
// scans the last 1000 blocks and returns the blocknumbers of blocks mined by your coinbase
// (more precisely blocks the mining reward for which is sent to your coinbase).
minedBlocks(1000, eth.coinbase);
//[352708, 352655, 352559]
ブロックが見つかりましたが、典型的なチェーンに変えることはできません.これは、現地で掘ったブロックを含むことを意味します.現在の状態は、あなたの口座に帰属する掘削奨励金を表示しますが、間もなく、より良いチェーンが見つかり、私たちはあなたのブロックを含まないチェーンに変換され、掘削奨励金は記入されません.そのため、鉱夫がcoinbase残高を監視している間に、かなりの浮動が発生していることが明らかになる可能性が高い.
参照元:http://wangxiaoming.com/blog/2016/07/15/e19/