Quisquis
Quisquis: A New Design for Anonymous Cryptocurrencies
transcripts quisquis
core techniques: Upgradable public key
Existing alternatives for anonymous payments
Tumblers
centralized tumblerは送り手がtumblerに送金し、tumblerが集権的にdestinationに送金する。
decentralized tumblerはMPCとRSAを組み合わせた手法。
Ring signatures
公開鍵の集合と署名に対して、その集合のどれか1つの公開鍵に対応する秘密鍵によって署名されていることが保証される署名方式。
秘密鍵を持っている人しか公開鍵はアップデートできない。
それぞれの公開鍵にはhomomorphic propertyを持つcommitted balanceが紐づく。
アカウントは公開鍵とそのcommitmentから成る。
自分からprime Aに送金し、outputのpublickeyを送金時にupdate。この送金はtransferFrom的に送金者が実行する。Prima Aは送金者が管理している。
$ Gen \to pk = (sG, (s+x)G), sk = x
$ Update(pk, r) \to pk' = ((s+r)G, (s+x+r)G)
$ acct = (pk, Com(pl, bl))
$ pk = (sG, (s + x)G), Com(pk, bl) = ((s+r)G, (bl+s+x+r)G)
lifted elgamal for homomorphic encryption of balances
zkp
outputの中のaccountは正しくinputをupdateしたか
updateは合計のvalueを正しく保持しているか。(プラスマイナスゼロになっているか)
recipientのbalanceが減っていないか (range proof)
outputの中のsender accountは正しいbalanceを持っているか (range proof)
非同期:同じブロック高で同じ公開鍵に対する更新が起きた場合は先に取り込まれた方は更新できて、後の方はredoneする必要がある。(annoying frontrunning attackが可能)
特定のユーザーに対してupdateを繰り返し行うことで鍵長をとても長くする攻撃
https://gyazo.com/be1bf1f7f47e8390e8ecee84a22968d6
https://gyazo.com/69e4c55743a0ae4400c5db7a7e7fde46
account listはアップデートされていくため、更新された最新のアカウントから順序づきリストになる。