Algorand: 仮想通貨のためのスケールするビザンチン合意
読んだ論文は、
ざっくりとこんな感じ、
- Verifiable Random Functions (VRF): private key と文字列 (seed) を入力すると、ハッシュと証明を出力する。その証明と対応する public key で正しいハッシュであることを検証可能。
- cryptographic sortition: 暗号学的抽選。VRF を用いて所有コイン量に比例して当選する。VRF のため、public key で当選したことを検証可能。
- cryptographic sortition で block proposer と committee を抽選する。
- トランザクション(電子証明付きの送金データ)と提案される新しいブロックは gossip protocol で伝播する
- block proposer に当選したユーザはトランザクションをまとめて当選した証明つきで新しいブロックを提案する
- 提案されたブロックはハッシュで優先付けする。そのラウンドの最高優先度ブロック以外は破棄しゴシップしない。
- BA⋆ と呼ぶビザンチン合意プロトコルで合意するブロックを決定する。
- committee に当選したユーザは、だれの新しいブロックに合意するか決定し、当選した証明と一緒にメッセージを伝播する
- 次のステップの committee に当選したユーザは前のステップで合意したブロックに合意するか、を何度か繰り返す。
- committee の一定割合以上の committee vote をもって合意とする
BA⋆ の説明が雑なので論文を読んだほうがよい。
一定の確率で committee に当選し、一定割合以上の committee vote をもって合意とみなすため、 基本的にすべてのコイン保持者はオンラインであることを想定していると思われる。 多くのコイン保持者が参加していないと合意に達することができない。
もう一点気になるのが、コイン保持量に応じてゴシップ相手を選ぶということは だれがどの IP アドレスか知っていることになっているように思われる。 そうだとすると、お金持ちほど当選しやすいので、お金持ちが攻撃されるリスクが高まるのではないだろうか。
Vault
Algorand をベースにした Vault の論文も読んだ。 1000億アカウントと100万のオンラインクライント (100 billion accounts and 1 million online clients) という表現があるので、 オフラインのアカウントが大量にあっても問題ないのだろうか。