@@ -93,19 +93,26 @@ For development purposes, we'll first use autorelay mode to handle message execu
9393<Steps >
9494  ### Setting up test networks  
9595
96+ 
97+     <Callout  type = " warning"   emoji = " ⚠️"  >
98+         Do * not*  attempt to run these steps with the [ devnet] ( ../tools/devnet ) .
99+         At this point we are relying on the autorelay functionality of Supersim.
100+         The devnet does not have this, you have to send the executing message yourself, as explained [ here] ( #implement-manual-message-relaying ) .
101+     </Callout >
102+ 
96103  1 .   In the directory where Supersim is installed, start it with autorelay.
97104
98105      ``` sh 
99-       supersim
106+       ./ supersim --interop.autorelay 
100107      ``` 
101108
102109      Supersim creates three ` anvil `  blockchains:
103110
104-       \ |  Role     | ChainID | RPC URL                                        |
105-       \ |  -------\*     | ------: | ---------------------------------------------\*     |
106-       \ |  L1       |     900 | [ http://127.0.0.1:8545 ] ( http://127.0.0.1:8545 )  |
107-       \ |  OPChainA |     901 | [ http://127.0.0.1:9545 ] ( http://127.0.0.1:9545 )  |
108-       \ |  OPChainB |     902 | [ http://127.0.0.1:9546 ] ( http://127.0.0.1:9546 )  |
111+       |  Role     |  ChainID |  RPC URL                                        | 
112+       |  --------  |  ------: |  ---------------------------------------------  | 
113+       |  L1       |      900 |  [ http://127.0.0.1:8545 ] ( http://127.0.0.1:8545 )  | 
114+       |  OPChainA |      901 |  [ http://127.0.0.1:9545 ] ( http://127.0.0.1:9545 )  | 
115+       |  OPChainB |      902 |  [ http://127.0.0.1:9546 ] ( http://127.0.0.1:9546 )  | 
109116
110117  2 .   In a separate shell, store the configuration in environment variables.
111118
@@ -141,8 +148,8 @@ For development purposes, we'll first use autorelay mode to handle message execu
141148  2 .   In ` src/Greeter.sol `  put this file.
142149      This is a variation on [ Hardhat's Greeter contract] ( https://github.com/matter-labs/hardhat-zksync/blob/main/examples/upgradable-example/contracts/Greeter.sol ) .
143150
144-   ``` solidity  file=<rootDir>/public/tutorials/Greeter.sol#L1-L20 hash=b3c5550bcc2cc4272125388ef23a67e7
145-    ``` 
151+          ``` solidity  file=<rootDir>/public/tutorials/Greeter.sol#L1-L20 hash=b3c5550bcc2cc4272125388ef23a67e7
152+           ``` 
146153
147154  3 .   Deploy the ` Greeter `  contract to Chain B and store the resulting contract address in the ` GREETER_B_ADDR `  environment variable.
148155
@@ -441,10 +448,10 @@ In production we will not have this, we need to create our own executing message
441448
442449  2 .   Create or replace ` src/app.mts `  with this code.
443450
444-   ``` solidity  file=<rootDir>/public/tutorials/app.mts#L1-L51 hash=8f6f776884b8e37ae613f7aea8cd6a3b
445-    ``` 
451+          ``` solidity  file=<rootDir>/public/tutorials/app.mts#L1-L51 hash=8f6f776884b8e37ae613f7aea8cd6a3b
452+           ``` 
446453
447-   3 .   Run the program, see that a greeting from chain A is related  to chain B.
454+   3 .   Run the program, see that a greeting from chain A is relayed  to chain B.
448455
449456      ``` sh 
450457      npm start
@@ -490,50 +497,50 @@ In production we will not have this, we need to create our own executing message
490497
491498  1 .   Replace ` src/app.mts `  with:
492499
493-   ``` js  file=<rootDir>/public/tutorials/app .mts#L1-L51  hash=8f6f776884b8e37ae613f7aea8cd6a3b 
494-   ``` 
500+          ``` typescript  file=<rootDir>/public/tutorials/app_v2 .mts hash=4811b7946a82b2815c103da8a65c1334 
501+          ``` 
495502
496-   <details >
497-     <summary >Explanation</summary >
503+          <details >
504+              <summary >Explanation</summary >
498505
499-     1 .   ** Import Required Libraries** 
506+              1 .   ** Import Required Libraries** 
500507
501-     *    Imports functions from ` viem `  for wallet creation, HTTP transport, and contract interactions.
502-     *    Imports ` @eth-optimism/viem `  utilities for handling OP-Stack-specific actions and interoperability.
503-     *    Loads ABI definitions from ` Greeter.json `  and ` GreetingSender.json `  for contract interactions.
508+              *    Imports functions from ` viem `  for wallet creation, HTTP transport, and contract interactions.
509+              *    Imports ` @eth-optimism/viem `  utilities for handling OP-Stack-specific actions and interoperability.
510+              *    Loads ABI definitions from ` Greeter.json `  and ` GreetingSender.json `  for contract interactions.
504511
505-     2 .   ** Initialize Wallet Clients** 
512+              2 .   ** Initialize Wallet Clients** 
506513
507-     *    Uses ` privateKeyToAccount `  to generate an account from an environment variable.
508-     *    Creates ` walletA `  for chain ` supersimL2A `  and ` walletB `  for chain ` supersimL2B ` , extending them with Viem's public and OP-Stack-specific actions.
514+              *    Uses ` privateKeyToAccount `  to generate an account from an environment variable.
515+              *    Creates ` walletA `  for chain ` supersimL2A `  and ` walletB `  for chain ` supersimL2B ` , extending them with Viem's public and OP-Stack-specific actions.
509516
510-     3 .   ** Get Contract Instances** 
517+              3 .   ** Get Contract Instances** 
511518
512-     *    Retrieves contract instances for ` greeter `  on ` walletB `  and ` greetingSender `  on ` walletA `  using ` getContract ` .
513-     *    The addresses are taken from environment variables, and the clients are set to the respective wallets.
519+              *    Retrieves contract instances for ` greeter `  on ` walletB `  and ` greetingSender `  on ` walletA `  using ` getContract ` .
520+              *    The addresses are taken from environment variables, and the clients are set to the respective wallets.
514521
515-     4 .   ** Direct Greeting on Chain B** 
522+              4 .   ** Direct Greeting on Chain B** 
516523
517-     *    Calls ` setGreeting `  on ` greeter `  to store a greeting directly on chain B.
518-     *    Waits for the transaction to be confirmed using ` waitForTransactionReceipt ` .
519-     *    Reads and logs the greeting stored on chain B.
524+              *    Calls ` setGreeting `  on ` greeter `  to store a greeting directly on chain B.
525+              *    Waits for the transaction to be confirmed using ` waitForTransactionReceipt ` .
526+              *    Reads and logs the greeting stored on chain B.
520527
521-     5 .   ** Cross-Chain Greeting via Chain A** 
528+              5 .   ** Cross-Chain Greeting via Chain A** 
522529
523-     *    Calls ` setGreeting `  on ` greetingSender `  to send a greeting through chain A.
524-     *    Waits for the transaction receipt on chain A.
530+              *    Calls ` setGreeting `  on ` greetingSender `  to send a greeting through chain A.
531+              *    Waits for the transaction receipt on chain A.
525532
526-     6 .   ** Retrieve and Relay the Cross-Chain Message** 
533+              6 .   ** Retrieve and Relay the Cross-Chain Message** 
527534
528-     *    Extracts the message from the transaction receipt using ` createInteropSentL2ToL2Messages ` .
529-     *    Relays the message to chain B using ` walletB.interop.relayMessage ` .
530-     *    Waits for confirmation of the relay transaction.
535+              *    Extracts the message from the transaction receipt using ` createInteropSentL2ToL2Messages ` .
536+              *    Relays the message to chain B using ` walletB.interop.relayMessage ` .
537+              *    Waits for confirmation of the relay transaction.
531538
532-     7 .   ** Verify the Updated Greeting on Chain B** 
539+              7 .   ** Verify the Updated Greeting on Chain B** 
533540
534-     *    Reads the greeting from ` greeter `  after the relay process.
535-     *    Logs the updated greeting, showing that it was successfully relayed from chain A to chain B.
536-   </details >
541+              *    Reads the greeting from ` greeter `  after the relay process.
542+              *    Logs the updated greeting, showing that it was successfully relayed from chain A to chain B.
543+          </details >
537544
538545  2 .   Rerun the JavaScript program, and see that the message is relayed.
539546
@@ -546,22 +553,22 @@ In production we will not have this, we need to create our own executing message
546553  The same contracts are deployed on [ the devnet] ( ../tools/devnet ) .
547554  You can relay messages in exactly the same way you'd do it on Supersim.
548555
549-   \ |  Contract         | Network                                      | Address                                                                                                                                                                               |
550-   \ |  ---------------\*    | -------------------------------------------\*    | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\*    |
551-   \ |  ` Greeter `         | [ Devnet 1] ( ../tools/devnet#interop-devnet-1 )  | [ ` 0x1A183FCf61053B7dcd2322BbE766f7E1946d3718 ` ] ( https://sid.testnet.routescan.io/address/0x1A183FCf61053B7dcd2322BbE766f7E1946d3718 )                                                    |
552-   \ |  ` GreetingSender `  | [ Devnet 0] ( ../tools/devnet#interop-devnet-1 )  | [ ` 0x9De9f84a4EB3616B44CF1d68cD1A9098Df6cB25f ` ] ( https://sid.testnet.routescan.io/address/0x9De9f84a4EB3616B44CF1d68cD1A9098Df6cB25f/contract/420120000/readContract?chainid=420120000 )  |
556+   |  Contract         |  Network                                      |  Address                                                                                                                                                                               | 
557+   |  ---------------   |  -------------------------------------------   |  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------   | 
558+   |  ` Greeter `         |  [ Devnet 1] ( ../tools/devnet#interop-devnet-1 )  |  [ ` 0x1A183FCf61053B7dcd2322BbE766f7E1946d3718 ` ] ( https://sid.testnet.routescan.io/address/0x1A183FCf61053B7dcd2322BbE766f7E1946d3718 )                                                    | 
559+   |  ` GreetingSender `  |  [ Devnet 0] ( ../tools/devnet#interop-devnet-1 )  |  [ ` 0x9De9f84a4EB3616B44CF1d68cD1A9098Df6cB25f ` ] ( https://sid.testnet.routescan.io/address/0x9De9f84a4EB3616B44CF1d68cD1A9098Df6cB25f/contract/420120000/readContract?chainid=420120000 )  | 
553560
554-   To modify the program to relay messagez  on devnet, follow these steps:
561+   To modify the program to relay messages  on devnet, follow these steps:
555562
556563  1 .   In ` src/app.mts ` , replace these lines to update the chains and contract addresses.
557564
558-       \ |  Line number | New content                                                                |
559-       \ |  ----------: | -------------------------------------------------------------------------\*    |
560-       \ |           10 | ` import { interopAlpha0, interopAlpha1 } from '@eth-optimism/viem/chains' `  |
561-       \ |           24 | `     chain: interopAlpha0, `                                                 |
562-       \ |           32 | `     chain: interopAlpha1, `                                                 |
563-       \ |           40 | `     address: "0x1A183FCf61053B7dcd2322BbE766f7E1946d3718", `                |
564-       \ |           46 | `     address: "0x9De9f84a4EB3616B44CF1d68cD1A9098Df6cB25f", `                |
565+       |  Line number |  New content                                                                | 
566+       |  ----------: |  -------------------------------------------------------------------------   | 
567+       |           10 |  ` import { interopAlpha0, interopAlpha1 } from '@eth-optimism/viem/chains' `  | 
568+       |           24 |  `     chain: interopAlpha0, `                                                 | 
569+       |           32 |  `     chain: interopAlpha1, `                                                 | 
570+       |           40 |  `     address: "0x1A183FCf61053B7dcd2322BbE766f7E1946d3718", `                | 
571+       |           46 |  `     address: "0x9De9f84a4EB3616B44CF1d68cD1A9098Df6cB25f", `                | 
565572
566573  2 .   Set ` PRIV_KEY `  to the private key of an address that has Sepolia ETH on the two chains.
567574
0 commit comments