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/