-
Notifications
You must be signed in to change notification settings - Fork 113
/
Copy pathsequence-diagram-simplified.puml
97 lines (79 loc) · 1.79 KB
/
sequence-diagram-simplified.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
@startuml
actor Client
participant "Espresso\nConfirmation Layer" as Esp
participant Rollup as L2
participant "Light Client\nContract" as LC
participant "Rollup\nContract" as L2_L1
Client -> L2 : L2 transaction
note right
1.
end note
L2 -> L2: L2 Block
note right
2.
end note
Client <-- L2 : New <i>trusted</i> state
note left
Clients that trust a rollup server
can get the updated state without
waiting for the state update proof
or confirmation from Espresso.
end note
L2 -> Esp : Espresso transaction:\nL2 Block, Rollup ID
note right
3.
end note
Esp -> Esp : Consensus orders\nEspresso transactions\ninto Espresso blocks
par Interested parties process block
Client <-- Esp : Block
Client -> Client : Execute block
note left
Optionally, clients can check for
confirmations themselves to quickly
know about new L2 blocks confirmed
by Espresso.
end note
else
Esp -> L2 : Block
note right
4.
end note
L2 -> L2 : Execute block
else
Esp -> LC : Block Commitment +\nProof of consensus
note right
5.
end note
LC -> LC: Validate Proof of consensus\nStore commitmenet
end
par Interested parties process new state
Client <-- Esp : Block Commitment +\nProof of consensus
Client -> Client : Validate Proof of consensus
Client <-- L2 : New State\nProof
Client -> Client : Validate proof\nagainst commitment
note left
Optionally, clients can check
proofs themselves to quickly
get the updated state without
trusting a full node or
executing a whole block.
end note
else
L2 -> L2_L1 : New state\nProof
note right
6.
end note
L2_L1 -> LC : Read sequence
L2_L1 <-- LC: Commitments
note right
7.
end note
L2_L1 -> L2_L1 : Validate proof\nagainst sequence
Client <-- L2_L1 : New <i>certified</i> state
note left
With some latency, clients receive
the latest state with no trust <i>or</i>
computation, from the L1.
end note
end
@enduml