AsicBoost と SegWit に関する技術的な議論

AsicBoost と SegWit に関する技術的な議論

AsicBoost と SegWit に関する議論は以前より静かになっていますが、それでも技術的な観点から説明してみたいと思います。

  1. AsicBoostとは

  2. AsicBoost と SegWit の関係は何ですか?

これら 2 つのことについて話す前に、キーワード挖矿を無視することはできません。まずはマイニングについてお話ししましょう。

鉱業

ビットコインのマイニングの仕組み: ビットコインのマイニングの仕組みでは SHA256 アルゴリズムが使用されますが、SHA256 アルゴリズムはブロック全体に対して実行されるのではなく、ブロック ヘッダー (ブロック ヘッダー) に対してのみ実行されます。次の図はブロックの構成を示しています。

上の図から、どのフィールドが結合され、ハッシュされてブロック ハッシュが取得されるかがわかります。背景が黄色のフィールドはブロック ヘッダーで、次の内容が含まれます。

  1. バージョン番号

  2. 前のブロックのハッシュ

  3. マークル根

  4. タイムスタンプ

  5. ビット(難易度)

  6. ノンス

マイニングのラウンドでは、バージョン番号、前のブロックのハッシュ、難易度はすべて固定されています。マイナーが行う必要があるのは、現在のブロックのハッシュ値を変更するために Nonce を継続的に変更し、現在の難易度よりも低いBlock Header見つけることだけです。

しかし、Nonce のビット数は4 バイトしかないため、Nonce に使用できる検索空間は十分ではありません。ブロック ヘッダーの各フィールドが占めるビット数:

4 バイトの Nonce は、検索確率空間が2^32であることを意味し、4G ハッシュ操作で走査でき、単一のマイニング マシンで瞬時に完了できます。

Nonce の検索スペースが不十分な場合は、 timestampMerkle rootのみを変更できます。タイムスタンプは前方または後方に調整できますが、調整後の検索スペースはまだ不十分です。

マイナーは、Coinbase トランザクション、トランザクション順序、またはその他の方法を変更して新しいMerkle Rootを取得し、Nonce 2 を再度32回走査します。マークルルートは 32 バイトなので、検索空間は十分に大きいです。

ビットコインマイニングを要約すると、

簡単に言えば、ビットコインのマイニングとは、Nonce を継続的に変更してブロック ハッシュを変更し、現在の難易度よりも低いブロック ヘッダーを見つけることです。しかし、Nonce の検索空間は小さすぎます。 2 32 回のハッシュ後に対応するブロック ヘッダーが見つからない場合は、Merkle ルートを変更して再計算する必要があります。

上記ではビットコインのマイニングの仕組みについて簡単に説明しましたが、 AsicBoostについてはどうでしょうか?

アシックブースト

AsicBoostは、 SHA256的计算Block Header结构に関連するアルゴリズムです。ブロック ヘッダー ハッシュを計算するときは、SHA256 計算の前に 128 バイトにパディングする必要があります。上記のブロック ヘッダーは 80 バイトのみであり、残りの 48 バイトを 128 バイトに埋める必要があります。

128 bytesのハッシュを計算するプロセスは 2 つのステップに分かれており、最初の 64 バイトが一緒に計算され、最後の 64 バイトが一緒に計算されます。

このようなパディングされたBlock Header hash次のとおりです。

 SHA256=F(チャンク1)+B(チャンク2)
チャンク1=(バージョン)+(前のハッシュ)+F28(マークルルート)
チャンク2=B4(マークルルート)+タイムスタンプ+ビット+ノンス+パディング

上記と組み合わせると、ブロックハッシュを計算するときに次の現象が発生します。

Nonce の値が変更されるたびに、 Chunk1 の値は変更されません。つまり、 Nonce が変更されるたびに、 B(Chunk2)を再計算し、最後に計算されたF(Chunk1)と組み合わせるだけで済みます。

これはマイニングを最適化する方法です。最適化後、各ラウンドで検索可能なスペース内の Nonce が変更され、SHA256 を計算する式は次のようになります。

