メインコンテンツへスキップ

BIP 342

Taproot スクリプトの検証

原題: Validation of Taproot Scripts

Status
Deployed
Type / Layer
Specification / Consensus (soft fork)
Author
Pieter Wuille, Jonas Nick, Anthony Towns
割り当て日
Status 検証日
原文
github.com/bitcoin/bips/blob/master/bip-0342.mediawiki

要約

Taproot のスクリプトパスで実行される新しいスクリプト環境(tapscript)の検証規則を定めた仕様。BIP341 がスクリプトの置き場所と構造を変えたのに対し、こちらは opcode の意味論を Taproot に合わせて更新する。主な変更は四つある。第一に、OP_CHECKSIG と OP_CHECKSIGVERIFY は ECDSA ではなく BIP340 の Schnorr 署名を検証する。第二に、OP_CHECKMULTISIG と OP_CHECKMULTISIGVERIFY は無効化され、代わりに署名検証の成功数をスタック上で足し込む OP_CHECKSIGADD が導入された。署名ごとに検証が独立するため、バッチ検証と相性がよい。第三に、スクリプトサイズの上限と非 push opcode の個数制限が撤廃され、ブロック単位の sigops 制限は「50 + その入力の witness の直列化サイズ」という入力ごとの予算に置き換えられた。署名検証の量が、それを持ち込むために払った手数料に比例する形になる。第四に、将来の拡張のために OP_SUCCESSx という opcode 群と未知の公開鍵型が予約された。どちらも後からソフトフォークで新しい規則を与えるための余地である。

技術的意義

Taproot で複雑な条件を書くための実行環境であり、OP_CHECKSIGADD による閾値マルチシグはここに載っている。スクリプトサイズ上限の撤廃は、Ordinals のように大きなデータを tapscript の leaf に置く使い方が成立した前提のひとつでもある(実際の上限は標準ルール側のトランザクション重量が決める)。

関連する BIP

関連する解説記事

このページに掲載しているのは原文の翻訳ではなく日本語の要約です。BIP は原文が正であり、Status を含むメタデータは上記の検証日時点で bips リポジトリから転記した値です。実装・検証の際は必ず原文を参照してください。

bitcoin/bips で原文を読む