一般的にビットコインでスマートコントラクトを実行する際はBitcoin Scriptという言語でUTXOの使用条件を記述したものを利用します。しかし、UTXOの使用条件として最も効率が良いのは「アドレスの公開鍵に対応する秘密鍵で署名できること」なので、スマートコントラクトをオフチェーンで実行した結果得られる秘密鍵を使って、その秘密鍵を手に入れた人がアンロックするというアプローチも考えられます。
今日はそんなアプローチの例として2019年のScaling Bitcoin学会で発表されたScriptless Bitcoin Lotteriesというコンセプトを紹介します。
https://youtu.be/-gdfxNalDIc?t=10370
BTCくじ
ビットコインのブロックチェーンを使ってくじをするというのは2012年から運営されているSatoshiDiceというサービスが有名です。最近では下火ですが、ビットコインと暗号を使ってフェアなギャンブルを行うのは昔からこの業界特有の減少です。下に数年前にProvably Fair Gamblingについて書いた記事のリンクを貼っておきます。
https://www.facebook.com/.../bitc.../posts/2516524518443874/
上の記事内でも説明するように、BTCでフェアな賭け事をするプロトコルはHash Commitmentによるものがほとんどです。要するに、参加者や主催者が事前に選んだ数値を検証可能な形(ハッシュ値)でコミットすることで、フェアに行われたことを証明できる、あるいはフェアに行われることを強制できるという仕組みです。
カストディアルなギャンブルサイトでも暗号学的な強制力以外は実現できますが、Hash CommitmentによるBTCくじをトラストレスに行うとなると冒頭で述べたとおりBitcoin Scriptの使用が必要になります。ライトニングチャネルのように、相手が協力的である場合にはそこそこブロックチェーンの使用量を効率化することができるでしょうが、ギャンブルで負けた相手が協力してくれなかった場合にオンチェーンに行くトランザクションサイズが大きく、コストがかかってしまいます。またギャンブルの利用、下手するとギャンブルの内容に関しても推測されることがあり、プライバシー面でも問題があるといえます。
Scriptless Bitcoin Lotteriesはこの問題を改善すべく、Adaptor SignaturesとOblivious Signingという2つの概念を利用します。
ADAPTOR SIGNATURESとは
Adaptor Signaturesとはある秘密の値にコミットした署名です。なにそれ?という感じですが、2つの性質を説明したほうが理解しやすいかもしれません:
・Adaptor Signatureと秘密の値がわかれば、使える署名になる
・Adaptor Signatureと完成した署名が揃えば、秘密の値がわかる
この性質からAdaptorや署名、秘密の値のやりとりを通してさまざまな機能が数学的に実現できる、というのが大まかなイメージです。今日はScriptless Bitcoin Lotteriesの仕組みを通して一例を解説します。
Adaptor Signatureからできた署名は他人からは普通の署名に見えるので、スマートコントラクトを実行した結果ということが署名からはわからず、プライバシー面でも優れています。
OBLIVIOUS SIGNINGとは
まずは根底にあるOblivious Transferという概念を知る必要があります。