BLS署名によるアナウンスメントフリーなDLC
これまでのDLCは、シュノア署名によるコミットされたRを使って将来のイベントをメッセージとし sG = R + Hash(R, m)A を計算していた。そして、そのsGを使いCETと呼ばれるコントラクト実行トランザクションを暗号化しオラクルの署名sで復号し(これをアダプター署名と呼ぶ)、復号したトランザクションをブロードキャストするという仕組みであった。
BLS署名によるDLC
先日DLC-DEVのメーリスにBLS署名を使ったDLCの提案がされていた。これには先行研究があってその論文はこちらになる。今回提案されたのはBLS署名を使うことで、コミットされたRを使う必要がなく、事前にオラクルの公開鍵だけを知っていればよいというもの(上図の公開鍵Aのみでよい)。BLS署名はシュノア署名と違って署名時にランダム値(nonce、上図ではk)を使う必要がないため、Rがなくても署名検証できる特性を利用している。
これによりオラクルは attestaion(証明)のみすればよく、事前にコミットするものやイベントへの署名による announcement(発表)をする必要がなくなるらしい。
具体的には、ある時刻のBitMexのBXBT価格の証明を依頼するだけで、その証明を返すことができる。ユーザーはオラクルのエンドポイント/attestを以下のパラメータで呼び出す。オラクルはurl, kind filterを使い証明するためのデータを取得し、そのデータに対してBLS署名をして返却する。
{
"input" : {
"url": "'https://www.bitmex.com/api/v1/instrument/compositeIndex?symbol=.BXBT&startTime=2022-08-03T12:00:00.000Z",
"kind" : "jq",
"filter": ".[]|select(.timestamp =="2022-08-03T12:00:00.000Z")|select(.symbol == ".BXBT")|.lastPrice | round",
},
"output" : {
"kind" : "bit-decomposition",
"n_bits" : 20
}
}
この例をみると、オラクルは事前にBitmexのエンドポイントさえ知る必要がないことが分かる。なぜなら、attestの依頼があった時に初めて何を証明するかが分かるから。
これまでのシュノア署名を使ったDLCでは、イベントやそのアナウンスメントがアテステーションに先立ち必須であったが、BLS署名を使うことで不要となり、より柔軟なアテステーションが可能となると期待される。
---
自分がまだ理解していないからだが、DLCが画期的なのは事前にコミットされたRで将来の予測mに対するsGを求めることができることだと思っていたが、それをせずに将来の予測の結果だけをアテステーションするってどういうこと。。。要はコミットなしにどうやって将来予測の契約を作れるのだろうか。