難易度

関連項目:ターゲット

「難易度」とは何ですか?

難易度は、以下のハッシュを見つけるのがどれほど難しいかを示す尺度です。与えられたターゲット。

ビットコインネットワークにはグローバルブロックの難しさがあります。有効なブロックには、このターゲットの下にハッシュが必要です。マイニングプールには、共有の下限を設定するプール固有の共有の難易度もあります。

ネットワークの難易度はどのくらいの頻度で変化しますか?

すべて2016ブロック。

難易度の式は何ですか?

難易度=難易度_1_target / current_target

(ターゲットは256ビット数)

Difficulty_1_targetは、難易度を測定するさまざまな方法で異なる可能性があります。従来、これは、先頭の32ビットが0で、残りが1のハッシュを表します(これは「プール難易度」または「pdiff」と呼ばれます)。ビットコインプロトコルはターゲットを表します。精度が制限されたカスタム浮動小数点タイプとして。その結果、ビットコインクライアントはこれに基づいて難易度を概算することがよくあります(これは「bdiff」と呼ばれます)。

難易度はブロックにどのように格納されますか?

各ブロックはパックされた表現を格納します(実際の16進ターゲットの場合は「ビット」と呼ばれます。ターゲットは、事前定義された式を介してそれから導出できます。たとえば、ブロック内のパックされたターゲットが0x1b0404cb(リトルエンディアンの順序で格納:cb 04 04 1b)の場合、16進数のターゲットは

0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000

このパック形式には24番目のビットに符号ビットが含まれていることに注意してください。たとえば、上記のターゲットの否定はパック形式では0x1b8404cbになります。ただし、実際にはターゲットが負になることはないため、これは下位24ビットの最大の有効値が0x7fffffであることを意味します。さらに、ターゲットは常に可能な限り低い指数で格納されるため、0x008000は下位24ビットの最小の有効な値です。

難易度はどのように計算されますか? bdiffとpdiffの違いは何ですか?

可能な限り高いターゲット(難易度1)は0x1d00ffffとして定義され、16進ターゲットは

0x00ffff * 2**(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

プールされたマイニングは切り捨てられていないターゲットを使用することが多いため、「プールの難易度1」は

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

になります。したがって、0x1b0404cbは次のようになります。

0x00000000FFFF0000000000000000000000000000000000000000000000000000 /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.420938523983 (bdiff)

そして:

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.669773817162 (pdiff)

ここにビットコインの難易度を計算します。これは、対数に修正されたテイラーシリーズを使用し(フリップコードとウィキペディアでチュートリアルを見ることができます)、ログに依存して難易度の計算を変換します。

通常の難易度から計算を確認するには上記の計算の計算(通常の整数のスペースよりも大きい大きなintが必要)、ここにいくつかのpythonがあります:

現在の難易度は何ですか?

現在の難易度、ビットコインのgetDifficultyによって出力されます。

グラフ

格言は何ですか難易度は?

最小目標はありません。最大難易度はおおよそ次のとおりです。maximum_target/ 1(0は無限大になるため)、これは途方もなく巨大な数(約2 ^ 224)です。

実際の最大難易度は、current_target = 0の場合ですが、それが起こった場合、難易度を計算することはできません。 (残念ながら、そうなることはないので、「大丈夫です。)

ネットワークの難易度を下げることはできますか?

はい、できます。ターゲットの説明を参照してください。

最小難易度はどれくらいですか?

ターゲットが最大許容値にあるときの最小難易度は1です。

特定の難易度をもたらすネットワークハッシュレートはどれですか?

難易度は、前の2016ブロックを見つけるのにかかった時間に基づいて2016ブロックごとに調整されます。10分ごとに1ブロックの望ましい速度では、2016ブロックを見つけるのにちょうど2週間かかります。前の2016ブロックの場合見つけるのに2週間以上かかった場合、難易度は下がります。2週間未満の場合、難易度は上がります。難易度の変化は、前の2016ブロックが見つけるのにかかった2週間以上または2週間未満の時間に比例します。 。

ブロックを見つけるには、ハッシュがターゲットよりも小さい必要があります。ハッシュは事実上0から2 ** 256-1までの乱数です。難易度1のオフセットは

0xffff * 2**208

難易度Dの場合

(0xffff * 2**208)/D

したがって、難易度Dのブロックを見つけるために計算する必要のあるハッシュの予想数は

D * 2**256 / (0xffff * 2**208)

または単に

D * 2**48 / 0xffff

難易度は、前の2016ブロックが10分ごとに1つの割合で検出されたため、600秒で(D * 2 ** 48 / 0xffff)ハッシュを計算していました。つまり、ネットワークのハッシュレートは、前の2016ブロックよりも

D * 2**48 / 0xffff / 600

でした。

D * 2**32 / 600

精度を大幅に損なうことなく、さらに簡略化できます。

難易度1では、1秒あたり約7マッシュです。

執筆時点では、難易度は22012です。4941572は、2016年のブロックの前のセットで、平均ネットワークハッシュレートが

22012.4941572 * 2**32 / 600 = around 157 Ghashes per second.

ブロックを生成するのにどれくらいの時間がかかるかを検出したことを意味しますか?

(永遠の質問。)

ブロックを見つけるための平均時間は、次のように計算することで概算できます。

time = difficulty * 2**32 / hashrate

ここで、難易度は現在の難易度、ハッシュレートは鉱夫が1秒あたりに計算するハッシュの数、時間は見つけたブロック間の秒単位の平均です。

たとえば、Pythonを使用して、次の平均時間を計算します。難易度が20000の場合、1Ghash / sマイニングリグを使用してブロックを生成します:

$ python -c "print 20000 * 2**32 / 10**9 / 60 / 60.0"23.85

そして、平均して24時間弱かかることがわかります。

  • ハッシュを粉砕するたびに、他のハッシュと同じように「勝つ」可能性があります。数字ゲームは、ハードウェアが1秒間に試行できる回数です。
  • 難易度(上記)とkhash / secレート(クライアントから報告)を知る必要があります。
    • マイニングハードウェアの比較には、何が得られるかを予測するのに役立つ統計がいくつかあります。
  • 計算機にアクセスするか、自分で計算を実行します。
    • http://www.alloscomp.com/bitcoin/calculator.php
    • http://www.vnbitcoin.org/bitcoincalculator.php
    • https://bitknock.com/calculator
  • それはただの確率だということを忘れないでください!N日ごとに勝つという保証はありません。

関連リンク

  • ビットコインの難易度の履歴
  • ビットコインのマイニングの難易度とは何ですか?
  • 参照:ターゲット

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です