作者:付少庆、SatoshiLab、万物岛BTCワークスタジオ
著者がビットコイン技術を学ぶ際、SegWit、タップルート、TaprootAssetsの3つの知識点を隔離見証の発展史の観点から理解することで、その発展規則をより容易に学び把握できることに気付きました。また、Lightning Network LabのTaproot Assetsプロトコルをより深く理解し、Universeの役割やTaprootAssetsプロトコルが実現可能な機能と将来の発展を把握するのにも役立ちます。これらの理解があれば、関連する製品をより良く設計し、ユーザーに提供することができます。
本記事を読む際には、ビットコインのスケーラビリティ(拡容)と拡張性(拡能)という2つの重要な思考角度が必要です。
拡容とは、ビットコインが使用・管理できるデータ容量の拡張を指します。初期はブロック容量の範囲内に限定されていましたが、後期にはビットコインが管理可能な全てのデータ能力に拡大しました。拡容の極限は無限のデータ空間の管理です。
拡能とは、ビットコインのスクリプト命令による機能実現能力の拡張を指します。拡能の極限はチューリング完全なプログラミング能力の実現です。
ビットコインの全発展史は、拡容と拡能の発展史であり、各種ビットコインのフォークチェーンやOP_RETURN上の探索、隔離見証の3回のバージョン変更を含みます。
3回のバージョンにおける細部原理図は、多くの読者は無視しても構いません。これは著者が関連技術を深く理解するために文書に載せたもので、無視しても読解に影響はありません。
記事中で言及されるBIPプロトコルには著者が時期を記載しています。これは読者が技術が思想から生産環境に導入されるまでの期間を感じ取り、技術実現の難易度をある程度体感できるようにするためです。さらに、3つの隔離見証バージョンのプロトコル誕生時期から導入時期までの流れも明確に把握でき、今後の発展を予測するのにも役立ちます。これらの技術・プロトコルを基に製品開発を行うチームにとっても良い参考となり、参入タイミングの選択に役立ちます。新しい事物に早すぎる参入はサポート技術の未成熟により“先烈”となり、遅すぎる参入は先機を失い“傍観者”となります。著者は、利用可能期に入る直前に参入するのが最適なタイミングだと考えています。この“利用可能期直前”の判断は、時期や技術的細部に基づくことが多いです。
ホワイトペーパーで定義された取引(最もシンプルな取引モデル)
![] ( https://img-cdn.gateio.im/social/moments-b 1 d 1 e 13125 aa 4168 cb 4 b 94759 c 9 f 4386)
初期の最も基本的なビットコイン取引は、複数の入力と2つの出力を許可します。1つの出力は自分へのお釣り、もう1つは外部への送金です。(備考:総入力と総出力の差額が取引手数料)
ほとんどの取引は2つの出力ですが、1つだけの出力となる場合もあり、まとめると以下の通りです:
![] ( https://img-cdn.gateio.im/social/moments-eb 2838590 b 599622064 e 59 c 7164 e 4672)
違いをより分かりやすく説明するため、2入力2出力の図例を使用します。(主な理由は参考資料がこの2入力2出力の画像を提供しているため、再度図を描く必要がないからです。少し手抜きです^_^)
このような対比図で理解しやすくなったでしょうか?
![] ( https://img-cdn.gateio.im/social/moments- 3 bd 23 e 4224 babcd 8 d 070 dea 206 e 8 b 1 e 8)
なぜ隔離見証を語る際にOP_RETURNを取り上げるのか?それは隔離見証よりも早期の探索であり、隔離見証誕生の理由をより深く理解できるからです。
OP_RETURNはスクリプトのオペレーションコードで、スクリプトを終了しスタックトップの値を返します。このオペレーションコードはプログラミング言語のreturn関数に似ています。ビットコインの歴史上、OP_RETURNの機能は何度も変更され、現在は主に台帳上にデータを保存する方法として使われています。OP_RETURNの機能は過去に大きく変化し、今では重要なメカニズムとなり、これを使えばチェーン上に任意のデータを保存できます。
OP_RETURNは元々スクリプト実行を早期終了するためのreturn操作で、実行結果はスタックトップに表示されます。このオペレーションコードには初期に悪用されやすい脆弱性がありましたが、サトシナカモトがすぐに修正しました。
OP_RETURN機能のさらなる変更
Bitcoin Core v0.9.0のアップグレードで、“OP_RETURN出力”スクリプトが標準出力タイプとなり、ユーザーは“使えない取引出力(unspendable transaction output)”にデータを付加できるようになりました。このスクリプトのデータ量上限は当初40バイト、後に80バイトに拡張されました。
ブロックチェーン上にデータを保存
OP_RETURNを常にfalseを返すように変更したことで興味深い結果が生まれました。OP_RETURN以降のオペレーションコードやデータは評価されないため、ネットワークユーザーはこのオペレーションコードを使って任意形式のデータを保存し始めました。
ビットコインキャッシュ(BCH)の時期、2017年8月1日~2018年11月15日には、OP_RETURN出力に付加できるデータ長が220バイトに拡張され、より大きなデータがブロックチェーン上の革新的なアプリケーション(例:ブロックチェーンSNSへの投稿など)を促進しました。
BSVでは220バイトの制限が短期間維持されました。その後、2019年1月、OP_RETURNオペレーションコードがノードが後続のオペレーションコードを検証しない形でスクリプトを終了するため、ノードはスクリプトが520バイトの最大サイズ制限内かどうかもチェックしません。これにより、ネットワークのノード運営者は最大取引サイズを100KBに引き上げ、デベロッパーにより多くのアプリケーション革新の自由を与え、新しいアプリがより大きく複雑なデータをビットコイン台帳に保存できるようになりました。当時、ウェブサイト全体をBSV台帳に保存した例もありました。
OP_RETURNは一定の機能拡張があったものの、全体的には能力が限られています。また、OP_RETURN上の改良はアーキテクチャ上の技術進化を生み出すものではなく(1Mブロックに限定)、隔離見証技術が誕生しました。その3回のバージョンアップは、隔離見証が拡容と拡能の方向で正しい選択であり、強力な効果を生み出したことを示しています。
ビットコインの隔離見証の全歴史をより分かりやすく理解するため、記事冒頭で4つの段階の対比図を示します。
![] ( https://img-cdn.gateio.im/social/moments-c 2 d 61 a 4507 ac 2 e 8 aa 7 c 743 d 6 e 938650 e )
隔離見証(Segregated Witness、略称SegWit)は、Pieter Wuile(ビットコインコア開発者、Blockstream共同創業者)が2015年12月に初めて提案し、後にビットコインBIP141となりました。隔離見証が主に解決する問題は3つ(後述)、最初の2つは主にセキュリティとパフォーマンス向上ですが、新技術への影響が最も大きいのは3つ目で、間接的にブロック容量を増加(下記Block weight参照)し、ビットコインの能力拡容の基礎を築き、後のタップルート(隔離見証第2バージョン)の強化につながりました。
関連プロトコル:
BIP-141:Segregated Witness ( Consensus layer ) / 2015-12-21
BIP-143:Transaction Signature Verification for Version 0 Witness Program / 2016-01-03
BIP-144:Segregated Witness ( Peer Services ) / 2016-01-08
隔離見証が主に解決する問題:
1)transaction malleability(取引延展性)問題
2)SPV証明で取引署名の伝送がオプションとなり、Merkle proof伝送データ量を削減可能
3)間接的にブロック容量を増加
最初の2つは主にセキュリティとパフォーマンス向上ですが、新技術への影響が最も大きいのは3つ目で、間接的にブロック容量を増加し、ビットコインの能力拡容の基礎を築き、後のタップルート(隔離見証第2バージョン)の強化につながりました。
間接的にブロック容量を拡大したものの、隔離見証もブロックサイズ制限を受けます。ビットコインのブロックサイズ制限は1Mバイトですが、witnessデータはこの制限に含まれません。witnessデータの乱用を防ぐため、総ブロックサイズにも制限を設けました。新概念“Block weight(ブロック重量)”を導入しました。
Block weight = Base size × 3 + Total size
Base sizeはwitnessデータを含まないブロックサイズ
Total sizeはBIP144で定義された取引のシリアライゼーションサイズ(バイト単位)、基礎データとwitnessデータを含みます。
隔離見証はBlock weight <= 4Mに制限しています。
隔離見証は技術的にビットコインの拡容をLightning Networkで実現可能にしましたが、ここでは詳細は割愛します。
ビットコイン隔離見証SegWit技術は3つの重要な変化をもたらしました:
(1)取引構造は下図の通り:
![] ( https://img-cdn.gateio.im/social/moments- 656 dc 57 a 1 fc 9 d 42 b 81 e 3 e 9 f 2381 e 397 f )
上図と従来のビットコイン取引図を比較すると、Witness部分が追加されています。これはアンロックコードであり、Witness部分のデータは1M外の拡張データ領域に保存されます。
より詳細なSegwit取引データ例図:
![] ( https://img-cdn.gateio.im/social/moments- 1411673 aa 66 cdf 278 e 69966820 f 6 d 862)
(2)取引サイズの紹介
![] ( https://img-cdn.gateio.im/social/moments- 17 aada 02 e 03 d 03 cf 6029 fe 22336 f 410 c ) ブロックサイズ増加
![] ( https://img-cdn.gateio.im/social/moments- 30 d 5482 c 73883 e 5 a 2 e 13 b 4 fb 03 ed 4 c 5 a )
署名取引構造の変化とBIP-141の内容から、ビットコインのブロックは最大4Mまで拡張可能で、従来の1Mは基本取引データ領域、新たな3MはWitnessデータ領域です。
(3)隔離見証のアドレス形式
ビットコイン隔離見証SegWitは2種類の新しいロックスクリプトP2WPKHとP2WSHを使用し、Bech32ベースの新しいエンコードアドレスが誕生しました。
Bech32アドレスエンコード形式の定義:
![] ( https://img-cdn.gateio.im/social/moments- 3 ec 5 d 37 f 2 e 39 d 77658 c 7 b 9512 ba 50803)
ロックスクリプトP2WPKHとP2WSHの形式は以下の通りで、ここに隔離見証第2バージョンTaprootのアドレス例も加えています。
![] ( https://img-cdn.gateio.im/social/moments-c 354 bfe 70 bd 53 cd 2 ab 07357 bbc 01 d 9 b 5)
ロックスクリプト
P2WPKH
![] ( https://img-cdn.gateio.im/social/moments-d 65 edd 35659 bfd 5 a 1 ea 10211 c 40 c 0474)
ここで20バイトの公開鍵ハッシュは、実際にはアルゴリズム上の最初のビットコインアドレス形式です。
P2WSH
![] ( https://img-cdn.gateio.im/social/moments- 621 e 4 c 57 b 92388 a 80 e 0 db 1 c 804 f 739 b 5)
wTXID Commitment
![] ( https://img-cdn.gateio.im/social/moments-c 9954 be 7248 a 41 edd 627 bae 7 d 2 f 27 cb 4)
Witness領域の全取引ID(wTXID)はハッシュツリーでルートハッシュを形成し、coinbaseにコミットされます。具体的な値の組み合わせは図を参照。
単一Witness取引の取引ID(wTXID)形成原理例図
wTXID
![] ( https://img-cdn.gateio.im/social/moments-ae 0 cb 158016248243 aed 51 bc 02 c 6 e 4 eb )
隔離見証技術は2015年12月に提案され、実際のアクティベートは2017年、481824ブロック高で実現しました。
ブロック閲覧リンク:
詳細な学習・分解紹介:
隔離見証技術はビットコイン史上非常に重大な変更であり、ビットコインの拡容と拡能の輝かしい発展史の幕開けとなりました。隔離見証は拡容と拡能の観点から、主に拡容機能を完成させました。したがって、この方向に沿って考えると、次のバージョンの発展は拡能となります。
![] ( https://img-cdn.gateio.im/social/moments- 3667342 ba 93 c 72 df 5621 d 9 abb 4 bd 9868)
拡容と拡能の観点から、隔離見証第2バージョンの機能を予測できるはずです。
タップルートという単語だけを使うと新しい概念だと思う人が多いですが、隔離見証SegWitの第2バージョンだと伝えると多くの人がその関連性を理解します。タップルート関連のBIPは340、341、342で、名称はBIP340(Schnorr Signatures for secp256k1)、BIP341(Taproot: SegWit version 1 spending rules)、BIP342(Validation of Taproot Scripts)です。
関連プロトコル:
BIP-341: Taproot: SegWit version 1 spending rules / 2020-1-9
BIP-342: Validation of Taproot Scripts / 2020-1-19
BIP-340:Schnorr Signatures for secp256k1 / 2020-1-19
2021年11月、タップルートはソフトフォーク形式で正式に有効化されました。今回のアップグレードはBIP340、BIP341、BIP342の組み合わせです。BIP340は複数取引の同時検証が可能なSchnorr署名を導入し、楕円曲線デジタル署名アルゴリズム(ECDSA)に代わり、ネットワーク容量を拡大しバッチ取引処理速度を向上、複雑なスマートコントラクトの展開を可能にしました。BIP341はメークル化抽象構文木(MAST)を実現し、ブロックチェーン上の取引データ保存を最適化。BIP342(Tapscript)はビットコインのスクリプト言語を拡張し、ビットコインネイティブスクリプト能力の不足を補いました。
隔離見証Segwitとタップルートの空間拡大により、Schnorr、MASTツリー、Taproot Scriptsが誕生し、ビットコインメインネットの機能拡大という使命を担っています。
隔離見証SegWit技術により、ビットコインのブロック容量は増加しました。しかしSegWit技術にはいくつかの課題が残っています:
(1)SegWitバージョンでは暗号アルゴリズムは依然としてECDSAを使用(新たな発展にはより優れた非対称暗号アルゴリズムが必要で、より豊富な機能と特性をサポートするためSchnorr署名を採用)
(2)空間は増加したが、アンロックスクリプトは一対一のシンプルな構造(MASTツリーのような複雑な条件構造が登場)
(3)SegWitはビットコインスクリプトの機能を強化していない(Tapscriptが誕生)
隔離見証第2バージョンのタップルート技術はこれらの課題を非常に良く解決し、隔離見証技術の発展を促進し、より多くの機能を実現可能にしました。BIP340は(1)の課題を解決、BIP341はMASTで(2)を解決、BIP342(Tapscript)はビットコインスクリプト言語の拡張で(3)を解決しました。
タップルート技術の主な新機能:
l Schnorr署名の導入
l P2TRの2種類のロックスクリプト:Key Path Spend(P2WPKHに類似)、Script Path Spend(P2WSHに類似)
l スクリプトツリー(MASTメークル抽象構文木)
l Taproot Script
1 Schnorr署名
タップルートの発展により、能力拡張と同時に署名アルゴリズムの要求が高まり、Schnorr署名が登場し、楕円曲線デジタル署名アルゴリズム(ECDSA)に代わりました。Schnorr署名は効率的かつ安全に取引やメッセージに署名できるデジタル署名方式で、1991年にClaus Schnorrの論文で初めて記述されました。Schnorrはそのシンプルさ、証明可能な安全性、線形性で高く評価されています。
Schnorr署名の利点:
Schnorr署名は効率性、プライバシー強化、ECDSAの全機能と安全仮定の維持など多くの利点があります。Schnorr署名は署名サイズが小さく、検証時間が速く、特定の攻撃に対する耐性が向上しています。
Schnorr署名の最大の利点はキーアグリゲーション(key aggregation)で、複数の署名を1つの署名に集約し、その署名は全ての秘密鍵の合計に有効です。つまり、複数の協力者が自分たちの公開鍵の合計に有効な署名を生成できます。署名アグリゲーションにより、複数署名者の署名を1つの署名にまとめられます。キーアグリゲーションは取引手数料を低減し、基盤のスケーラビリティを向上させます。マルチシグ設定の電子署名は、単独取引の署名と同じスペースしかブロックに占有しません。Schnorrのこの特性は、マルチシグ支払いやLightning Networkチャネル取引などのサイズ削減に利用できます。
Schnorr署名のもう1つの重要な特性は改ざん不可性です。
Schnorrは多くのプライバシー利点も提供します。マルチシグ方式と従来の単一公開鍵は外部から区別できず、Schnorrによりチェーン上の活動でマルチシグ支出と単一署名支出の区別が困難になります。また、n-of-mマルチシグ設定では、外部観察者がチェーン上情報からどの参加者が署名したかを特定するのが難しくなります。
Schnorr署名はBIP-340で実装され、タップルートソフトフォークアップグレードの一部として2021年11月14日、ブロック高709,632で有効化されました。SchnorrはBTCのデジタル署名をより速く、安全に、扱いやすくします。Schnorr署名はBTCの暗号アルゴリズムと後方互換性があり、ソフトフォークアップグレードで導入可能です。
2 基礎原理図とKey Path Spend、Script Path Spend
![] ( https://img-cdn.gateio.im/social/moments- 0 eaaa 87 a 0 cb 8 da 7 ebdc 33600 d 49 f 61 f 8)
3 MASTメークル抽象構文木
上記Key Path SpendとScript Path Spendを理解した上で、最も重要なのはこれらのスクリプトがツリー構造で組織できることです。
このツリーは構文木ASTとメークルツリーの統合です。下図参照:
ASTツリー
![] ( https://img-cdn.gateio.im/social/moments- 093 eed 4 d 3754 b 7 bf 9029 abc 37 af 0569 c ) ![] ( https://img-cdn.gateio.im/social/moments- 5 d 3 c 25 d 5 c 0 b 9621 a 12 c 71 d 0 ce 66541 ed )
上記の構文木をメークルツリーに構築すると以下の通り:
![] ( https://img-cdn.gateio.im/social/moments-c 03 ec 3788 c 9 a 3 ee 1 d 7 e 207 ac 9 a 937460)
4 Taproot Scripts
BIP342プロトコルでTapscriptスクリプトが導入され、Taprootscriptは元のビットコインスクリプトのアップグレード版です。言語とも呼べますが、実際にはコマンド付きオペレーションコードの集合で、他の2つのBIPの実装を支援します。Taprootscriptはスクリプトサイズ上限10000バイトを撤廃し、ビットコインネットワークでスマートコントラクトを作成する環境をより良く提供します。(このアップグレードは後のインスクリプション誕生の基礎にもなりました。OrdinalsプロトコルはTaprootのscript-path spend scriptsを利用して追加データを実現しています。)詳細は公式サイト参照:
現時点でTaprootScriptの能力は十分に発揮されていませんが、今後の発展でその威力が示されるでしょう。例えば、ビットコインレイヤー1とレイヤー2の接続技術は、Taproot、MAST、TaprootScripitsをより多く活用すべきです。
注:実はTaprootレイヤー1では、TaprootScriptの能力はまだ制限されています。ビットコインの仮想マシンのサポートが必要だからです。隔離見証第3バージョンのTaprootAssetsプロトコルでは、TaprootScript専用の仮想マシンTAP-VMがあり、能力拡張がより強力で、ビットコインメインネットの実行環境とより良く分離されています。
タップルート技術は2020年1月に提案され、2021年11月にソフトフォーク形式で正式に有効化されました。ビットコインエコシステムにタップルート技術が導入されてから、新しいアプリケーションが誕生し始めました。初期段階のアプリは軽量でシンプルなものです。
代表的なアプリケーション:
(1)Ordinals序数プロトコル、インスクリプション、BRC20
(2)その他プロトコル-Atomicals、ARC20
(3)その他プロトコル-Rune
SegWitとタップルート技術は最初の拡容と拡能の探索を完了しましたが、現有構造内に限定されているため、この拡容と拡能には限界があります。
ビットコインの最初の拡容は1Mブロックから4Mブロックへの拡容を実現しましたが、この思考を続けて拡容を続けると、技術的に可能でも他のビットコインフォークチェーンのようにブロックが巨大化し、ビットコインの中央集権化など深刻な問題を引き起こし、ブロックチェーンの安全性を損なう恐れがあります。したがって、次の拡容には異なる技術原理が必要です。
タップルート技術はビットコインの最初の拡能を実現しましたが、同様に限界があります。ビットコインメインネットでは、BTCScript仮想マシンとTapScript仮想マシンは同じ仮想マシン(ビットコインのスタック計算)であり、この拡能は多くの制限を受け、ビットコインメインネットの安定性と安全性にも影響します。新しい拡能がビットコインメインネットの仮想マシンから分離され、分層プロトコルに適合した独立仮想マシンとしてメインネット仮想マシンと協働するのがより合理的な発展思考です。この分離された仮想マシンは非チューリング完全からチューリング完全へ発展する可能性もあります。
![] ( https://img-cdn.gateio.im/social/moments- 21 f 0 bc 002 d 952 b 8 cd 84 e 2 dc 4 dd 8 af 0 b 3)
ビットコインメインネットに最初の拡容と拡能技術が導入されたことで、後の拡容と拡能に非常に良い技術的参考と実現思想が提供されました。予見されるビットコインの次の発展は、主にさらなる拡容の問題を解決することです。もちろん、拡容と拡能を同時に解決できれば理想的ですが、2つの重大な変更を同時にサポートするのは非常に危険で、エンジニアリングの難易度が大きく上がります。そこで、ビットコインメインネットの再拡容技術が誕生しました(同時に小規模な拡能技術も登場)。
タップルートの発展により、ビットコインエコシステムにはより多くの可能性が生まれました。その可能性は以下の点に現れます:
(1)ビットコインのブロック空間を占有せず、さらなる隔離見証を実現できるか、すなわち、Witness領域のデータをビットコインブロック外に保存し、証明だけをビットコインメインネットに保存する
(2)Witness領域のデータがより豊富な構造を持ち、より多くの業務機能を満たせるか
(3)TaprootScriptの能力をさらに拡張し、独立した仮想マシンで関連計算を実行できるか
上記の目標が実現できれば、ビットコインメインネットの特性を完全に保証しつつ、非常に豊富な機能を実現できます。
隔離見証第2バージョンのタップルート技術でビットコイン技術の発展は満足できるのか?さらなるアップグレードや拡張の余地はあるのか?
Lightning Network Labは上記の理由と背景から、2021年末にTaproot Assetsプロトコルを生み出しました。Taproot Assetsプロトコル(旧名“Taro”)。Taproot Assetsプロトコルはタップルートよりも強力な能力を持ち、設計構造も非常に巧妙です。(設計者であるLightning Network LabのCTO、Olaoluwa Osuntokunに深く感謝します)
Taproot Assetsプロトコルは7つの重要なBIP(現時点ではBIP番号未取得)で構成されています:
BIP-TAP-ADDR:Taproot Asset On Chain Addresses Draft / 2021-12-10
BIP-TAP-MS-SMT:Merkle Sum Sparse Merkle Trees Draft / 2021-12-10
BIP-TAP-PROOF:Taproot Asset Flat File Proof Format Draft / 2021-12-10
BIP-TAP-PSBT:Taproot Assets PSBT Draft / 2023-02-24
BIP-TAP-UNIVERSE:Taproot Asset Universes Draft / 2021-12-10
BIP-TAP-VM:Taproot Asset Script v1 Draft / 2021-12-10
BIP-TAP:TAP: Taproot Assets Protocol Draft / 2021-12-10
TaprootAssetsプロトコルはビットコインの拡容と拡能をほぼ極限まで発揮しています。空間はUniverseの存在により、理論上無制限(無限空間)となり得ます。能力の上限はTaprootScriptのスクリプト能力とその仮想マシンの特性です。(現時点でTAPの仮想マシンはまだチューリング完全ではありません)
Taproot Assetsプロトコルの主な新機能:
1 チェーン外データの保存とチェーン上証明
Taproot AssetsプロトコルはUniverse方式でチェーン外データを保存します。この設計には大きな利点があり、公開が必要なデータはアクセス者に提供でき、公開しないデータはよりプライベートな方法で保存できます。
現行のTaproot Assetsプロトコルでは、Sparse Merkle Sum Tree(MS-S
関連記事