フィールドレポート: Miniscriptの旅路
miniscriptに対する私たちの(実用的な)興味は、2020年初頭に、 当時利用可能なスクリプトプリミティブのみを使用するマルチパーティVaultアーキテクチャである Revaultを設計していた頃に始まりました。
私たちは当初、固定の参加者のセットを使用したRevaultを紹介しました。 運用環境で、より多くの参加者に一般化しようとするとすぐに問題に遭遇しました。
- 実際、デモで使用したスクリプトは安全だろうか?宣伝されているすべての方法で使用可能なのか? 宣伝されている以外の使用方法はないのか?
- たとえそうだとしても、それを様々な数の参加者に一般化し、安全性を保つためにはどうすればいいのか? いくつかの最適化を適用して、その結果のスクリプトが同じセマンティクスを持つようにするにはどうすればいいか?
- さらに、Revaultは(支払いポリシーを強制するため)事前署名されたトランザクションを使用している。 スクリプトの構成から、手数料の引き上げに割り当てる予算を事前に把握するにはどうしたらいいか? これらのスクリプトを使用するトランザクションが最も一般的な標準性チェックをパスすることをどうやって確認できるだろうか?
- 最後に、スクリプトが意図されたセマンティクスに対応し、常に使用可能であると仮定しても、 具体的にどのように使用できるだろうか?例えば、考えられるすべての構成について満足のいくwitness(署名)を作成するには どうすればいいだろうか?ハードウェア署名デバイスと互換性のあるものにするにはどうすればいいか?
miniscriptがなかったら、これらの問いは難題になっていたでしょう。 ガレージにいる2人の男が、その場でスクリプトを作成するソフトウェアを書き、 最善を尽くし、その上でそれをセキュリティを強化するBitcoinウォレットと呼ぶつもりはないでしょう。 私たちはRevaultの開発を中心に会社を設立したいと考えていましたが、 安全な製品を市場に投入できるという合理的な保証を投資家に提供しなければ、資金を得ることはできませんでした。 また、資金がなければ、これらのエンジニアリングの課題をすべて解決することはできないでしょう。
miniscriptは、「構造化された方法でBitcoin Script(のサブセット)を記述し、 分析、組み合わせ、汎用署名などを可能にする言語です。[…]合成を可能にする構造を持っています。 さまざまな特性(使用条件、正当性、セキュリティ特性、マリアビリティなど)を静的に分析するのがとても簡単です。」 これはまさに私たちが必要としていたものです。この強力なツールを手に入れたことで、 投資家により良い保証[0]を提供することができ、資金を調達し、Revaultの開発を開始することができました。
当時、miniscriptはBitcoinアプリケーション開発者にとって すぐに使用できるソリューションにはまだほど遠いものでした(もし、なたが2023年以降にこれを読んでいる新しい Bitcoin開発者であれば、そう、私たちはBitcoin Scriptを手で書いていた時期がありました)。 私たちは、miniscriptをBitcoin Coreに統合し(PR #24147、 #24148、#24149参照)、 Revaultウォレットのバックエンドとして使用し、署名デバイスメーカーにファームウェアを実装するよう説得する必要がありました。 後者が最も困難でした。
これは鶏と卵の問題でした。ユーザーからの需要がないのに、メーカーがminiscriptを実装するインセンティブは低かったのです。 そして私たちは、署名デバイスのサポートなしにRevaultをリリースすることはできませんでした。 幸運なことに、このサイクルは、2021年3月にStepan Snigirevによって Specter DIYにminiscriptディスクリプターのサポートが 導入されたことで最終的に解消しました。 しかし、Specter DIYは長い間、単なる「機能的なプロトタイプ」であるみなされ、 Salvatore Ingalaは2022年にLedger Nano S(+)用の新しいBitcoinアプリで初めて 製品化可能な署名デバイスにminiscriptを導入しました。 このアプリは、2023年1月にリリースされ、最も人気のある署名デバイスをサポートした Lianaウォレットを公開することができました。
miniscriptの旅路を締めくくるには、最後の開発が残っています。 Lianaはリカバリーオプションに焦点を当てたBitcoinウォレットです。 このウォレットでは、タイムロックされたリカバリー条件(たとえば、 通常は資金を使用できないサードパーティのリカバリー鍵や、 減衰/拡大するマルチシグなど)を指定できます。 miniscriptは当初、P2WSHスクリプトでのみ利用可能でした。 Taprootがアクティベートされてから2年近く経ちますが、 資金を使用する度にリカバリーの支払い条件をオンチェーンで公開しなければならないのは残念なことです。 このため、私たちはminiscriptをTapscriptに移植する作業を行ってきました( こちらとこちらを参照)。
未来は明るいです。ほとんどの署名デバイスがminiscriptのサポートを実装しているか、 実装中(たとえば、最近のBitboxやColdcard)なのに加えて、 Taprootとminiscriptのネイティブフレームワークが洗練されているため、 安全なプリミティブを使用したBitcoin上のコントラクトはこれまで以上にアクセスしやすくなっています。
オープンソースのツールやフレームワークへの資金提供によって、革新的な企業が競争し、 より一般的にはプロジェクトを実行するための参入障壁がどう低くなるかに注目することは興味深いことです。 ここ数年で加速しているこの傾向は、この分野の未来に希望を抱かせてくれます。
[0] もちろんリスクはまだありました。しかし、少なくともオンチェーンの部分は乗り越えられると確信していました。 オフチェーンの方は(予想どおり)もっと難しいことが分かりました。