BLS署名を用いて任意のプログラムをスマートコントラクト(DLC)にする
本稿でも何度か取り上げているDLC (Discreet Log Contracts)はビットコインを使ってトラストを最小化した差金決済取引を行うプロトコルです。
DLCのプロトコルを進化を続けており、昨夏にBLS署名を使った新しい方式が提案されました。画期的な内容で、先日開催されたDiamond Hands Meetupで大まかな内容の発表に刺激を受けたのでここで共有します。
イベントのページから資料をいくつか引用しています。
従来型のDLC:シュノア署名の応用
上記の「5分でわかる」記事では、オラクルが発表した結果を受けてどのようにその結果に応じたトランザクションに署名できるのかについては触れていませんでした。一番シンプルな発想は「オラクルに署名を依頼する」ことですが、それではオラクルを完全にトラストしているだけで、プライバシーも保護されません。
実際に使われているDLCではシュノア署名を応用したアダプタ署名という技術を利用しています。オラクルは事前に結果に応じて発表するアダプタ・シークレットという秘密の値を結果の数だけ生成し、それぞれについてアダプタ・ポイントというものを公開します。このアダプタ・ポイントを利用して生成した公開鍵に対して資金をロックすることで、後にオラクルが結果に応じて1つだけ公開したアダプタ・シークレットに対応したものの秘密鍵が復元でき、ユーザー達はこの秘密鍵を利用して資金の分配を行えます。



オラクルの視点からすると、事前に結果としてありえるイベントすべてに対してアダプタ・ポイントを用意して公開するほかアダプタ・シークレットも保管する必要があり、またユーザー視点ではこのアダプタ・ポイントを使って取引相手と協力して大量のコントラクト実行トランザクション(CET)を生成する必要があります。このため、ドル刻みのビットコイン先物など可能な結果数が多いDLCや複数のオラクルを組み合わせたDLCの作成には大量の計算が伴うため時間がかかってしまい、実用性を損なう1つの弱点となっています。
余談ですが、DLCの作成に時間がかかってしまう問題に対して2022年に話題となったソフトフォーク提案OP_CTVが効果的という記事もご覧ください。

BLS署名を使うとオラクルが単純化され、プログラムの実行にコミットすることもできるようになる
アダプタ署名を利用したDLCでは、オラクルが事前にイベントの結果に対するコミットメントを多数用意し、契約満期時に結果に応じた署名を発表する必要がありました。ところが昨年夏、Boneh-Lynn-Shacham (BLS)署名を用いた新しいDLCスキームが提案され、画期的なものとしてDLC界隈を賑わせました。
BLS署名の説明は難しいので、比較的わかりやすかった英語の記事をおすすめしておきます。また、DLCに応用するスキーム自体も完全には理解できていないので、いつも参考にしている安土さんのブログ記事をリンクしておきます。かなり複雑そうではあります。

この提案の面白いところは3つあります。
1つめは、ビットコイン自体はBLS署名に対応していないにも関わらず活用できる点です。ビットコイントランザクションの部分は既存のDLCと変わらず、オラクルが鍵を提供する方法にBLS署名を利用するという話のようです。ソフトフォークやハードフォークの必要性はプロトコルの実現可能性を大きく損なうものなので、その必要がないことは大きな強みだと思います。
2つめはオラクルがステートレスになることです。以前のように多数のコミットメントやシークレットを生成したり保管する必要がありません。オラクルのセットアップや運用が非常に簡単になるため、データ提供を業とする企業や取引所などが気軽に参入できるようになるでしょう。
3つめはオラクルに任意のプログラムを実行させた結果についてDLCを作ることができることです。このため、より複雑で特殊なコントラクトの作成が簡単になります。(以前のモデルではすでにオラクルが対応している一般的なコントラクトでなければオラクルに頼んで作ってもらう必要があった)

オラクルがWebから取得してきたデータに対して任意のWASMプログラムを実行させるという構想もあり、このように第三者にプログラムを実行させた結果に応じて資金を分配することは非常に自由度の高いスマートコントラクトの1つの形といえます。
最も一般的な内容のコントラクトに関してはこれまで必要なかった参加者・オラクル間で通信が必要になるためプライバシーが低下するという見方もありますが、コントラクト内容の自由度のメリットの方が圧倒的に大きそうです。また、オラクルにとってはプログラムの実行に対して対価を要求するというビジネスモデルが実現可能になります。
改めてWASM使ってwebスクレーピングした加工データに対する署名をwitnessとするのってwitness encryptionのユースケースとしてかなり現実的で有用だなー。しかもビットコインプロトコルで稼働すると。
— Ichiro Kuwahara (@KuwaharaIchiro) September 21, 2022
ZmnSCPxj – Smart Contracts Unchainedの世界観
著名な匿名ライトニング開発者ZmnSCPxjが2019年に書いた記事で、スマートコントラクトに関するものがあります。Spotlightに和訳を投稿したのでお時間がある方はぜひご一読ください。

スマートコントラクトはプログラマブルなエスクローと捉えることができ、そのプログラムがオンチェーンに存在する必要性はなく、参加者間の合意が取れない場合に署名さえ提供してくれればよい。オラクル単独の署名をトラストするのが嫌なら複数利用すればマシになる。むしろオフチェーンに存在することで参加者間の合意によってバグfixしやすかったりプライバシーが良いというメリットがある、という記事です。
本当に正論だけの記事で、まさにDLCはこの方向に進んでいるのだなと感動しました。MeetupでBLS署名とDLCについて発表してくれた桑原さんもZmnSCPxjのこの記事に感銘を受けたと仰っていましたので、本質的な議論に興味がある方に非常におすすめです。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。


ディスカッション