Plasma snapp
従来のPlasma(MVP, Cash, etc.)とは異なり、Plasmaチェーンのoperatorはマークルルートだけを提出するのではなく、Plasmaチェーンの状態遷移を証明するsnark proofを提出する
roll_up(後述)を元にしている
merkle treeとzk-snarks
Plasmaチェーンの状態は、以下の情報をリーフとしたマークルツリーで表現する
公開鍵、トークン量、最後にtransferしたblockheight
zk-snarksにより3つのタイプの状態遷移を証明する。3つのプログラムは、P_transfer, P_deposit, P_exit
それぞれのverification keyをルートチェーンのPlamaコントラクトが保有している
処理の優先順位は、exit > deposit > transfer
P_transfer
P_transfer(StateRootHash_i, current block, [witness transactions data]) = (StateRootHash_(i+1))
Public input
StateRootHash_i : i番目のマークルルート
current block: i番目のblock height
StateRootHash_(i+1) : i+1番目のマークルルート
private input
transactions data ※以下推測
transfer元、transfer先の変更前のリーフ
それらのリーフのmerkle proof
transfer元の署名
blockheight
プログラム: 以下の項目を検証
送信元/先のリーフが存在するか(`merkle proofがStateRootHash_iに関し正当か)
送信元の署名が正しいか
送信元の残高は十分か
送信元・先のリーフを更新した結果、マークルルートはStateRootHash_(i+1)になるか
P_deposit
P_deposit(StateRootHash_i, DepositHash_i, [witness deposit data]) = (StateRootHash_(i+1))
public input
DepositHashは、デポジットの各種情報(公開鍵とデポジット量)のハッシュ値で、デポジット申請を識別するのに使われる
全部のDeposit申請を処理したか判別できる
private input
deposit data ※以下推測
公開鍵
デポジット量
デポジットするリーフ(新しい公開鍵なら新しいリーフ)のmerkle proof
プログラム: 以下の項目を検証
略
P_exits
P_exit(StateRootHash_i, ExitRequestHash_i, [witness exit data]) = (StateRootHash_(i+1))
public input
ExitRequestHash
[address, balance, StateRootHash of block of height for request]のハッシュ
private input
exit data ※以下推測
exitするリーフ
そのmerkle proof
プログラム: 以下の項目を検証
exitするリーフを削除した結果、マークルルートはStateRootHash_(i+1)になるか
※残高の一部をexitすることはできない
※ roll_up
EdDSA署名によりリーフが変更可能なマークルツリー(によって表現されるステート)の書き換えを、snarksにより(オンチェーンでも)低コストで検証可能にするプロトコル(を実装したライブラリ)
リーフは(署名さえ含まれていれば)どんな内容でも良いので、様々なアプリケーションのデータレイヤーになり得る
EdDSA(Edwards-curve Digital Signature Algorithm) 参考 Curve25519という楕円曲線上の群構造を利用した、楕円曲線暗号の一種
シュノア署名の応用であり、DSA/ECDSAと同様、有限群に対する離散対数問題の困難さを根拠とした署名方式
DSA/ECDSAの短所への対策が各種盛り込まれている
バッチ処理 ( 複数の署名の一括検証 ) に対応している
Resources
Others
STARK
On-chain scaling with zk-snarks
スレッドの途中でVitalikによりBLS署名と署名集約を使ったスキームが提案されている
What would work is a scheme where a relayer can submit a list of (from, to, nonce, value) tuples along with a BLS aggregate sig and a Merkle root, and anyone can challenge their submission within the next two weeks, and if left unchallenged for the two week timespan it becomes accepted.
他の話メモ
Plasma Cash
履歴量の削減
Plasma XT
Data availability
Untitled