Witness EncryptionによるトラストレスなWBTC発行(の備忘録)
ちょっと面白そうな記事が公開されたのでざっと読んでみた。こういう記事が日本からでると嬉しいので、もっと出してほしい笑
記事の内容は、カストディアンを必要としないWBTCの発行についてです。以下に自分のメモ用に記事の趣旨を書きだしてみました(間違っている可能性大)。
入金用ビットコインアドレスの生成
入金用ビットコインアドレスの秘密鍵はジェネレーターによって生成される。ジェネレーターが不正をすればWBTC返済前に勝手に出金できてしまうので、複数人でのN-of-Nマルチシグを生成することでセキュリティを高めることができる。この秘密鍵はWitness Encryptionとよばれる方法で暗号化され、そのwitnessで復号できる。
入金
上記で生成されたアドレスへ入金し、そのProofをコントラクトへ提出することでWBTCを受け取ることができる。正当なProofかの判断として、最長チェーン判定等が必要。
Witness Encryption
あるinstance xに対するwitnessがあると復号できるものなので、このxは「WBTCを返済したか」の判定プログラムで、そのwitnessをもって秘密鍵の復号ができる(のかな?)。
WE.Enc(1λ,x,m): It takes a security parameter λ, an instance x, and a message m ∈ {0,1}. It returns a ciphertext ct.
WE.Dec(ct,w): It takes a ciphertext ct and a witness w. It returns a message m iff R(x,w) holds.
出金
WBTCを返済しそのwitnessをコントラクトへ提出することで、秘密鍵の復号が可能。その秘密鍵を使って出金する。
---
肝はN-of-Nの秘密鍵の生成と暗号化、その復号にはwitnessが必要だということ、ゼロ知識証明をふんだんに活用していることかなと思います。秘密鍵の生成は事前に必要なので、そこの部分さえセキュリティの担保ができれていればうまくいきそうかなと思いました。