署名販売とオプション取引
以前の記事でDLCという仕組みを使って先物取引をする話をした時、アリスとボブの間の先物取引においてオラクルの信頼を最小限に抑えることができることを解説しました。そこではシュノア署名を使い事前にコミットされた署名Rを公開することで、アリスとボブは両者の同意に基づく取引を署名Rを使って柔軟に作れるというものでした。
署名の売買
このコミットされた署名Rは、見方を変えるとペイメントポイントとみなすことができます。この署名Rを使うとs*Gの値を自由に求めることができたことを思い出しててみください。
署名Rからs*Gを求める
-----------------------------------
s = k + Hash(R, m)*a
s*G = k*G + Hash(R, m)*a*G
= R + Hash(R, m)*A
上記の式より、任意のメッセージmに対してのs*Gを求めることができます。よって、買い手は事前に指定したメッセージmから計算したs*Gに対して支払いをすること(正確には支払い金をロックする)で、売り手に必ずメッセージmに対する署名sを公開させることができます。こうすることで当事者間であるメッセージに対する署名をアトミックに売買することができるのですが、これの何がメリットなのか、自分の中で分かっていないので今後の調査の課題としたいと思います(もし何か分かる方がいたら教えてください)。
オプション取引
上記でみた署名の販売方法を使うことで、オプション取引をすることもできます。例えば、「ある時点tで1BTC=100万円で購入する」という権利をアリスとボブ間で作ります。そしてボブは署名Rを公開し、アリスはそのRと契約内容をメッセージmとしてs*Gを求めます。アリスはこのペイメントポイントに対してプレミアム(オプション料)を払います。ボブは署名sを使ってそのプレミアムを受け取ります。アリスはこのオプション「ある時点tで1BTC=100万円で購入する」権利を行使してもいいですし、もしBTC価格が下がっていれば、その権利を行使しないければよいのです。ここで重要なのはボブはこのコントラクトを実行できないことです。なぜならボブがコントラクトを実行するためにはアリスの署名sが必要になるからです。
このようにペイメントポイントを使うことで署名の販売やオプション取引をすることができるようになります。現在のライトニングはHTLCを使っていますが、もしペイメントポイントを使ったPTLC(Point Timelocked Contract)が実装されると色々なアプリケーションが作れるようになると期待されています。