ASICBoost は、ブロックヘッダーのデジタルな指紋であるハッシュを計算するとき、一部の作業を再利用する Bitcoin 採掘の最適化です。試行にかかるコストの一部を減らしますが、成功するハッシュの条件は緩めません。適切な仕事の準備と、それを利用できるチップ設計が必要です。
似た注文を処理するとき、共通情報はまとめて準備できます。ただし、各注文を仕上げる作業は残ります。ASICBoost の基本はこのように捉えられます。Timo Hanke は 2016 年の論文で、Sergio Demian Lerner との協力に言及して手法を説明しました。ASIC は特定の計算に特化したチップで、作業を組み替えると重複を省けます。使われるハッシュ関数 SHA-256 も Bitcoin のルールも変わりません。最終的なヘッダーの二重ハッシュは目標値以下でなければならず、ブロック全体も有効である必要があります。 [1]
バイトはデジタルデータの大きさを表す単位です。 ヘッダーはブロック情報をまとめた 80 バイトのデータです。最初のハッシュ処理では 64 バイトを処理し、続いて残りの 16 バイトに所定のパディングを加えて処理します。取引全体の指紋である Merkle root はこの境界をまたぎ、末尾の 4 バイトが後半に入ります。そこには時刻、採掘の目標値を短く表す bits、試行ごとに変えるカウンター nonce もあります。どのフィールドを変えるかによって、再利用できる計算が変わるのです。 [1]
Hanke は適切に組み合わせた仕事を colliding work items と呼びます。ヘッダーの前半が異なるため、計算途中の状態である midstate も異なります。一方、Message と呼ばれる部分は同じです。選んだ nonce に対して、最初の SHA-256 の後半を処理する補助値の並び、message schedule を共有できます。その後は異なる中間状態から別々に計算を続けます。最終ハッシュの一致を発見したわけでも、関数を破ったわけでもありません。ここでの衝突は入力の一部の一致であり、ヘッダー前半は異なります。 [1]
Sergio Demian Lerner は overt と covert ASICBoost を区別しています。Overt はヘッダーのバージョン欄 nVersion の許可されたビットを変えるため、Merkle root の部分一致を探す必要がありません。Covert はその一致を探し、Merkle root の末尾 4 バイトを同じままにして前半を変えます。変更可能な取引データや取引順序を利用できますが、取引の依存関係を保ち、記録された指紋がブロックのデータと引き続き一致するようにしなければなりません。ヘッダーのバージョンが違うという観察だけでは、省エネ効果や運営者は特定できません。 [2]
プールは採掘者の作業を取りまとめます。装置の通信相手となるコンピューターサービスがプールのサーバーで、合意した条件に従って結果を受け付けます。 ピーターの装置はヘッダーを自由には変えられません。BIP310という番号の文書は mining.configure による交渉を説明しています。version-rolling.mask が変更できるビットを示し、応答では採掘側とサーバー側の両方が扱える範囲を選びます。マスクは許可された位置の一覧であり、高速化の保証ではありません。条件 version_bits & ~last_mask == 0 は、提出するビットが最新の有効なマスクからはみ出さないことを意味します。mining.set_version_mask 通知は直ちに有効になり、次の仕事を待ちません。装置を制御するファームウェアは、この合意を守る必要があります。 [3]
BIP320 は汎用の nVersion ビットを 16 個とする提案で、置き換え案の BIP323 は 24 個を説明しています。この編集確認時点では、両方とも Draft、つまり草案です。その表示だけで、実装が存在しないとも、すべてのプールが対応しているとも言えません。文書はフィールドの想定用途を述べますが、接続の実際は使用中のマスクとソフトウェア次第です。ピーターは BIP 番号だけから装置の変更権限を判断せず、提案をネットワーク規則の自動変更とも考えません。 [4] [5]
Hanke のモデルは削減率を x × (n − 1) / n と表します。x は共有可能な計算の割合、n は適切な仕事の数です。x = 25%、n = 4 なら 18.75% となります。各仕事で同じ準備を繰り返す代わりに、共通の準備をまとめて行うわけです。これは計算モデル上の結果で、どの装置でも消費ワット数が同じ割合で下がるという意味ではありません。他の回路や運転条件も影響します。測定せずに性能や収入の増加率へ置き換えることはできません。 [1]
ピーターはチップとファームウェアの対応、プールとの連携を確認します。次に、プールが仕事を受け付けているかを調べ、比較可能な条件で装置全体を測ります。J/THはテラハッシュあたりのジュール、つまり一兆回のハッシュ試行に必要なエネルギーを表します。比較するときは、測定に含める装置の構成部品と期間をそろえる必要があります。ASICBoost という名前は測定の代わりになりません。動作周波数を上げるオーバークロックと同じ意味でもなく、ブロック発見や利益も保証しません。構成全体が対応していれば、一部の計算をより効率よく進める方法です。 [1] [3]
理解を深めるには、この項目とあわせて次もお読みください ASIC Miner, マイニング, Block Header, Proof of Work, Bitcoin, SHA-256. 次の項目からも参照されています Mining Firmware.