📢 Gate.io ポストタグチャレンジ: #MyFavoriteToken# 投稿して$100を獲得しよう!
お気に入りのTOKENがありますか?技術革新、コミュニティサポート、市場潜在性のいずれかに興奮していますか? #MyFavoriteToken# イベントに参加して、あなたの見解を共有しましょう!
💡 参加方法:
1️⃣ gate_Postをフォローする
2️⃣ #MyFavoriteToken# ハッシュタグを含む投稿をし、おすすめのTOKENとその特徴を理由とともに紹介してください。
🎁 10の創造的な参加者がランダムに選ばれ、それぞれ10ドルのトークンを受け取ります!
⏰ イベ
BTCレイヤー2拡張テクニカル分析:有効性の証明と詐欺証明
1 イントロダクション
アルゴリズム f について、互いに信頼しない2人の参加者、アリスとボブは、次の方法で信頼関係を築くことができます:
上記の2、3、4について、xをLayer2トランザクションおよび初期状態、fをLayer2コンセンサスプログラム、yをトランザクションの最終状態とし、これはブロックチェーンのLayer2拡張ソリューションに対応しています。
表1:信頼構築へのアプローチ
また、特に注意が必要なのは:
現在、Solidityのチューリング完全スマートコントラクトによって、詐欺証明と有効性の証明技術がEthereumのLayer2拡張で広く使用されています。しかし、BTCのフレームワークでは、BTCのオペコード機能が制限され、スタック要素数が1000であるなど、これらの技術の適用はまだ試行段階にあります。本文はBTCフレームワークの制限と突破技術をまとめ、有効性の証明と詐欺証明技術を研究し、BTCフレームワークのユニークなスクリプト分割技術を概説しています。
2 BTCフレームワークの制限と突破
BTCの枠組みには多くの制限がありますが、これらの制限を克服するために、ビットコインコミットメントを使用してUTXOの状態制限を突破することができます。タップルートはスクリプトスペースの制限を解消し、コネクタ出力はUTXO消費方法の制限を克服することができます。また、スマートコントラクトは事前署名の制限を突破することができます。
2.1 UTXOモデルとスクリプトの制限
BTCはUTXOモデルを採用しており、各UTXOはそれぞれロックスクリプトにロックされており、そのスクリプトはUTXOを消費するために満たす必要のある条件を定義しています。BTCスクリプトには次の制限があります:
2.2 Bit Promise: UTXOのステートレス制限を突破する
現在、BTCスクリプトは完全にステートレスです。 BTCスクリプトを実行すると、各スクリプトの実行環境は完了後にリセットされます。 これにより、BTCスクリプトはネイティブで制約スクリプト1と2が同じx値を共有することをサポートすることができません。 ただし、この問題はいくつかの方法で解決できます。 核心的な考え方は、ある値に対してある方法で署名することです。 値に署名できれば、ステートフルなBTCスクリプトを実現できます。 言い換えれば、スクリプト1と2のx値の署名をチェックすることで、これら2つのスクリプトで同じx値を使用することを確認できます。 衝突する署名が存在する場合、つまり同じ変数xに2つの異なる値が署名されている場合、罰則を科すことができます。 この方法はビットコインコミットメントと呼ばれます。
ビットの約束の原則は比較的単純です。各ビットには、hash0とhash1の2つの異なるハッシュ値が対応しています。署名する必要があるビット値が0の場合、hash0のプレイイメージを公開します。ビット値が1の場合、hash1のプレイイメージを公開します。
単一のビットメッセージm∈{0,1}を例にとると、対応するビットコミットメントのアンロックスクリプトはいくつかのプレイイメージだけで構成されます。ビット値が0の場合、アンロックスクリプトはpreimage0- '0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140'です。ビット値が1の場合、アンロックスクリプトはpreimage1- '0x47c31e611a3bd2f3a7a42207613046703fa27496'です。したがって、ビットコミットメントを介して、UTXOの状態の制限を打破し、状態を持つBTCスクリプトを実現し、様々な興味深い新しい機能を可能にすることができます。
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // これはハッシュ1です
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // これは hash0 です
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// 現在ビット承诺の値がスタック上にあります。"0"または"1"になります。
現在、ビットは2つの実装方法を約束しています:
現在、BitVM2ライブラリは、Blake3ハッシュ関数を基にしたWinternitz署名を実現しています。単一ビットの署名の長さは約26バイトです。したがって、ビットコミットメントを導入することはコストがかかることがわかります。そのため、BitVM2の実装では、メッセージはまず256ビットのハッシュ値にハッシュされ、そのハッシュ値に対してビットコミットメントを行い、元の長いメッセージの各ビットに直接コミットメントを行うのではなく、オーバーヘッドを削減しています。
2.3 タップルート:突破脚本空间限制
BTCのタップルートのソフトフォークは2021年11月にアクティブ化され、3つの提案が含まれています:Schnorr署名(BIP 340)、タップルート(BIP 341)およびTapScript(BIP 342)。このアップグレードにより、新しいトランザクションタイプであるPay-to-タップルート(P2TR)トランザクションが導入されました。タップルート、MAST(メルケル抽象構文木)およびSchnorr署名の利点を組み合わせることで、P2TRトランザクションはよりプライベートで柔軟性のあるスケーラブルなトランザクション形式を作成することができます。
P2TRは、秘密鍵パスまたはスクリプトパスを介して2つの支出方法をサポートしています。 タップルート(BIP 341)の規定によると、スクリプトパスを介して支出する場合、対応するMerkleパスの長さは128を超えることはできません。つまり、taptree内のtapleafの数は2^128を超えることはできません。2017年のSegWitアップグレード以来、BTCネットワークは重み単位でブロックサイズを測定し、最大で400万の重み単位(約4MB)をサポートしています。P2TR出力がスクリプトパスを介して支出される場合、単一のtapleafスクリプトのみを公開する必要があります。つまり、ブロックには1つのtapleafスクリプトのみが含まれます。したがって、P2TR取引では、各tapleafに対応するスクリプトのサイズは最大で約4MBになります。ただし、BTCのデフォルトポリシーにより、多くのノードは400K未満の取引のみを転送します。より大きな取引はマイナーとの協力が必要です。
Taprootがもたらすスクリプト空間プレミアムにより、既存のオペコードをシミュレートすることがより価値があるようになりました。P2TRに基づく検証可能な計算を構築する際、スクリプトのサイズはもはや4MBの制限に制限されず、複数のサブ機能に分割され、複数のtapleafに分散されることができます。実際、現在のBitVM2で実装されているGroth16検証器アルゴリズムのサイズは2GBに達します。ただし、それは約1000のtapleafに分割され、ビット承諾と組み合わせて、各サブ機能の入力と出力の整合性を制約し、全体の計算の完全性と正確性を確保します。
2.4 コネクタ出力:UTXOの支出方法の制限を突破する
現在、BTCは1つの未使用取引出力(UTXO)に対して2つのネイティブな支出方法、すなわちスクリプトまたは公開鍵による支出を提供しています。したがって、正しい公開鍵の署名またはスクリプト条件を満たせば、UTXOは支出できます。2つのUTXOは独立して支出でき、これら2つのUTXOを制限する追加条件を追加することはできません。つまり、それらを支出するために追加の条件を満たす必要があります。
しかし、Arkプロトコルの創始者であるBurakは、SIGHASHフラグを利用してコネクタ出力を実現することを巧みに利用しました。具体的には、Aliceは彼女のBTCをBobに送信する署名を作成することができます。署名は複数の入力を約束できるため、Aliceは彼女の署名を条件として設定できます:2番目の入力が消費された場合にのみ、Taketxトランザクションの署名が有効になります。 2番目の入力はコネクタと呼ばれ、UTXO AとUTXO Bを接続します。言い換えれば、UTXO BがChallengetxトランザクションによって消費されていない場合にのみ、Taketxトランザクションが有効になります。したがって、コネクタ出力を破壊することで、Taketxトランザクションの有効性を防止できます。
図1:コネクタの出力図
BitVM2プロトコルでは、コネクタ出力はif...else関数の役割を果たします。コネクタ出力があるトランザクションによって支出されると、他のトランザクションによって再び支出することはできません。これにより、排他性が保証されます。実際の展開では、チャレンジ-レスポンスサイクルを許可するために、時間制約の付いた追加のUTXOが導入されます。さらに、コネクタ出力は必要に応じて異なる支出戦略を設定することもできます。たとえば、チャレンジトランザクションの場合はどちらの当事者でも支出を許可し、レスポンストランザクションの場合はオペレータのみが支出を許可するか、タイムアウト後に誰でも支出を許可するかなどです。
2.5 契約: 事前署名の制限を破る
現時点では、BTCスクリプトは主に解除条件を制限しており、未使用のトランザクション出力(UTXO)のさらなる支出方法は制限されていません。これは、BTCスクリプトがトランザクション自体の内容を読み取ることができないため、トランザクションの自己検査を行うことができないためです。もしBTCスクリプトがトランザクションのどんな内容(出力を含む)でもチェックすることができれば、契約機能を実現することができます。
現在の契約実装は2つのカテゴリに分けることができます:
3 ビットコインレイヤー2スケーリング:有効性の証明と詐欺の証明
有効性の証明と詐欺証明はBTCのLayer2拡張で使用できますが、主な違いは表2を参照してください。
表2:有効性の証明と詐欺の証明
ビットコインをベースにして、詐欺証明を構築することができます。ビットコインの有効性の証明をタップルートを利用して構築することもできます。また、詐欺証明は、Bobがシステムに参加するかどうかに基づいて、許可詐欺証明と無許可詐欺証明に分けることができます。許可詐欺証明では、特定のグループのみがBobとして挑戦を行うことができますが、無許可詐欺証明では、第三者であれば誰でもBobとして挑戦を行うことができます。無許可詐欺証明の方が安全性が高く、参加者間の共謀リスクを排除することができます。
AliceとBobの挑戦-応答インタラクション回数に基づいて、詐欺証明は単一ラウンドの詐欺証明とマルチラウンドの詐欺証明に分類されます。図2を参照してください。
図2:シングルラウンドの不正防止と複数ラウンドの不正防止
表3に示されるように、詐欺証明は、シングルターンのインタラクションモデルとマルチターンのインタラクションモデルを含む、さまざまなインタラクションモデルを使用して実現できます。
表 3:単一のインタラクションと複数のインタラクション
BTCのLayer2拡張のパラダイムでは、BitVM1はマルチラウンド詐欺証明メカニズムを採用していますが、BitVM2はシングルラウンド詐欺証明メカニズムを採用しています。bitcoin-circle starkは有効性の証明を利用しています。これらのメカニズムのうち、BitVM1およびBitVM2はBTCプロトコルを変更することなく実装できますが、bitcoin-circle starkは新しいオペレーションコードOP_CATを導入する必要があります。
大抵の計算タスクにおいて、BTCのsignet、testnet、mainnetは完全に4MBのスクリプトをサポートできないため、スクリプト分割技術が必要です。つまり、完全な計算スクリプトを4MB未満のブロックに分割し、異なるTapleafに分配する必要があります。
3.1 ビットコインのマルチラウンド詐欺証明
表3に示されるように、マルチラウンド詐欺証明は、オンチェーンの仲裁計算を減らしたい場合や、問題の計算セグメントを一度に特定できない場合に適しています。マルチラウンド詐欺証明は、証明者とバリデータの間で複数のラウンドのやり取りを行い、問題の計算セグメントを見つけ、それらのセグメントに基づいて仲裁を行います。
Robin Linusの早期BitVMホワイトペーパー(通常称为BitVM1)では、多輪詐欺証明が採用されています。各チャレンジ期間が1週間続くと仮定し、問題計算セグメントを特定するために2分探索法を使用すると、Groth16検証器のオンチェーンチャレンジ応答期間は最大30週に延長され、タイムリーさが低下する可能性があります。2分探索よりも効率的なn-ary検索方法を研究しているチームが現在存在しますが、そのタイムリーさは依然として単一の詐欺証明の2週間サイクルよりも著しく低いです。
現在、BTCの多段詐欺防止機能では、許可されたチャレンジが使用されており、一段詐欺防止機能では非許可のチャレンジ方法が実現されており、参加者のつながりからのリスクをドロップし、セキュリティを強化しています。そのため、Robin Linusはタップルートの利点を最大限に活用して、BitVM1を最適化しました。相互作用のラウンド数を1ラウンドに減らすだけでなく、チャレンジ方法を非許可の方法に拡張しましたが、オンチェーンの仲裁計算のコストが増加することになります。
3.2 ビットコインの詐欺の証拠のラウンド
このモデルでは、詐欺証明の検証は、証明者とバリデータの間で1回のやりとりだけで行われます。バリデータは1回のチャレンジを発信するだけでよく、証明者は1回だけ応答する必要があります。応答の中で、証明者は計算が正しいことを証明する証拠を提供しなければなりません。バリデータが証拠の不整合を見つけた場合、チャレンジは成功し、そうでない場合は失敗します。1ラウンドのやりとりの詐欺証明の特徴は、表3に示されています。
図3:シングルラウンドの不正防止
2024年8月15日、Robin Linusは「BitVM2:BTCを第2層に接続する」技術ホワイトペーパーを公開し、図3に示すような単一のクロスチェーンブリッジを実現し、1回の詐欺証明方法を採用しました。
3.3 OP_CATによるビットコインの有効性の証明
OP_CATはBTCがリリースされたときのスクリプト言語の一部でしたが、2010年にセキュリティ上の脆弱性があったため禁止されました。それでも、BTCコミュニティは長年にわたり、OP_CATを再び使用する可能性について議論してきました。現在、OP_CATは番号347が割り当てられ、BTCのsignetネットワークで有効になっています。
OP_CATの主な機能は、スタック内の2つの要素を結合し、結果をスタックにプッシュすることです。この機能により、BTCの契約とSTARKバリデータに新たな可能性がもたらされます。
3.4 BTCスクリプト分割技術
SNARK/STARK証明後の認証に必要な計算負荷は、元の計算fを直接実行するために必要な負荷よりもはるかに低いですが、バリデータアルゴリズムを実装するためにBTCスクリプトに変換するために必要なスクリプトの量は依然として膨大です。 現在、既存のBTCオペコードに基づくと、最適化されたGroth16およびFflonkバリデータスクリプトのサイズは2GB以上ですが、1つのBTCブロックのサイズはわずか4MBであるため、1つのブロック内でバリデータスクリプト全体を実行することはできません。 しかし、タップルートのアップグレード以降、BTCはTapleafによるスクリプティングをサポートしており、バリデータースクリプトを複数のチャンクに分割し、それぞれがタップツリーを構築するためのタップリーフとして機能することができます。 ブロック間の一貫性は、ビットコミットメントによって保証できます。
OP_CAT契約の場合、STARK検証者は、400KB未満の複数の標準取引に分割することができます。これにより、STARKの有効性の証明の検証全体が、マイナーとの協力なしに完了することができます。
このセクションでは、既存の条件下でのBTCスクリプトの分割技術に重点を置き、新しいオペコードを導入またはアクティブにすることはありません。
スクリプトを分割する際には、次の情報をバランスよく考慮する必要があります:
現在、スクリプトの分割方法は以下の3つに分類されます。
例えば、多数の最適化を経て、Groth16検証器のスクリプトサイズは約7GBから約1.26GBにドロップしました。全体的な計算最適化に加えて、各ブロックも個別に最適化することができ、スタックスペースを最大限に活用できます。たとえば、より効率的なルックアップテーブルアルゴリズムを導入し、動的にロードおよびアンロードすることで、各ブロックのスクリプトサイズをさらに縮小することができます。
Web2プログラミング言語の計算コストや動作環境はビットコインスクリプトとは大きく異なるため、既存のアルゴリズム実装を単純にビットコインスクリプトに変換することは現実的ではありません。 したがって、ビットコインシナリオの特定の最適化を検討する必要があります。
4 まとめ
本文では、BTCスクリプトの制約について最初に検討し、いくつかの解決策について議論します:BTCのコミットメントを利用してUTXOの状態制約を克服する、タップルートを使用してスクリプトスペースの制約を突破する、出力を接続してUTXOの支出方法の制約を回避する、およびプリスクリプト制約を解決するための契約。次に、詐欺証明と有効性証明の特徴について包括的な概要を提供します。特徴には、許可された詐欺証明と無許可詐欺証明の特徴、単一ラウンドとマルチラウンドの詐欺証明の違い、およびBTCスクリプト分割技術に関連する内容が含まれます。
免責事項: