mirror of
https://github.com/vacp2p/rfc-index.git
synced 2026-01-08 23:28:15 -05:00
Create rln-message-verification.msc
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# Sequence diagram for RLN Relay protocol (publishing,routing, and slashing)
|
||||
msc {
|
||||
hscale="1",
|
||||
wordwraparcs=true;
|
||||
|
||||
a [label=" "],
|
||||
b [label=" "],
|
||||
c [label=" "],
|
||||
d [label=" "],
|
||||
e [label=" "];
|
||||
|
||||
a rbox a [label="Relay Node: Publisher"],
|
||||
b rbox b [label="Relay Node: Router"],
|
||||
c rbox c [label="Relay Node"],
|
||||
d rbox d [label="Relay Node"],
|
||||
e note e [label="Membership Contract"];
|
||||
|||;
|
||||
b box b [label=" \n nullifierMap= [(nullifier, shareX, shareY)...] \n \n Initialize an empty map of the received nullifiers \n "],
|
||||
c box c [label=" \n nullifierMap= [(nullifier, shareX, shareY)...] \n \n Initialize an empty map of the received nullifiers \n "],
|
||||
d box d [label=" \n nullifierMap= [(nullifier, shareX, shareY)...] \n \n Initialize an empty map of the received nullifiers \n "];
|
||||
|||;
|
||||
...,
|
||||
a -> a [label="Keep track of epoch"],
|
||||
b -> b [label="Keep track of epoch"],
|
||||
c -> c [label="Keep track of epoch"],
|
||||
d -> d [label="Keep track of epoch"];
|
||||
a box a [label=" \n Message: the intended message \n \n epoch: the current epoch \n "];
|
||||
a box a [label=" \n A(x) = sk + H(sk, epoch)x \n \n shareX = H(message), shareY = A(shareX) \n \n nullifier = H(H(sk,epoch)) \n "];
|
||||
a box a [label=" \n zkProof: generate the proof using zkSNARK \n "];
|
||||
|||;
|
||||
a => b [label="Message, epoch, proofBundle:(shareX, shareY, nullifier, zkProof) \n "];
|
||||
b box b [label="1. If the received epoch is far from the current epoch"];
|
||||
b -x c [label="Do not relay"];
|
||||
b box b [label=" \n 2. If verification of zkProof failed \n "];
|
||||
b -x c [label="Do not relay"];
|
||||
b box b [label=" \n 3. If identical nullifier exists in the nullifierMap, \n \n extract the publisher sk \n "];
|
||||
b -x c [label="Do not relay"];
|
||||
b => e [label="Slash the publisher: Unlbock the deposit associated with sk"];
|
||||
e => b [label="x ETH"];
|
||||
b box b [label=" \n 4. If none of 1-3 happens, update the nullifierMap \n "];
|
||||
b => c [label="Relay"];
|
||||
b => d [label="Relay"];
|
||||
}
|
||||
Reference in New Issue
Block a user