Miniscriptがビットコインのスマートコントラクトを使いやすくする

今回のコラムは、ビットコインのスマートコントラクト言語Scriptをより扱いやすくしたMiniscriptという言語について書きます。

Miniscriptはここ1年ほどの間にBlockstream所属のPeter Wuille、Andrew Poelstra、Sanket Sanjalkarの3人によって開発されており、ときどき話題に上っていましたが、2019年8月19日にビットコイン開発者のメーリスにてプロジェクトの詳細が共有されました。ひと言で表現すると「ビットコインのスマートコントラクトをより安全に、読みやすく、簡単に書く方法」です。

前回の記事はこちら
前回のコラムでは、ビットコインとゴールドの相関関係について紹介しました。デジタルゴールドとしての根拠になる見解を掲載しましたので、ぜひご覧ください。

ゴールドとビットコイン(BTC)の希少性のモデル化と市場規模の計測

ビットコインのスマートコントラクト

ビットコインには「スクリプト」というスマートコントラクト機能があり、マルチシグやタイムディレイ(任意の数のブロックが経過するまで使用できない)などの機能を実現するのに使われています。実際のところ、現在利用されているスクリプトの多くは上記2つかそれを組み合わせたもので、あまり複雑なものではありません。

その理由の1つは、Scriptという言語自体が少しとっつきにくいからです。記述が人間に読みづらい形式(スタック指向)なのに加え、Script自体の特徴によって複雑なスクリプトの検証が難しく、作成者のミスによって、意図したものと異なる条件で送金されてしまう可能性が出てきます。

そのため、ミスを見逃したら責任を問われかねないサービスプロバイダーなどは、自社で安全を担保できるシンプルなスクリプトしか提供したがりません。そして、スクリプトの書き手は単純に不安です。

MINISCRIPTとは

そこで提案されているのがMiniscriptです。MiniscriptはScriptの「読みやすく、書きやすく、検証しやすい高級言語」としての位置づけです。すなわち、Scriptで実現したい機能をシンプルな記述で書くことができます。

※高級言語…人間が理解しやすいプログラミング言語

Miniscriptで書いたコントラクトがScriptにコンパイル(翻訳)されるので、Miniscriptを使うと「バグのないScript」を間接的に書くことができます。意図しない動作をするコードが書けない点も含めて画期的なのです。

また、ビットコインのブロックチェーンで実際に動くのはScriptに変わりありませんので、導入するためにビットコインがフォークをする(規格を変える)必要もありません。Miniscriptの規格が決まってしまえば、いずれウォレットやノードのソフトが対応するでしょう。

このリンク先のTranslation Tableを見ると、MiniscriptがBitcoin Scriptよりどれくらいシンプルかがよくわかります:http://bitcoin.sipa.be/miniscript/?fbclid=IwAR0V7Z_6vjnGxOZbPnD78b65Cgtp09a-qlSvBBisU55ilJveXQt3QyIYwRM

可読性・堅牢性アップで便利になる

前半に書いたとおり、現在は自社が認めたスクリプト以外は使えないサービスプロバイダーがあります。これらの企業がユーザーごとのニーズに対応したスマコンに参加できるようになるかもしれません。

例えば、BlockstreamのGreen WalletはユーザーとBlockstreamによる2-of-2マルチシグですが、万が一Blockstreamが署名しない・できない場合に、一定時間経過後ユーザーの鍵のみで使用できる、という条件があります。しかし、現在ユーザーが他の条件を加えることはできません。大量の特製スクリプトに不具合がないか検証し保証することが困難だからです。

しかし、BlockstreamのPoelstra氏によると、大事なのは「一定時間が経過するまではBlockstreamが持つ鍵が必須であること」のみなので、ユーザーがMiniscriptでスクリプトの内容を定義すれば、Blockstreamも簡単に不具合の余地がないと認めることができ、個々のニーズに対応することができるようになります。これによって、一般ユーザーがニーズに合ったスマートコントラクトを利用するハードルが一気に下がるかもしれません。

また、Miniscriptと同時にさらなる高級言語であるPolicy Languageという言語も披露されました。画期的な点は、コインが使用可能になる条件をPolicy Languageで記述すると、最も効率的なMiniscriptに必ずコンパイルされることです。条件を比較する順番などによって最終的なScriptのコード量が変わってくるので、データ容量を減らし、ブロックチェーンに取り込まれる際のコストを下げることにつながります。

最後に、Miniscriptはビットコインを用いたアプリケーション開発にも役に立ちます。オンチェーントランザクションを用いて何かする必要のあるアプリケーションにおいて、やはり複雑なスクリプトの安全性を確認する方法があることは好ましいです。

まだPeter Wuille氏も開発途上と述べているMiniscriptですが、ビットコイン関連の開発者にとって、そしてユーザーにとって、よりきめ細やかな機能を安心して実現できる技術的発展になりそうです。

加藤 規新
@btc_dakara

1994年生まれ、シカゴ大学でGISやコンピューターサイエンスを学び学士号取得。2016年末よりビットコインに関するリサーチをしており、今までにいくつかのブログやサロンで解説を担当。 ビットコインについて一番好きなところはパーミッションレスに誰でも使うことができること。 2019年4月よりトラストレス・サービス株式会社代表。

Source: 仮想通貨ニュースサイト
Miniscriptがビットコインのスマートコントラクトを使いやすくする