ビットコインのマイニング難易度調整アルゴリズムを理解する

ビットコインのマイニング難易度調整アルゴリズムを理解する

「ビットコインの設計において、PoWコンセンサスアルゴリズムは非常にエキサイティングな部分です。マイナーは、ネットワーク全体の現在のマイニング難易度に応じて、一定の計算能力を費やして合法的なブロックヘッダーを構築する必要があります。これにより、ネットワーク全体がブロックを受け入れて台帳に追加し、ブロック報酬を得ることができます。マイニング難易度は可変パラメータです。平均ブロック速度を1ブロックあたり10分に制御するために、2016ブロックごとに、ネットワーク全体のノードが再計算し、統一されたアルゴリズムに従ってネットワーク全体と一致する新しい難易度値を設定します。難易度調整アルゴリズムを理解する前に、まずブロックと台帳の生成プロセス、およびブロックヘッダーのデータ構造に精通している必要があります。この知識にすでに精通している読者は、3番目の部分に直接進むことができます。」

ブロックと元帳の生成プロセス

1) トランザクションのブロードキャスト: ユーザーはトランザクションに署名し、1 つ以上のネットワーク ノードに送信します。トランザクションが正しい場合、ノードによる検証後、ノードはそれを他のノードにブロードキャストし続け、最終的にはほとんどのマイニングノードに送信されます。

2) ブロック生成: トランザクションを受信した後、マイナーノードはトランザクションをブロックにパッケージ化し、トランザクションに対応するマークルツリーのルートハッシュ値を計算します。ブロック ヘッダーは、ブロック ヘッダーのハッシュ値がマイニング難易度の要件を満たすまで、マイニング操作を通じて構築されます。

3) ブロックのブロードキャスト: マイナーノードがブロックのマイニングに成功すると、そのブロックはすぐにネットワーク全体にブロードキャストされます。トランザクションのブロードキャストと同様に、ネットワーク全体の他のノードがブロックの正当性を検証します。

4) 元帳の承認: 同じ期間に正当なブロックが 1 つだけ生成され、それに競合する正当なブロックが他にない場合、そのブロックは元帳に含められます。競合するブロックがある場合、どのブロックパスブランチを継承して拡張するかは、ネットワーク全体の計算能力の大多数の意志に依存します。累積的な難易度が最も高く、最も長いチェーンが最終的に勝利します。元帳に含まれない正当なブロックは孤立ブロックとなり、削除されます。

「コンピューティングパワーの大多数の意志によって選択された道」:ブロックチェーンマイナーは、集団的に行進する軍隊として見ることができます。戦い、前進する過程で、遅れをとったり、道に迷ったりする人がよくいます。では、脇道と幹線道路をどのように区別するのでしょうか?もちろん、大きな軍事力を持つ主流勢力が選ぶルートが主流です。

(図1、累積難易度が最も高く、持続時間が最も長いチェーンがメインチェーンです。Bitcoin Developer Referenceより)

ブロックとヘッダーのデータ構造

ブロック ヘッダー データは 80 バイトのストレージ スペースのみを占有します。トランザクション Merkle Tree Root の導入により、ブロック ヘッダーはブロック全体を表すことができ、独立して送信および処理できるようになります。図の簡単な説明では、 2および図3、すべてのフィールドが完全に表示されるわけではありません。実際のブロック ヘッダー データ構造には 6 つのフィールドが含まれます。

バージョン: 4 バイト、Bitcoin プロトコルのバージョン。マイナーは 4 バイトの空きビットを設定して計算能力に投票できます。

前のブロックハッシュ: 32 バイト、前のブロック ヘッダー データのハッシュ値 (ダブル SHA256)。これにより各ブロックが順番にリンクされ、ブロックチェーンの帳簿が形成されます。

トランザクション マークル ルート: 32 バイト、このブロック内のトランザクションのマークル ツリー ルート ハッシュ値 (double SHA256)。

ブロック生成時間 (時間) : 4 バイト、UNIX エポック時間を使用し、前の 11 ブロックの中央値よりも大きい必要がありますが、現在の時間から 2 時間を超えることはできません。

マイニング難易度しきい値 (nBits またはビット) : 4 バイト、マイニング難易度のターゲットしきい値の簡略化されたエンコード。現在のブロックのハッシュ値 (double SHA256) はこのしきい値以下である必要があります。

乱数(Nonce) :4バイト。この値を複数回調整することで、現在のブロック ヘッダー データに対して二重の SHA256 ハッシュ操作が実行され、マイニング難易度しきい値の要件が満たされます。

(図 2、ブロックの構造、「ビットコイン: ピアツーピアの電子キャッシュシステム」より)

(図 3、チェーン構造の元帳、Bitcoin: ピアツーピアの電子キャッシュシステムより)

ブロック速度と採掘難易度の調整

