@@ -56,8 +56,9 @@ This `interopHash` serves as a globally unique identifier that can be used on an
5656#### How do I get the proof
5757
5858You’ll notice that ** verifyInteropMessage** has a second argument — a proof that you need to provide. This proof is a
59- Merkle tree proof (more details below). You can obtain it by querying the Settlement Layer (Gateway) or generating it
60- off-chain by examining the Gateway state on L1.
59+ Merkle tree proof (more details below). You can obtain it by querying the
60+ [ chain] ( https://docs.zksync.io/build/api-reference/zks-rpc#zks_getl2tol1msgproof ) , or generate it off-chain - by
61+ looking at the chain's state on L1
6162
6263#### How does the interop message differ from other layers (InteropTransactions, InteropCalls)
6364
@@ -129,49 +130,43 @@ from them at the end of the batch, and sends this tree to the SettlementLayer (G
129130
130131![ sendtol1.png] ( ../img/sendtol1.png )
131132
132- The Gateway will verify the hashes of the messages to ensure it has received the correct preimages. Once the proof for
133- the batch is submitted (or more accurately, during the "execute" step), it will add the root of the Merkle tree to its
134- ` globalRoot ` .
133+ The settlement layer receives the messages and once the proof for the batch is submitted (or more accurately, during the
134+ "execute" step), it will add the root of the Merkle tree to its ` messageRoot ` (sometimes called ` globalRoot ` ).
135135
136136![ globalroot.png] ( ../img/globalroot.png )
137137
138- The ` globalRoot ` is the root of the Merkle tree that includes all messages from all chains. Each chain regularly reads
139- the globalRoot value from the Gateway to stay synchronized.
138+ The ` messageRoot ` is the root of the Merkle tree that includes all messages from all chains. Each chain regularly reads
139+ the messageRoot value from the Gateway to stay synchronized.
140140
141141![ gateway.png] ( ../img/gateway.png )
142142
143143If a user wants to call ` verifyInteropMessage ` on a chain, they first need to query the Gateway for the Merkle path from
144- the batch they are interested in up to the ` globalRoot ` . Once they have this path, they can provide it as an argument
144+ the batch they are interested in up to the ` messageRoot ` . Once they have this path, they can provide it as an argument
145145when calling a method on the destination chain (such as the ` openSignup ` method in our example).
146146
147147![ proofmerklepath.png] ( ../img/proofmerklepath.png )
148148
149- #### What if the Gateway doesn’t respond
149+ #### What if Chain doesn’t provide the proof
150150
151- If the Gateway doesn’t respond, users can manually re-create the Merkle proof using data available on L1. Every
151+ If the chain doesn’t respond, users can manually re-create the Merkle proof using data available on L1. Every
152152interopMessage is also sent to L1.
153153
154- #### Global roots change frequently
154+ #### Message roots change frequently
155155
156- Yes, global roots update continuously as new chains prove their blocks. However, chains retain historical global roots
156+ Yes, message roots update continuously as new chains prove their blocks. However, chains retain historical message roots
157157for a reasonable period (around 24 hours) to ensure that recently generated Merkle paths remain valid.
158158
159- #### Is this secure? Could a chain operator, like Chain D, use a different global root
159+ #### Is this secure? Could a chain operator, like Chain D, use a different message root
160160
161- Yes, it’s secure. If a malicious operator on Chain D attempted to use a different global root, they wouldn’t be able to
161+ Yes, it’s secure. If a malicious operator on Chain D attempted to use a different message root, they wouldn’t be able to
162162submit the proof for their new batch to the Gateway. This is because the proof’s public inputs must include the valid
163- global root.
164-
165- #### What if the Gateway is malicious
166-
167- If the Gateway behaves maliciously, it wouldn’t be able to submit its batches to L1, as the proof would fail
168- verification. A separate section will cover interop transaction security in more detail.
163+ message root.
169164
170165### Other Features
171166
172167#### Dependency Set
173168
174- - In ElasticChain, this is implicitly handled by the Gateway. Any chain that is part of the global root can exchange
169+ - In ElasticChain, this is implicitly handled by the Gateway. Any chain that is part of the message root can exchange
175170 messages with any other chain, effectively forming an undirected graph.
176171
177172#### Timestamps and Expiration
0 commit comments