SHA256=F(チャンク1)(変更なし)+B(チャンク2)`

基本的にすべてのマイニングマシンはこの最適化を行っていますAsicBoostこの最適化に基づいたアイデアをさらに拡張し、別の最適化方法を見つけました。

Chunk 1変更せずにそのままにしておくことができるので、 Chunk 2変更せずにそのままにしておく方法はありますか?前の式から、 Merkle Rootの最後の 4 ビット、タイムスタンプ、および Nonce が変更されない限り、 Chunk 2変更されずに維持できることがわかります。

Merkle Rootの最後の 4 桁が同じであることがわかったら、同じタイムスタンプと nonce を持つ別の最適化式を取得できます。

SHA256=F(チャンク1)`+B(チャンク2)(変更なし)

タイムスタンプについては、マイニングのラウンド中に基本的に変更されませんが、Nonce は 2 32以内の検索空間でトラバースされます。残る問題は、最後の 4 桁が同じである十分な数の Merkle Root を見つけることです。これにより、Nonce がトラバースされるたびに後半部分の計算結果を再利用できるため、計算が効果的に削減され、ブロック ハッシュが見つかる確率が高まります。

前述のように、トランザクションの順序を変更したり、Coinbase を変更したりすることで新しい Merkle Root を取得できるため、衝突を通じて最後の 4 桁が同じ Merkle Root を見つけることができます。衝突によって最後の 4 桁が同じハッシュが見つかる確率はどれくらいでしょうか? 「誕生日のパラドックス」(最後の 4 バイトが同じである確率は、32 ビットが同じである確率)によれば、その確率は次のようになります。

衝突が約 77,000 回発生すると、ハッシュの最後の 4 桁が同じになる確率は 50% になります。このような衝突によって確率はどの程度高まるのでしょうか? AsicBoost のホワイト ペーパーに記載されている結果は次のとおりです。

この最適化により、理論的には衝突効率が 20% 向上し、マージ パフォーマンスが約 7% 向上します。 AsicBoost 、チップ (ハードウェア) だけでなくソフトウェアでも実装できます。 Merkle Rootを変更する方法:

  1. Coinbaseの取引を変更すると、ホワイトペーパーではそれが十分に効率的ではないと考えている

  2. もう一つの方法は、マークルツリーの順序を更新することである。

  3. …他の方法

AsicBoost攻撃ではなく、 Bitcoin ブロック ヘッダーと SHA256 アルゴリズムに基づいた最適化であることがわかります。

AsicBoostには技術的な最適化が1つだけあります

AsicBoost は現在の Bitcoin プロトコルを破壊したり、使用できないブロックを生成したり、Bitcoin にセキュリティ上の問題を引き起こしたりしないことは明らかです。
SHA256 アルゴリズムに基づく最適化も、ビットコインの歴史の中で何度か登場しています。
1. 上記のようにNonceを変更する場合、前半のF(Chunk1)を再計算する必要はない。
2. 後半の最初の3ラウンドも最適化できます。ms3stepsを参照してください。
3. …
4. アシックブースト

全てのソフトウェアやシステムは最適化される可能性を秘めており、ビットコインマイニングの歴史は効率を継続的に最適化するプロセスであると言えます。
优化攻击どのように定義すればよいでしょうか?これは考える価値のある質問です。 SHA256 の最初の 64 ビットの計算を最適化することは許可されていますが、最後の 64 ビットの計算を最適化することは攻击に該当しますか?

AsicBoost 、元の Bitcoin マイニングに基づいてハッシュ衝突の確率を高め、より適切なBlock Headerを見つけ、ブロック ヘッダーを見つける確率を高める最適化アルゴリズムです。それは脆弱性ではありません。

ビットコインのマイニングの効率を向上させる技術があれば、攻撃者がマイナーに対して技術的優位に立たないように、マイナーがこの技術をできるだけ早く適用できるようになることを願っています。結局のところ、コンピューティング能力はビットコインのセキュリティの基盤です。攻撃者がマイナーよりも技術的に進んでいる場合、ビットコインが攻撃される可能性が大幅に高まります。

