本稿でも何度か取り上げているDLC (Discreet Log Contracts)はビットコインを使ってトラストを最小化した差金決済取引を行うプロトコルです。

5分でわかるDiscreet Log Contracts
こんばんは。最近Discreet Log Contractsが話題に上ることが多いように思うので、どういうもので、どういう仕組みなのか、そしてどのようなものが実現できるのかを5分で理解できる記事を書いてみます。 DISCREET LOG CONTRACTSの狙い Discreet Log Contractsとは、2者間の、スケーラブルで、結果のデータを報告するオラクルに対するトラストを最小限にとどめた、プライベートなスマートコントラクトです。横文字が多いですが、オンチェーンでトラストレスに先物取引などを行うシンプルな仕組みです。 Discreet = 秘密を守るしばしば数学で登場するD…

DLCのプロトコルを進化を続けており、昨夏にBLS署名を使った新しい方式が提案されました。画期的な内容で、先日開催されたDiamond Hands Meetupで大まかな内容の発表に刺激を受けたのでここで共有します。

イベントのページから資料をいくつか引用しています。

従来型のDLC:シュノア署名の応用

上記の「5分でわかる」記事では、オラクルが発表した結果を受けてどのようにその結果に応じたトランザクションに署名できるのかについては触れていませんでした。一番シンプルな発想は「オラクルに署名を依頼する」ことですが、それではオラクルを完全にトラストしているだけで、プライバシーも保護されません。

実際に使われているDLCではシュノア署名を応用したアダプタ署名という技術を利用しています。オラクルは事前に結果に応じて発表するアダプタ・シークレットという秘密の値を結果の数だけ生成し、それぞれについてアダプタ・ポイントというものを公開します。このアダプタ・ポイントを利用して生成した公開鍵に対して資金をロックすることで、後にオラクルが結果に応じて1つだけ公開したアダプタ・シークレットに対応したものの秘密鍵が復元でき、ユーザー達はこの秘密鍵を利用して資金の分配を行えます。

シュノア署名の仕組み。秘密鍵sとランダムに生成したナンスrで署名する
アダプタ・ポイントTとナンスrを使って生成した秘密鍵s'を用意すると…
アダプタ・シークレットtを加算するだけで秘密鍵sを復元できる

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

余談ですが、DLCの作成に時間がかかってしまう問題に対して2022年に話題となったソフトフォーク提案OP_CTVが効果的という記事もご覧ください。

OP_CTVが導入されたらDLCは劇的に使いやすくなる
ビットコインへの機能追加案として積極的に推す人が多いものの1つにOP_CTVがあります。コインを使用するときのトランザクションの内容の一部にあらかじめコミットできるこの機能がもし導入されたら、DLCの使用時に大きなメリットがあるという内容の投稿がDLC開発者のメーリングリストにされました。 今日はDLCメーリングリストへの投稿を元に、OP_CTVの導入がどのようにDLCを改善するのかを解説します。 https://mailmanlists.org/.../dlc.../2022-January/000102.html OP_CTVとは 最近こちらで触れることも多いですが、ご存知のない…

BLS署名を使うとオラクルが単純化され、プログラムの実行にコミットすることもできるようになる

アダプタ署名を利用したDLCでは、オラクルが事前にイベントの結果に対するコミットメントを多数用意し、契約満期時に結果に応じた署名を発表する必要がありました。ところが昨年夏、Boneh-Lynn-Shacham (BLS)署名を用いた新しいDLCスキームが提案され、画期的なものとしてDLC界隈を賑わせました。

BLS署名の説明は難しいので、比較的わかりやすかった英語の記事をおすすめしておきます。また、DLCに応用するスキーム自体も完全には理解できていないので、いつも参考にしている安土さんのブログ記事をリンクしておきます。かなり複雑そうではあります。

BLS署名を用いたDLC作成・決済の図解

この提案の面白いところは3つあります。

1つめは、ビットコイン自体はBLS署名に対応していないにも関わらず活用できる点です。ビットコイントランザクションの部分は既存のDLCと変わらず、オラクルが鍵を提供する方法にBLS署名を利用するという話のようです。ソフトフォークやハードフォークの必要性はプロトコルの実現可能性を大きく損なうものなので、その必要がないことは大きな強みだと思います。

2つめはオラクルがステートレスになることです。以前のように多数のコミットメントやシークレットを生成したり保管する必要がありません。オラクルのセットアップや運用が非常に簡単になるため、データ提供を業とする企業や取引所などが気軽に参入できるようになるでしょう。

3つめはオラクルに任意のプログラムを実行させた結果についてDLCを作ることができることです。このため、より複雑で特殊なコントラクトの作成が簡単になります。(以前のモデルではすでにオラクルが対応している一般的なコントラクトでなければオラクルに頼んで作ってもらう必要があった)

オラクルにプログラムを渡して実行させた結果で資金を分配する

オラクルがWebから取得してきたデータに対して任意のWASMプログラムを実行させるという構想もあり、このように第三者にプログラムを実行させた結果に応じて資金を分配することは非常に自由度の高いスマートコントラクトの1つの形といえます。

最も一般的な内容のコントラクトに関してはこれまで必要なかった参加者・オラクル間で通信が必要になるためプライバシーが低下するという見方もありますが、コントラクト内容の自由度のメリットの方が圧倒的に大きそうです。また、オラクルにとってはプログラムの実行に対して対価を要求するというビジネスモデルが実現可能になります。

ZmnSCPxj – Smart Contracts Unchainedの世界観

著名な匿名ライトニング開発者ZmnSCPxjが2019年に書いた記事で、スマートコントラクトに関するものがあります。Spotlightに和訳を投稿したのでお時間がある方はぜひご一読ください。

ZmnSCPxj - Smart Contracts Unchained 和訳
匿名のビットコイン開発者、ZmnSCPxjが2019年に書いた記事が、自分がここ1年くらい感じてたこ

スマートコントラクトはプログラマブルなエスクローと捉えることができ、そのプログラムがオンチェーンに存在する必要性はなく、参加者間の合意が取れない場合に署名さえ提供してくれればよい。オラクル単独の署名をトラストするのが嫌なら複数利用すればマシになる。むしろオフチェーンに存在することで参加者間の合意によってバグfixしやすかったりプライバシーが良いというメリットがある、という記事です。

本当に正論だけの記事で、まさにDLCはこの方向に進んでいるのだなと感動しました。MeetupでBLS署名とDLCについて発表してくれた桑原さんもZmnSCPxjのこの記事に感銘を受けたと仰っていましたので、本質的な議論に興味がある方に非常におすすめです。