見出し画像

Monascriptは何を解決するのか

では、なぜ Miniscript に満足せず Monascript を目指すのでしょうか。

つづき。

Miniscript は、現状公開されている範囲で十分に実用になる。当業者BOTの中の人は、そのように思います。

しかしながら、それでも Monascript を開発するに十分な理由があります。

理由には、純粋に技術的な側面と、どちらかという政治的な側面があります。"ホワイトペーパー" なら前者を抽出する必要がありますが、本稿では、あまり分けずに話を進めていきます。

理由: Miniscript には拡張性がない

Miniscript の真髄は、Miniscript の事実上の公式ページにあるいくつかの表にあります。本稿では技術的に細かいところには触れないという宣言通り、詳細な解説は避けるのですが。Bitcoin Script の全命令のうち、Miniscript によるスマート・コントラクトの生成時に使用される命令は、ほんの一部でしかありません。

肯定的な言い方をすると、限られた命令でスマート・コントラクトを記述できるとすると、それはそれでシンプルで喜ばしいことです。同時に、批判的な立場を取ると「Bitcoin Script が本来持っている表現力の一部しか Miniscript では記述できない」という言い方もできます。

実際、ビットコインが機能拡張を行うにあたって、今までも Bitcoin Script に命令が追加されていました。SegWit でも Lightning Network / Atomic Swap でも。そして今後はサイド・チェーンのため命令追加の可能性があります。

しかしながら Miniscript 自身では、新しい用途・命令の追加に対し、自らを拡張することができません。

Monascript は、Miniscript 自身では困難な、拡張された Miniscript を実現します。

Miniscript は内部に「fragment」と「対応する Bitcoin Script」、「(期待しないコントラクトを事前にエラーで弾く)制約条件」を持っています。
そして、Monascript は Miniscript の上位に位置し「fragment」「対応する Bitcoin Script」「制約条件」の定義を記述可能とします。

…ちょっと解りづらいですかね…

要するに、Monascript は、Miniscript も記述できる言語で、必要に応じ Miniscript では不可能な表現を可能にすることを狙っています。

凄そうですか?

ただし、上記については、Miniscript への批判としては、ちょっとズルいところがあります。

Pieter Wuille 氏による bitcoin-dev メーリングリストへの投稿を引用します。

That said, we plan to extend the design to support future script changes Bitcoin may include.

「将来含まれるであろうビットコインへの変更をサポートするようにデザイを拡張する計画があるよ」とのことで、近い将来に Monascript と似たような機能が実現される可能性はあるようです。

理由: Miniscript は結局 Bitcoin core の成果物である

このあたり、政治的な含みがあっていろいろ不穏なのですが。

Miniscript は bitcoin-dev メーリングリストで盛り上がっている通り、ビットコインのコア界隈で開発が進んでいます。

日本の "ビットコイン・マキシマリスト" を称する方々を思い浮かべて頂けると、海外に疎くても、なんとなく想像して頂けると思うのですが。ビットコイン界隈には、ビットコイン以外の暗号資産はスキャムだから全て死滅すれば良いのに、くらいに思っているミニマリストがそこそこ居ます。同じビットコインの同胞にさえ「bitcoind 以外のノード、bctd や bitcoinj や bchain のようなノードの開発は時間の無駄だ」みたいなことを言う、極端なのもいるようなレベルで。

なので、Miniscript が、今後汎用性を高めたとしても、ビットコイン以外を無視するのは容易に想像がつきます。

具体例があると想像しやすいでしょうか。

Bitcoin Cash が以前無効にされた Bitcoin Script 命令を復活させた、という話題は別稿で触れたかと思います。これは憶測ですがと前置きしつつ、 Miniscript が Bitcoin Cash が復活させた命令をサポートすることは、かなり高い確度で、無いでしょう。ミニマリストなので。

...

さて、Monascript は、その名の通り、モナコインというアルトコイン推しが始めたプロジェクトです。ミニマリストの立場を取る政治的背景もメリットもありません。

Bitcoin Cash のみならず、Counterparty / Monaparty も、その他のアルトも、サポートできるようであればしますし、工数の都合で無理だったとしても、対応するためのインタフェースを用意します。

イーサリアムや EOS といった、ビットコインとは異なる方針でスマート・コントラクトを実現しているチェーンでも、Monascript が生成したコードを、ライブラリとして利用できるかもしれません。

まとめ

…というわけで、なぜ Monascript なのかという説明を、なるべく技術的な用語を使わないようにして整理してみました。

Monascript は Miniscript と敵対するものではありません。Miniscript よりも上位(抽象)の位置にあるものです。
Miniscript の活用例が増えれば増えるほど、Monascript を活用できる場所が増えていきます。
加えて Miniscript がカバーしないところについて Monascript の活用例が登場すれば、Monascript の優位性が裏付けられます。

うまく行けば、ですが。

この記事が気に入ったらサポートをしてみませんか?