AsicBoostを紹介した後、 AsicBoostと SegWit の関係性を見てみましょう。

SegWit と AsicBoost

SegWit (Segregated Witness) は分離された検証です。その適用によりTXが変更されます。新しいTX IDを採用します: Witness ID

同様に、Witnesses ID はWitness Merkle Treeに対応し、 Winess Merkel Rootが存在します。しかし、 Winess Merkel Rootどこに書いてあるのでしょうか?答えはCoinbaseです。

SegWitプロトコルでは、Coinbase は新しい出力を追加します。新しい出力は次のとおりです。

出力データ = WITNESS_COMMITMENT_HEADER + ser_uint256(uint256_from_str(hash256(ser_uint256(witness_root)+ser_uint256(witness_nonce))))
スクリプト = CScript([OP_RETURN, 出力データ])

新しく追加された出力には、スクリプトで構成された OP_RETURN + WITNESS 情報 + Witness Merkle Rootハッシュが含まれます。

Witness Merkle Rootの計算にはCoinbaseは含まれないため、Coinbase とWitness Merkle Root間の相互変更によって発生する無限ループを回避できます。

これにより問題が発生します。 SegWitでトランザクションの位置が変更されると、 Witness Merkle Root変更されます。 Coinbase には、Coinbase の変更に影響を与えるWitness Merkle Root情報を含める必要があります。 Coinbase の変更により、ブロック全体の Merkle Root が変更されます。

SegWit で使用される AsicBoost がトランザクションの順序を変更して新しい Merkle Root を取得する場合、 Witness Merkle RootMerkle Root同時に計算する必要があるため、 AsicBoostの効率が低下します。

これは、SegWit が AsicBoost に与える影響です。しかし、重要な事実を無視することはできません。SegWit とAsicBoost SegWitに排他的ではありません。

ブロック ヘッダー構造が変更されない限り、 AsicBoost最適化は引き続き存在し、有効です。

SegWit でMerkle Rootを取得するために Coinbase を変更する方法はWitness Merkle Root Coinbase TX が含まれていないため、現在のプロトコルで Coinbase を変更するのと同じ効果があります。

SegWit と AsicBoost は相互に排他的ではなく、SegWit に AsicBoost の最適化が存在しないことを意味するものではありません。 SegWitでのAsicBoostの使用は、エンジニアリングの面でも最適化できます。Merkle Root の計算にはハッシュの計算も必要であり、Merkle Root の計算中にブロック ハッシュの計算が随時ブロックされる可能性があります。並列計算はより良い最適化方法でしょう。並列計算の場合、 Merkle Root取得するためにCoinbase変更することでもたらされる効率の低下は特に顕著ではありません。

要約する

AsicBoost の仕組み:

ブロック ヘッダーを計算するときに、Merkle ルートが 2 つの部分に分割され、同じ Merkle ルートの最後の 4 ビットを使用してブロック ハッシュを計算すると、マイニングの効率が向上します。

セグウィット:

SegWit ではWintess TX IDの使用が必須であり、その後新しいWitness Merkle Rootが存在します。 Witness Merkle Root Coinbase に書き込まれますが、Coinbase 自体はWitness Merkle Rootに書き込まれません。ソフトフォークのため、ブロックヘッダーの構造は変更されていません。

上記に基づいて、以下の結論を導き出すことができます。

AsicBoost は本質的には、ブロック ヘッダー構造と SHA256 アルゴリズムに基づいた最適化です。

AsicBoostとSegWitは相互に排他的ではない

ブロック ヘッダー構造と SHA256 アルゴリズムが変更されない限り、 AsicBoost常に存在します。

SegWitはAsicBoostでの取引のやり取り方法に影響を与えるだろう

SegWit では、トランザクション順序が変更されるたびに Coinbase が変更され、 Merkle Rootの再計算が必要になります。トランザクションの順序を変更すると、 Witness Merkle RootMerkle Rootが変更されます。

AsicBoostを設計するより良い方法があれば、それはSegWitでも機能するだろう