ブロック ヘッダーのハッシュ値は 32 バイト (265 ビット) を占めます。 MAX=2**256 が定義されている場合、ブロック ヘッダー ハッシュの値の範囲は 0 から MAX-1 になります。ブロック ヘッダーに対する二重 SHA256 ハッシュ演算の結果は、0 から MAX の範囲になければなりません。この間隔内で閾値 TT (Target_Threshold) が取られ、ブロック ヘッダー ハッシュ値が 0 から TT の範囲にある場合にのみ有効であると規定されています。したがって、マイニング操作は、ブロック ヘッダー内の 3 つのフィールド (Nonce、Time、Merkle Root) を継続的に調整し、0 から TT の範囲 (TT から MAX の範囲では無効) のハッシュ値を計算して、有効なブロック ヘッダーを取得することです。

ハッシュ関数の設計特性により、その出力結果は基本的に値の範囲内で均等に分散されます。 TT が大きいほど、ハッシュ演算結果が 0 から TT の範囲に収まる可能性が高くなり、マイニングの難易度は低くなります。逆に、TT が小さいほど、マイニングの難易度は高くなります。アーチェリーのようなものです。ターゲットが大きいと、ヒットしやすくなります。ターゲットが小さいと、ヒットするのが難しくなります。 TT の値を調整すると、マイニングの難易度も調整されます。 TT は 256 ビットを占めるため、ブロック ヘッダーの合計サイズを短縮するために、TT は簡略化され、ブロック ヘッダーのビット フィールドを取得するようにエンコードされます。

ビットコイン ネットワークでは、マイニング ノードがいつでも参加したり離脱したりする可能性があるため、ネットワーク全体のハッシュ パワーは頻繁に変化します。マイニングの難易度が変わらないと仮定すると、ネットワーク全体の計算能力が向上すれば、ブロック生成速度はより速くなり、1つのブロックを生成するのに平均10分もかからないでしょう。逆に、ネットワーク全体の計算能力が低下すると、ブロック生成速度が遅くなり、1つのブロックを生成するのに平均10分以上かかるようになります。平均して 10 分ごとに 1 ブロックを維持したい場合は、ネットワーク全体の計算能力の変化に応じて、マイニングの難易度 (つまり、Bits フィールドの値) を動的に調整する必要があります。

ブロックが生成されるたびに難易度を調整するのではなく、「2016ブロックごとに難易度を調整する」というアルゴリズムが採用されているのは、サトシ・ナカモトがビットコインを設計した際に、マイニングマシン、マイニングファーム、マイニングプールの出現を予見できず、同じハッシュアルゴリズムを使用するBTC、BCH、その他のシステム間で大量の計算能力が任意に切り替えられ、ネットワーク全体の計算能力に大きな変動が生じることを予見できなかったためと考えられます。結局のところ、ビットコインは画期的な発明であり、完璧を達成するのは困難です。ブロックチェーン技術に対する人々の探求と改善は、必然的に反復的に発展し続けるでしょう。

現在生成中のブロックの高さが 2016 の整数倍(ブロックの高さは 0 からカウントされます)であると仮定すると、この時点で TT の値を調整する必要があります。過去 2016 個のブロックの予想生成時間が S (2016*10*60 秒) として記録され、実際の生成時間が R として記録される場合、S/R はブロック生成の実際の速度と予想速度の間の複数の関係を反映します。 TT の値を TT*S/R に調整する、つまり、S/R の値に応じてハッシュ値の対象範囲を拡大または縮小すると、平均ブロック出力速度は予想される 10 分/ブロックに近くなります。

別の観点から見ると、まず式 DIFF=MAX/TT を定義します。これは、0-MAX の間隔を DIFF サブ間隔に分割することと同等であり、0-TT が最初の間隔です。確率的な観点から見ると、DIFF ハッシュ操作を試行した後、0 ~ TT の間隔に一度到達し、この DIFF を難易度の値と見なすことができます。 TT と MAX が等しい場合、DIFF 値は 1 になり、1 回のハッシュ操作を実行することでヒットを達成できることを意味します。しかし、難易度の値を計算する一般的な方法は、このようなものではありません。ビットコインが最初に発売されたとき、サトシ・ナカモトが当時のマイニング計算能力の状況に基づいて初期 TT 値を設定した可能性があり、BMAX として記録されています。

0x00000000FFFF0 ...その後、一部のマイニング プールでは、PMAX: 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF が設定され、難易度の値は PDIFF=PMAX/TT という式に従って計算されました。 BDIFF、PDIFF、DIFF はいずれも難易度を表すのに使われますが、対応するベンチマークの最大値 (BMAX、PMAX、MAX) は異なります。 BDIFF の方が一般的に使用されており、その直感的な意味は、初期の最小難易度値 1 と比較して、現在の難易度が BDIFF 倍に増加したということです。