トランザクション順序を変更して Merkle Root を更新する方法の効率は低下しますが、エンジニアリング最適化 AsicBoost を使用する方法は依然として効果的です。例えば並列コンピューティング

AsicBoostはマイニングを最適化する方法にすぎず、ブロックの構造は変更されていないため、SegWit ではAsicBoost最適化がなくなることはありません。 G Maxwell 氏は電子メールで、ブロック ヘッダーを変更してAsicBoostが使用できないようにする方法を提案しました。この提案に反対はしませんが、不必要だと思います。マイナーが最後の 64 バイトの計算を最適化することを許可されないのであれば、最初の 64 バイトの計算を最適化することも禁止されるべきではないでしょうか?さらに、将来的には同様の最適化が行われる可能性があります。それらはすべて禁止されるべきでしょうか?

与えられた条件の下で、人間は常に元の方法 B よりも優れた方法 A を見つける方法を見つけます。人類の歴史は、効率性の継続的な改善の歴史です。

私が見たWeiboの投稿をシェアします:

<<:  Antbleed脆弱性の発見はビットコインマイニングコミュニティに波紋を巻き起こした

>>:  ビットコインウォレットの漏洩によりユーザーが70ビットコインを失う

推薦する

LKBT創設者アモス・ラング氏との独占インタビュー:ビッグデータの時代において、データは人々の想像以上に価値がある

「ビッグデータの時代において、データは非常に価値があり、その価値は人々の想像をはるかに超えるものとな...

中央財務の鄧建鵬氏:中国の「画一的」な仮想通貨規制の合法性と合理性を最適化する方法

著者:鄧建鵬(中央財経大学法学院教授、金融技術法治研究センター所長、博士課程指導教員)ウー氏はブロッ...

神宇:1キログラムあたり70元でマイニングマシンを買っているのは誰ですか?

「鉱山機械が重量で販売されている」というニュースにより、鉱山労働者が再び注目を集めている。 &qu...

イランは今年5月に実施されたビットコイン採掘禁止を解除した。

Bitcoin Magazine によると、イラン・インターナショナルを引用して、イラン政府はビッ...

テスラの新しいマスタープランにはビットコインとブロックチェーン技術がさらに含まれる

イーロン・マスク氏の新しいテスラのマスタープランは、ビットコインやブロックチェーン技術とより深く関わ...

ステーブルコインを規制し、NFTを発行することで、英国は暗号化技術とイノベーションの世界的な中心地になることを望んでいる。

英国政府はステーブルコインを規制し、ビットコインなどのトークンを含む暗号通貨を規制・活用するための一...

有名なジュエリーチェーンが独自の「ビットコイン」決済システムを開発中

情報筋によると、有名なジュエリーチェーンである富源グループは独自のデジタル通貨決済システムを開発して...

デジタル通貨の規制をめぐる争いが激化する中、暗号通貨業界は「Kストリート」に目を向ける

デジタル通貨をどう規制するかをめぐる争いが激化する中、デジタル通貨を使用する企業は「Kストリート」に...

UAEの銀行、データ侵害とビットコインによる身代金要求に悩まされる

顧客データの漏洩がまたもやニュースになっていますが、今回は、これまで経験したことよりも結果がひどいで...

最近BTC価格が急騰した理由の分析

ビットコインは今朝64,000ドルに達した後、15分間で8%下落し、Binanceの取引では一時58...

BitLicense はそもそも違法なのでしょうか?ニューヨーク州金融サービス局、ビットコイン会社に訴えられる

過去数年間、暗号通貨業界を注意深く追ってきた人なら誰でも、 BitLicenseの存在を知っているで...

BitGo CEO: ビットコインのブロック容量と将来

キャプション: この記事の著者である Mike Belshe は、有名なネットワーク プロトコル S...

Bitwage が企業向けデビットカードおよびクレジットカード給与計算サービスを開始

Crazy Review : Bitwage は、企業にブロックチェーン ベースのグローバル給与計算...

ビットコインは最近再び盛り上がっている:4日間で30%上昇

徐々に人々の目から消えていったビットコインは、ここ数日、市場で大いに盛り上がっている。過去4営業日で...