たとえば、ブロック ブラウザー https://www.blockchain.com/zh/btc/block-height/481824 を使用すると、ブロック #481,824 (2016*239) のヘッダー ハッシュ値が 00000000000000000001c8018d9cb3b742ef25114f27563e3fc4a1902167f9893 であり、そのヘッダー内の各フィールドの内容が次のようになっていることがわかります。

バージョン:

0x20000002 (16進数で、マイナーはビットの1つでSegwitに賛成票を投じた)

前のブロックハッシュ:

0x00000000000000000000cbeff0b533f8e1189cf09dfbebf57a8ebe349362811b80 (16進数で表示)

マークルルート:

0x6438250cad442b982801ae6994edb8a9ec63c0a0ba117779fbe7ef7f07cad140 (16進数で表示)

時刻: 2017年8月24日 01:57:37 (日付と時刻で表示)

ビット: 0x18013ce9 (16進数で表示)

ノンス: 575,995,682 (10 進数)

前のブロック Block#481,823 を照会すると、ビットは 0x180130e0 として取得できますが、Block#481,824 はマイニングの難易度を調整し、新しい値 0x18013ce9 を採用しました。最高位のビット18 (10 進数の 24) は TT 数のビット長を表し、 013ce9は TT の最高位 3 ビットの数を表します。したがって、TT の値は 0x 013ce9 0000000000000000000000000000000000000000000 となり、前のビット 0 を 256 ビット (32 ビット) に拡張すると、0x000000000000000000 013ce9となります。 00000000000000000000000000000000000000000000000000、0x000000000FFFF0 ...初期の最小難易度(1)の888,171,856,257.32倍となり、ネットワーク全体の計算能力が飛躍的に向上した。

<<:  イーサリアムコミュニティの「反ASIC」論争が激化、ProgPoW開発者は詐欺師として批判される

>>:  GFISグローバル金融技術イノベーションサミットが海南省で開幕 - BARチェーンコミュニティが参加し、ブロックチェーンアプリケーションの展望を説明

推薦する

韓国の規制期限が近づいていますが、暗号通貨市場での駆け込み需要は起こるのでしょうか?

韓国の暗号通貨取引所は約26億ドルの損失に直面しており、国内の取引所の3分の2が消滅することになる。...

彼はイーサリアム2.0の最初のブロックに奇妙なメッセージを残した

イーサリアム 2.0 ビーコン チェーンが昨夜リリースされ、時価総額で世界第 2 位のブロックチェー...

ビットコインマイナーは2019年は難しすぎると語る

執筆者: シャオ・マオゲこの記事をレビューし、提案を提供してくれた Biyin Mining Poo...

テスラに続き、ビットコインマイナーのブロックキャップもオースティンにオフィスを開設

4月12日、海外メディアの報道によると、北米を拠点とする仮想通貨マイニング企業ブロックキャップは先週...

7.7T!史上最大のビットコインマイニングマシン - Antminer S5+

2015 年 8 月 10 日、世界有数のビットコイン チップおよびマイニング マシン ソリューシ...

サンフランシスコの「サトシ・ラウンドテーブル」会議、合意に至らず

今週末、カリフォルニア州サンフランシスコで別の「Satoshi Roundtable」ミーティングが...

中国のマイナーがビットコインネットワークに51%攻撃を仕掛けない理由

世界のビットコインの計算能力の半分以上は中国から来ており、この計算能力の集中について多くの人が懸念を...

コインゾーントレンド: 今週のビッグデータに基づくビットコインの価格動向 (2017-09-06)

通貨価格は再び深いV字を示しています。市場の動向に注意する1. 市場動向<br/>今日は...

ケベック州はビットコイン鉱山に囲まれており、次の世界的な採掘センターになる可能性がある

ハイドロ・ケベックの事業開発マネージャー、デビッド・ヴィンセント氏は、フェイスブック、アマゾン、マイ...

Uproov: ブロックチェーンのタイムスタンプが専門化へ、公証役場の衰退の始まり

近日公開予定のスマートフォンアプリ「Uproov」は、ブロックチェーンのタイムスタンプの可能性を探り...

Filecoin の流動性ソリューション - DeFil

Filecoin の独自の住宅ローンの仕組みには、対処しなければならない 2 つの問題があります。...

中央銀行デジタル研究所:ブロックチェーンのために画像プロジェクトに取り組むことはできない

原題:「中央銀行デジタル研究所は、ブロックチェーンの「善悪」を明らかにする記事を執筆しました。偽りを...

Bitmain シリーズ 14 に何が起こったか (Zhan Ketuan がマイニング ファームを空にし、Wu Jihan が「新しい工場」を建設)

Bitmainに何が起こったのですか?チャン・ケトゥアンが裁判所の書類を破棄し、世論を利用してウー...