From 1367722692db7bfe3ee5634d2de1f20465e5b920 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Mon, 12 May 2025 10:34:22 -0700 Subject: [PATCH 01/21] Add message expiration doc --- pages/interop/_meta.json | 1 + pages/interop/message-expiration.mdx | 44 ++++++++++++++++++++++++++++ words.txt | 6 ++-- 3 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 pages/interop/message-expiration.mdx diff --git a/pages/interop/_meta.json b/pages/interop/_meta.json index 6eeac3008..8506dbcd9 100644 --- a/pages/interop/_meta.json +++ b/pages/interop/_meta.json @@ -12,6 +12,7 @@ "explainer": "Superchain interop explainer", "predeploy": "Superchain interop predeploys", "message-passing": "Superchain interop message passing", + "message-expiration": "Message expiration", "reading-logs": "Reading logs", "op-supervisor": "OP Supervisor", "superchain-eth-bridge": "Superchain ETH bridge", diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx new file mode 100644 index 000000000..eb7b96a79 --- /dev/null +++ b/pages/interop/message-expiration.mdx @@ -0,0 +1,44 @@ +--- +title: Message expiration +description: What message expiration is, why it exists, and how to reemit a previously sent message if it has expired and was never relayed. +lang: en-US +content_type: guide +topic: message-expiration +personas: + - protocol-developer + - chain-operator + - app-developer +categories: + - protocol + - interoperability + - cross-chain-messaging + - security + - block-safety + - message-passing + - reorgs + - superchain +is_imported_content: 'false' +--- + +# Message expiration + +[Initiating messages](/interop/message-passing) sent between OP Stack chains have a limited validity period called the expiry window. Once this window elapses, the initiating message becomes invalid and can no longer be executed on the destination chain. + +If a message expires before being relayed, developers can reemit the message on the source chain. This triggers a fresh `SentMessage` event, allowing offchain infrastructure to pick it up and relay it again ensuring successful delivery. + +## The expiry window + +The expiry window is an offchain constant that defines how long a cross-chain message remains valid. For the [Superchain interop cluster](/interop/explainer), messages must be executed within 7 days (604,800 seconds) of the initiating message being sent. + +After this period, a message can no longer be executed on the destination chain unless the event is remitted on the source chain. + +## Reemitting an expired message + +The `resendMessage` function on the [`L2ToL2CrossDomainMessenger`](/interop/message-passing) contract allows developers to reemit a message that was sent but not yet relayed. + +This emits a new `SentMessage` log with the same content as the original message, enabling offchain relayers to pick it up again. + +The process to reemit an expired message: + +1. Call `resendMessage(messageHash)` on the origin chain to reemit the message event. The contract verifies the message hash was originally sent. +2. Relay the new message as normal. diff --git a/words.txt b/words.txt index a3420530c..e91e82644 100644 --- a/words.txt +++ b/words.txt @@ -91,12 +91,10 @@ datacap DATACAP datadir DATADIR +devdocs devnet Devnet devnets -Devs -Devdocs -devdocs Devnets direnv disabletxpoolgossip @@ -334,6 +332,8 @@ quicknode Quicknode quickstarts rebalancing +reemit +Reemitting regenesis Regenesis Reimagine From 4b1224e540b99e97962eb48667693d40472d6676 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 11:04:07 -0700 Subject: [PATCH 02/21] Auto-fix: Update breadcrumbs, spelling dictionary and other automated fixes --- words.txt | 230 +++++++++++++++++++++++++++--------------------------- 1 file changed, 115 insertions(+), 115 deletions(-) diff --git a/words.txt b/words.txt index e91e82644..29c6a43b7 100644 --- a/words.txt +++ b/words.txt @@ -1,7 +1,7 @@ -accountqueue ACCOUNTQUEUE -accountslots +accountqueue ACCOUNTSLOTS +accountslots ACDC ADDI ADDIU @@ -9,58 +9,58 @@ ADDU airgap Allnodes allocs -alphanet Alphanet -alphanets +alphanet Alphanets +alphanets altda ANDI Ankr Apeworx Arweave authrpc -autorelay Autorelay +autorelay autorelayer basefee bcde -betanet Betanet -betanets +betanet Betanets +betanets BGEZ BGTZ Biconomy BLEZ -blobpool BLOBPOOL +blobpool blobspace Blockdaemon blockhash blocklists -blocklogs BLOCKLOGS -blockprofilerate +blocklogs BLOCKPROFILERATE +blockprofilerate Blockscout -blockspace Blockspace +blockspace blocktime -blocktimes Blocktimes -bloomfilter +blocktimes BLOOMFILTER +bloomfilter BLTZ Bootcamp bootnode -bootnodes -Bootnodes BOOTNODES +Bootnodes +bootnodes bottlenecked -brotli Brotli -callouts +brotli Callouts +callouts CCIP cdef Celestia @@ -72,65 +72,65 @@ chaosnet Chugsplash Clabby codebases -collateralized Collateralized +collateralized compr Comprensive -computependingblock COMPUTEPENDINGBLOCK +computependingblock confs Consen corsdomain counterfactually -crosschain Crosschain +crosschain Crossmint Dapphub daserver -datacap DATACAP -datadir +datacap DATADIR +datadir devdocs -devnet Devnet -devnets +devnet Devnets +devnets direnv -disabletxpoolgossip DISABLETXPOOLGOSSIP -discv +disabletxpoolgossip Discv +discv DIVU Drand dripcheck Drippie Eigen EIPs -enabledeprecatedpersonal ENABLEDEPRECATEDPERSONAL +enabledeprecatedpersonal enginekind -erigon Erigon -etherbase +erigon ETHERBASE +etherbase Ethernity Ethernow -ethstats ETHSTATS -evmtimeout +ethstats EVMTIMEOUT +evmtimeout excercise executability exfiltrate -exitwhensynced EXITWHENSYNCED -extradata +exitwhensynced EXTRADATA +extradata Farcaster Faultproof -fdlimit FDLIMIT +fdlimit Flashblocks Flashbots forkable @@ -141,52 +141,52 @@ Fraxtal funcationality Funct gameplay -gascap GASCAP +gascap gaslessly -gcmode GCMODE +gcmode Gelato gifs -globalqueue GLOBALQUEUE -globalslots +globalqueue GLOBALSLOTS +globalslots gokzg growthepie hardfork hardforks -healthcheck HEALTHCHECK +healthcheck healthchecks -historicalrpc HISTORICALRPC -historicalrpctimeout +historicalrpc HISTORICALRPCTIMEOUT -holesky -Holesky +historicalrpctimeout HOLESKY +Holesky +holesky IERC -ignoreprice IGNOREPRICE +ignoreprice Immunefi -inator Inator -influxdbv +inator INFLUXDBV +influxdbv initcode -ipcdisable IPCDISABLE +ipcdisable ipcfile -ipcpath IPCPATH +ipcpath IPFS Isthumus JALR -journalremotes JOURNALREMOTES -jspath +journalremotes JSPATH +jspath jwtsecret Keccak leveldb @@ -195,34 +195,34 @@ Lisk logfile logfmt Mainnets -maxage MAXAGE -maxbackups +maxage MAXBACKUPS -maxpeers +maxbackups MAXPEERS -maxpendpeers +maxpeers MAXPENDPEERS -maxprice +maxpendpeers MAXPRICE -memprofilerate +maxprice MEMPROFILERATE -merkle +memprofilerate Merkle +merkle MFHI MFLO Mgas Minato -minfreedisk MINFREEDISK -minsuggestedpriorityfee +minfreedisk MINSUGGESTEDPRIORITYFEE +minsuggestedpriorityfee Mintable Mintplex MIPSEVM Mitigations -monitorism Monitorism +monitorism Moralis Mordor mountpoint @@ -232,44 +232,44 @@ MTHI MTLO MULT multiaddr -multichain Multichain +multichain multiclient multisigs MULTU nethermind -netrestrict NETRESTRICT -networkid +netrestrict NETWORKID -newpayload +networkid NEWPAYLOAD +newpayload nextra -nocompaction NOCOMPACTION -nodekey +nocompaction NODEKEY -nodekeyhex +nodekey NODEKEYHEX +nodekeyhex nodename Nodies -nodiscover NODISCOVER -nolocals +nodiscover NOLOCALS -noprefetch +nolocals NOPREFETCH -nopruning +noprefetch NOPRUNING -nosyncserve +nopruning NOSYNCSERVE +nosyncserve Numba -offchain Offchain +offchain opchaina opchainb -opcm OPCM +opcm Openfort oplabs opnode's @@ -277,98 +277,98 @@ opstack outfile Pausability pcscdpath -pectra Pectra +pectra Pectra's -peerstore Peerstore +peerstore peerstores -permissioned Permissioned -permissionless +permissioned Permissionless +permissionless permissionlessly Perps Peta Pimlico POAP POAPs -pprof PPROF -precommitments +pprof Precommitments +precommitments preconfigured predeploy -predeployed Predeployed -predeploys +predeployed Predeploys +predeploys prefunded -preimage Preimage -preimages +preimage PREIMAGES +preimages preinstall -preinstalls Preinstalls -prestate +preinstalls Prestate +prestate prestates PREVRANDAO -pricebump PRICEBUMP -pricelimit +pricebump PRICELIMIT +pricelimit productionize productionized Protip Proxied -proxyd Proxyd +proxyd Pyth Pyth's QRNG -quicknode Quicknode +quicknode quickstarts rebalancing reemit Reemitting -regenesis Regenesis +regenesis Reimagine -rejournal REJOURNAL -remotedb +rejournal REMOTEDB +remotedb Reown Reown's replayability replayor reposts reproven -requiredblocks REQUIREDBLOCKS +requiredblocks rollouts -rollups Rollups +rollups Routescan rpckind -rpcprefix RPCPREFIX +rpcprefix rpcs RPGF -runbooks Runbooks +runbooks RWAs safedb Schnorr -sepolia -Sepolia SEPOLIA +Sepolia +sepolia seqnr -sequencerhttp SEQUENCERHTTP +sequencerhttp serv signup SLLV @@ -377,16 +377,16 @@ SLTIU SLTU smartcard snapshotlog -snapsync Snapsync +snapsync Solana Soneium soyboy Spearbit SRAV SRLV -stablecoins Stablecoins +stablecoins statefulset structs subcomponents @@ -395,21 +395,21 @@ subheaders subsecond SUBU Sunnyside -superchain -Superchain SUPERCHAIN +Superchain +superchain Superchain's superchainerc Superlend Superloans Superscan Superseed -supersim Supersim -syncmode +supersim SYNCMODE -synctarget +syncmode SYNCTARGET +synctarget syscalls SYSCON thirdweb @@ -422,8 +422,8 @@ Twei txfeecap txmgr txns -txpool TXPOOL +txpool txproxy txproxyd uncensorable @@ -434,21 +434,21 @@ Unprotect unsubmitted UPNP upstreaming -verkle VERKLE -vhosts +verkle VHOSTS -viem +vhosts Viem -viem's +viem Viem's -vmdebug +viem's VMDEBUG -vmodule +vmdebug VMODULE +vmodule xlarge XORI ZKPs ZKVM -zora Zora +zora From c24ec5877e8ca053165d7033e0094e0ea1cf819e Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 11:17:48 -0700 Subject: [PATCH 03/21] Implement review --- pages/interop/message-expiration.mdx | 8 +- pages/interop/message-passing.mdx | 14 +- words.txt | 231 ++++++++++++++------------- 3 files changed, 128 insertions(+), 125 deletions(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index eb7b96a79..2018788a9 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -22,13 +22,13 @@ is_imported_content: 'false' # Message expiration -[Initiating messages](/interop/message-passing) sent between OP Stack chains have a limited validity period called the expiry window. Once this window elapses, the initiating message becomes invalid and can no longer be executed on the destination chain. +[Initiating messages](/interop/message-passing) sent between OP Stack chains have a limited validity period called the expiry window. Once this window elapses, the initiating message becomes invalid and can no longer be referenced on the destination chain. If a message expires before being relayed, developers can reemit the message on the source chain. This triggers a fresh `SentMessage` event, allowing offchain infrastructure to pick it up and relay it again ensuring successful delivery. ## The expiry window -The expiry window is an offchain constant that defines how long a cross-chain message remains valid. For the [Superchain interop cluster](/interop/explainer), messages must be executed within 7 days (604,800 seconds) of the initiating message being sent. +The expiry window is an offchain constant, defined by op-supervisor, that defines how long a cross-chain message or event emmitted by a chain remains valid. For any chain in the [interop set](/interop/explainer), messages must be executed within 7 days (604,800 seconds) of the initiating message being sent. After this period, a message can no longer be executed on the destination chain unless the event is remitted on the source chain. @@ -40,5 +40,7 @@ This emits a new `SentMessage` log with the same content as the original message The process to reemit an expired message: -1. Call `resendMessage(messageHash)` on the origin chain to reemit the message event. The contract verifies the message hash was originally sent. +1. Call [`resendMessage`](https://github.com/ethereum-optimism/optimism/blob/a979a9444dbb482843f2a42f437ced54a8ac1053/packages/contracts-bedrock/interfaces/L2/IL2ToL2CrossDomainMessenger.sol#L110-L128) on the origin chain to reemit the message event. The contract verifies the message hash was originally sent. The call required the following parameters: + + 2. Relay the new message as normal. diff --git a/pages/interop/message-passing.mdx b/pages/interop/message-passing.mdx index b40938537..7b51dbedf 100644 --- a/pages/interop/message-passing.mdx +++ b/pages/interop/message-passing.mdx @@ -101,7 +101,7 @@ sequenceDiagram dstXdom->>dstContract: 5. Call with provided calldata ``` -1. Before the executing message is processed, the log event of the initiating message has to get to `op-supervisor` on the destination chain. +1. Before the executing message is processed, the log event of the initiating message has to get to `op-supervisor` on the destination chain before the [expiry window](/interop/message-expiration) of 7 days. 2. The autorelayer, the application, or a contract calling on the application's behalf calls [`L2ToL2CrossDomainMessenger.relayMessage`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/L2ToL2CrossDomainMessenger.sol#L150-L203). This call includes the message that was sent (`_sentMessage`), as well as the [fields required to find that message (`_id`)](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/interfaces/L2/ICrossL2Inbox.sol#L4-L10). @@ -110,12 +110,12 @@ sequenceDiagram 4. `L2ToL2CrossDomainMessenger` on the destination chain verifies the message is legitimate: - * The origin (of the log entry) is `L2ToL2CrossDomainMessenger` on the other side. - * The destination chain ID is correct. - * The target is neither `CrossL2Inbox` nor `L2ToL2CrossDomainMessenger`. - * This message has not been relayed before. - - This is the reason we need the nonce value, to enable us to send multiple messages that would be otherwise identical. + * `_destination`: Chain ID of the destination chain. + * `_nonce`: Nonce of the message sent + * `_sender`: Address that sent the message + * `_target`: Target contract or wallet address. + * `message`: Message payload to call target with. + 5. If everything checks out, `L2ToL2CrossDomainMessenger` calls the destination contract with the calldata provided in the message. diff --git a/words.txt b/words.txt index 29c6a43b7..14f555b2a 100644 --- a/words.txt +++ b/words.txt @@ -1,7 +1,7 @@ -ACCOUNTQUEUE accountqueue -ACCOUNTSLOTS +ACCOUNTQUEUE accountslots +ACCOUNTSLOTS ACDC ADDI ADDIU @@ -9,58 +9,58 @@ ADDU airgap Allnodes allocs -Alphanet alphanet -Alphanets +Alphanet alphanets +Alphanets altda ANDI Ankr Apeworx Arweave authrpc -Autorelay autorelay +Autorelay autorelayer basefee bcde -Betanet betanet -Betanets +Betanet betanets +Betanets BGEZ BGTZ Biconomy BLEZ -BLOBPOOL blobpool +BLOBPOOL blobspace Blockdaemon blockhash blocklists -BLOCKLOGS blocklogs -BLOCKPROFILERATE +BLOCKLOGS blockprofilerate +BLOCKPROFILERATE Blockscout -Blockspace blockspace +Blockspace blocktime -Blocktimes blocktimes -BLOOMFILTER +Blocktimes bloomfilter +BLOOMFILTER BLTZ Bootcamp bootnode -BOOTNODES -Bootnodes bootnodes +Bootnodes +BOOTNODES bottlenecked -Brotli brotli -Callouts +Brotli callouts +Callouts CCIP cdef Celestia @@ -72,65 +72,66 @@ chaosnet Chugsplash Clabby codebases -Collateralized collateralized +Collateralized compr Comprensive -COMPUTEPENDINGBLOCK computependingblock +COMPUTEPENDINGBLOCK confs Consen corsdomain counterfactually -Crosschain crosschain +Crosschain Crossmint Dapphub daserver -DATACAP datacap -DATADIR +DATACAP datadir +DATADIR devdocs -Devnet devnet -Devnets +Devnet devnets +Devnets direnv -DISABLETXPOOLGOSSIP disabletxpoolgossip -Discv +DISABLETXPOOLGOSSIP discv +Discv DIVU Drand dripcheck Drippie Eigen EIPs -ENABLEDEPRECATEDPERSONAL +emmitted enabledeprecatedpersonal +ENABLEDEPRECATEDPERSONAL enginekind -Erigon erigon -ETHERBASE +Erigon etherbase +ETHERBASE Ethernity Ethernow -ETHSTATS ethstats -EVMTIMEOUT +ETHSTATS evmtimeout +EVMTIMEOUT excercise executability exfiltrate -EXITWHENSYNCED exitwhensynced -EXTRADATA +EXITWHENSYNCED extradata +EXTRADATA Farcaster Faultproof -FDLIMIT fdlimit +FDLIMIT Flashblocks Flashbots forkable @@ -141,52 +142,52 @@ Fraxtal funcationality Funct gameplay -GASCAP gascap +GASCAP gaslessly -GCMODE gcmode +GCMODE Gelato gifs -GLOBALQUEUE globalqueue -GLOBALSLOTS +GLOBALQUEUE globalslots +GLOBALSLOTS gokzg growthepie hardfork hardforks -HEALTHCHECK healthcheck +HEALTHCHECK healthchecks -HISTORICALRPC historicalrpc -HISTORICALRPCTIMEOUT +HISTORICALRPC historicalrpctimeout -HOLESKY -Holesky +HISTORICALRPCTIMEOUT holesky +Holesky +HOLESKY IERC -IGNOREPRICE ignoreprice +IGNOREPRICE Immunefi -Inator inator -INFLUXDBV +Inator influxdbv +INFLUXDBV initcode -IPCDISABLE ipcdisable +IPCDISABLE ipcfile -IPCPATH ipcpath +IPCPATH IPFS Isthumus JALR -JOURNALREMOTES journalremotes -JSPATH +JOURNALREMOTES jspath +JSPATH jwtsecret Keccak leveldb @@ -195,34 +196,34 @@ Lisk logfile logfmt Mainnets -MAXAGE maxage -MAXBACKUPS +MAXAGE maxbackups -MAXPEERS +MAXBACKUPS maxpeers -MAXPENDPEERS +MAXPEERS maxpendpeers -MAXPRICE +MAXPENDPEERS maxprice -MEMPROFILERATE +MAXPRICE memprofilerate -Merkle +MEMPROFILERATE merkle +Merkle MFHI MFLO Mgas Minato -MINFREEDISK minfreedisk -MINSUGGESTEDPRIORITYFEE +MINFREEDISK minsuggestedpriorityfee +MINSUGGESTEDPRIORITYFEE Mintable Mintplex MIPSEVM Mitigations -Monitorism monitorism +Monitorism Moralis Mordor mountpoint @@ -232,44 +233,44 @@ MTHI MTLO MULT multiaddr -Multichain multichain +Multichain multiclient multisigs MULTU nethermind -NETRESTRICT netrestrict -NETWORKID +NETRESTRICT networkid -NEWPAYLOAD +NETWORKID newpayload +NEWPAYLOAD nextra -NOCOMPACTION nocompaction -NODEKEY +NOCOMPACTION nodekey -NODEKEYHEX +NODEKEY nodekeyhex +NODEKEYHEX nodename Nodies -NODISCOVER nodiscover -NOLOCALS +NODISCOVER nolocals -NOPREFETCH +NOLOCALS noprefetch -NOPRUNING +NOPREFETCH nopruning -NOSYNCSERVE +NOPRUNING nosyncserve +NOSYNCSERVE Numba -Offchain offchain +Offchain opchaina opchainb -OPCM opcm +OPCM Openfort oplabs opnode's @@ -277,98 +278,98 @@ opstack outfile Pausability pcscdpath -Pectra pectra +Pectra Pectra's -Peerstore peerstore +Peerstore peerstores -Permissioned permissioned -Permissionless +Permissioned permissionless +Permissionless permissionlessly Perps Peta Pimlico POAP POAPs -PPROF pprof -Precommitments +PPROF precommitments +Precommitments preconfigured predeploy -Predeployed predeployed -Predeploys +Predeployed predeploys +Predeploys prefunded -Preimage preimage -PREIMAGES +Preimage preimages +PREIMAGES preinstall -Preinstalls preinstalls -Prestate +Preinstalls prestate +Prestate prestates PREVRANDAO -PRICEBUMP pricebump -PRICELIMIT +PRICEBUMP pricelimit +PRICELIMIT productionize productionized Protip Proxied -Proxyd proxyd +Proxyd Pyth Pyth's QRNG -Quicknode quicknode +Quicknode quickstarts rebalancing reemit Reemitting -Regenesis regenesis +Regenesis Reimagine -REJOURNAL rejournal -REMOTEDB +REJOURNAL remotedb +REMOTEDB Reown Reown's replayability replayor reposts reproven -REQUIREDBLOCKS requiredblocks +REQUIREDBLOCKS rollouts -Rollups rollups +Rollups Routescan rpckind -RPCPREFIX rpcprefix +RPCPREFIX rpcs RPGF -Runbooks runbooks +Runbooks RWAs safedb Schnorr -SEPOLIA -Sepolia sepolia +Sepolia +SEPOLIA seqnr -SEQUENCERHTTP sequencerhttp +SEQUENCERHTTP serv signup SLLV @@ -377,16 +378,16 @@ SLTIU SLTU smartcard snapshotlog -Snapsync snapsync +Snapsync Solana Soneium soyboy Spearbit SRAV SRLV -Stablecoins stablecoins +Stablecoins statefulset structs subcomponents @@ -395,21 +396,21 @@ subheaders subsecond SUBU Sunnyside -SUPERCHAIN -Superchain superchain +Superchain +SUPERCHAIN Superchain's superchainerc Superlend Superloans Superscan Superseed -Supersim supersim -SYNCMODE +Supersim syncmode -SYNCTARGET +SYNCMODE synctarget +SYNCTARGET syscalls SYSCON thirdweb @@ -422,8 +423,8 @@ Twei txfeecap txmgr txns -TXPOOL txpool +TXPOOL txproxy txproxyd uncensorable @@ -434,21 +435,21 @@ Unprotect unsubmitted UPNP upstreaming -VERKLE verkle -VHOSTS +VERKLE vhosts -Viem +VHOSTS viem -Viem's +Viem viem's -VMDEBUG +Viem's vmdebug -VMODULE +VMDEBUG vmodule +VMODULE xlarge XORI ZKPs ZKVM -Zora zora +Zora From c64be26f75fa3b12e8757fe8fd09f92878e531fe Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 11:18:25 -0700 Subject: [PATCH 04/21] Add missing link --- pages/interop/message-expiration.mdx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index 2018788a9..d704bfac4 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -42,5 +42,11 @@ The process to reemit an expired message: 1. Call [`resendMessage`](https://github.com/ethereum-optimism/optimism/blob/a979a9444dbb482843f2a42f437ced54a8ac1053/packages/contracts-bedrock/interfaces/L2/IL2ToL2CrossDomainMessenger.sol#L110-L128) on the origin chain to reemit the message event. The contract verifies the message hash was originally sent. The call required the following parameters: - -2. Relay the new message as normal. + * The origin (of the log entry) is `L2ToL2CrossDomainMessenger` on the other side. + * The destination chain ID is correct. + * The target is neither `CrossL2Inbox` nor `L2ToL2CrossDomainMessenger`. + * This message has not been relayed before. + + This is the reason we need the nonce value, to enable us to send multiple messages that would be otherwise identical. + +2. [Relay the new message](/interop/message-passing#executing-message) as normal. From 74903332d33a3778e56693166d2ca94d50c33113 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 11:18:42 -0700 Subject: [PATCH 05/21] Auto-fix: Update breadcrumbs, spelling dictionary and other automated fixes --- words.txt | 230 +++++++++++++++++++++++++++--------------------------- 1 file changed, 115 insertions(+), 115 deletions(-) diff --git a/words.txt b/words.txt index 14f555b2a..b2d3f4106 100644 --- a/words.txt +++ b/words.txt @@ -1,7 +1,7 @@ -accountqueue ACCOUNTQUEUE -accountslots +accountqueue ACCOUNTSLOTS +accountslots ACDC ADDI ADDIU @@ -9,58 +9,58 @@ ADDU airgap Allnodes allocs -alphanet Alphanet -alphanets +alphanet Alphanets +alphanets altda ANDI Ankr Apeworx Arweave authrpc -autorelay Autorelay +autorelay autorelayer basefee bcde -betanet Betanet -betanets +betanet Betanets +betanets BGEZ BGTZ Biconomy BLEZ -blobpool BLOBPOOL +blobpool blobspace Blockdaemon blockhash blocklists -blocklogs BLOCKLOGS -blockprofilerate +blocklogs BLOCKPROFILERATE +blockprofilerate Blockscout -blockspace Blockspace +blockspace blocktime -blocktimes Blocktimes -bloomfilter +blocktimes BLOOMFILTER +bloomfilter BLTZ Bootcamp bootnode -bootnodes -Bootnodes BOOTNODES +Bootnodes +bootnodes bottlenecked -brotli Brotli -callouts +brotli Callouts +callouts CCIP cdef Celestia @@ -72,35 +72,35 @@ chaosnet Chugsplash Clabby codebases -collateralized Collateralized +collateralized compr Comprensive -computependingblock COMPUTEPENDINGBLOCK +computependingblock confs Consen corsdomain counterfactually -crosschain Crosschain +crosschain Crossmint Dapphub daserver -datacap DATACAP -datadir +datacap DATADIR +datadir devdocs -devnet Devnet -devnets +devnet Devnets +devnets direnv -disabletxpoolgossip DISABLETXPOOLGOSSIP -discv +disabletxpoolgossip Discv +discv DIVU Drand dripcheck @@ -108,30 +108,30 @@ Drippie Eigen EIPs emmitted -enabledeprecatedpersonal ENABLEDEPRECATEDPERSONAL +enabledeprecatedpersonal enginekind -erigon Erigon -etherbase +erigon ETHERBASE +etherbase Ethernity Ethernow -ethstats ETHSTATS -evmtimeout +ethstats EVMTIMEOUT +evmtimeout excercise executability exfiltrate -exitwhensynced EXITWHENSYNCED -extradata +exitwhensynced EXTRADATA +extradata Farcaster Faultproof -fdlimit FDLIMIT +fdlimit Flashblocks Flashbots forkable @@ -142,52 +142,52 @@ Fraxtal funcationality Funct gameplay -gascap GASCAP +gascap gaslessly -gcmode GCMODE +gcmode Gelato gifs -globalqueue GLOBALQUEUE -globalslots +globalqueue GLOBALSLOTS +globalslots gokzg growthepie hardfork hardforks -healthcheck HEALTHCHECK +healthcheck healthchecks -historicalrpc HISTORICALRPC -historicalrpctimeout +historicalrpc HISTORICALRPCTIMEOUT -holesky -Holesky +historicalrpctimeout HOLESKY +Holesky +holesky IERC -ignoreprice IGNOREPRICE +ignoreprice Immunefi -inator Inator -influxdbv +inator INFLUXDBV +influxdbv initcode -ipcdisable IPCDISABLE +ipcdisable ipcfile -ipcpath IPCPATH +ipcpath IPFS Isthumus JALR -journalremotes JOURNALREMOTES -jspath +journalremotes JSPATH +jspath jwtsecret Keccak leveldb @@ -196,34 +196,34 @@ Lisk logfile logfmt Mainnets -maxage MAXAGE -maxbackups +maxage MAXBACKUPS -maxpeers +maxbackups MAXPEERS -maxpendpeers +maxpeers MAXPENDPEERS -maxprice +maxpendpeers MAXPRICE -memprofilerate +maxprice MEMPROFILERATE -merkle +memprofilerate Merkle +merkle MFHI MFLO Mgas Minato -minfreedisk MINFREEDISK -minsuggestedpriorityfee +minfreedisk MINSUGGESTEDPRIORITYFEE +minsuggestedpriorityfee Mintable Mintplex MIPSEVM Mitigations -monitorism Monitorism +monitorism Moralis Mordor mountpoint @@ -233,44 +233,44 @@ MTHI MTLO MULT multiaddr -multichain Multichain +multichain multiclient multisigs MULTU nethermind -netrestrict NETRESTRICT -networkid +netrestrict NETWORKID -newpayload +networkid NEWPAYLOAD +newpayload nextra -nocompaction NOCOMPACTION -nodekey +nocompaction NODEKEY -nodekeyhex +nodekey NODEKEYHEX +nodekeyhex nodename Nodies -nodiscover NODISCOVER -nolocals +nodiscover NOLOCALS -noprefetch +nolocals NOPREFETCH -nopruning +noprefetch NOPRUNING -nosyncserve +nopruning NOSYNCSERVE +nosyncserve Numba -offchain Offchain +offchain opchaina opchainb -opcm OPCM +opcm Openfort oplabs opnode's @@ -278,98 +278,98 @@ opstack outfile Pausability pcscdpath -pectra Pectra +pectra Pectra's -peerstore Peerstore +peerstore peerstores -permissioned Permissioned -permissionless +permissioned Permissionless +permissionless permissionlessly Perps Peta Pimlico POAP POAPs -pprof PPROF -precommitments +pprof Precommitments +precommitments preconfigured predeploy -predeployed Predeployed -predeploys +predeployed Predeploys +predeploys prefunded -preimage Preimage -preimages +preimage PREIMAGES +preimages preinstall -preinstalls Preinstalls -prestate +preinstalls Prestate +prestate prestates PREVRANDAO -pricebump PRICEBUMP -pricelimit +pricebump PRICELIMIT +pricelimit productionize productionized Protip Proxied -proxyd Proxyd +proxyd Pyth Pyth's QRNG -quicknode Quicknode +quicknode quickstarts rebalancing reemit Reemitting -regenesis Regenesis +regenesis Reimagine -rejournal REJOURNAL -remotedb +rejournal REMOTEDB +remotedb Reown Reown's replayability replayor reposts reproven -requiredblocks REQUIREDBLOCKS +requiredblocks rollouts -rollups Rollups +rollups Routescan rpckind -rpcprefix RPCPREFIX +rpcprefix rpcs RPGF -runbooks Runbooks +runbooks RWAs safedb Schnorr -sepolia -Sepolia SEPOLIA +Sepolia +sepolia seqnr -sequencerhttp SEQUENCERHTTP +sequencerhttp serv signup SLLV @@ -378,16 +378,16 @@ SLTIU SLTU smartcard snapshotlog -snapsync Snapsync +snapsync Solana Soneium soyboy Spearbit SRAV SRLV -stablecoins Stablecoins +stablecoins statefulset structs subcomponents @@ -396,21 +396,21 @@ subheaders subsecond SUBU Sunnyside -superchain -Superchain SUPERCHAIN +Superchain +superchain Superchain's superchainerc Superlend Superloans Superscan Superseed -supersim Supersim -syncmode +supersim SYNCMODE -synctarget +syncmode SYNCTARGET +synctarget syscalls SYSCON thirdweb @@ -423,8 +423,8 @@ Twei txfeecap txmgr txns -txpool TXPOOL +txpool txproxy txproxyd uncensorable @@ -435,21 +435,21 @@ Unprotect unsubmitted UPNP upstreaming -verkle VERKLE -vhosts +verkle VHOSTS -viem +vhosts Viem -viem's +viem Viem's -vmdebug +viem's VMDEBUG -vmodule +vmdebug VMODULE +vmodule xlarge XORI ZKPs ZKVM -zora Zora +zora From dd0209d638e636d1e447cf8f90823e8b59428b4a Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 11:26:01 -0700 Subject: [PATCH 06/21] Fix flipflopped info --- pages/interop/message-expiration.mdx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index d704bfac4..7d5354a5a 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -42,11 +42,10 @@ The process to reemit an expired message: 1. Call [`resendMessage`](https://github.com/ethereum-optimism/optimism/blob/a979a9444dbb482843f2a42f437ced54a8ac1053/packages/contracts-bedrock/interfaces/L2/IL2ToL2CrossDomainMessenger.sol#L110-L128) on the origin chain to reemit the message event. The contract verifies the message hash was originally sent. The call required the following parameters: - * The origin (of the log entry) is `L2ToL2CrossDomainMessenger` on the other side. - * The destination chain ID is correct. - * The target is neither `CrossL2Inbox` nor `L2ToL2CrossDomainMessenger`. - * This message has not been relayed before. - - This is the reason we need the nonce value, to enable us to send multiple messages that would be otherwise identical. - -2. [Relay the new message](/interop/message-passing#executing-message) as normal. + * `_destination`: Chain ID of the destination chain. + * `_nonce`: Nonce of the message sent + * `_sender`: Address that sent the message + * `_target`: Target contract or wallet address. + * `message`: Message payload to call target with. + +2. [Relay the new message](/interop/message-passing) as normal. From ac54be74d1cdd4b1de2c5f7b05188eb05c330001 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 11:27:17 -0700 Subject: [PATCH 07/21] Auto-fix: Update breadcrumbs, spelling dictionary and other automated fixes --- words.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/words.txt b/words.txt index 121d0a46e..b2d3f4106 100644 --- a/words.txt +++ b/words.txt @@ -90,10 +90,10 @@ daserver DATACAP datacap DATADIR +datadir devdocs -devnet Devnet -devnets +devnet Devnets devnets direnv From fc712c4e7fa6fdff63d084f86a48d70bbda222d8 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 14:48:23 -0700 Subject: [PATCH 08/21] Next steps and logs reference --- pages/interop/message-expiration.mdx | 8 +++++++- pages/interop/reading-logs.mdx | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index 7d5354a5a..c8b35efe9 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -48,4 +48,10 @@ The process to reemit an expired message: * `_target`: Target contract or wallet address. * `message`: Message payload to call target with. -2. [Relay the new message](/interop/message-passing) as normal. +2. [Relay the new message](C/interop/message-passing) as normal. + +## Next steps + +* [Build a revolutionary app](/app-developers/get-started) that uses multiple blockchains within the Superchain +* Learn how to [pass messages between blockchains](/interop/tutorials/message-passing) +* Deploy a [SuperchainERC20](/interop/tutorials/deploy-superchain-erc20) to the Superchain diff --git a/pages/interop/reading-logs.mdx b/pages/interop/reading-logs.mdx index 2a2bfcd5c..4296750da 100644 --- a/pages/interop/reading-logs.mdx +++ b/pages/interop/reading-logs.mdx @@ -27,6 +27,10 @@ This enables developers to: * Build cross-chain applications that react to events happening across the Superchain. * Create novel applications that leverage data from multiple chains. + +The destination chain must execute initiating message or event within the [expiry window of 7 days](interop/message-expiration). + + ## Why use `CrossL2Inbox`? * **Reference existing logs**: Allows contracts to verify and use logs that were already emitted, without requiring those logs to have been sent as cross-chain messages. From 97bd7583ad822cf20a2e017f281ea6dc59dffea2 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 14:50:00 -0700 Subject: [PATCH 09/21] fix link --- pages/interop/reading-logs.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/interop/reading-logs.mdx b/pages/interop/reading-logs.mdx index 4296750da..ae5b78d29 100644 --- a/pages/interop/reading-logs.mdx +++ b/pages/interop/reading-logs.mdx @@ -28,7 +28,7 @@ This enables developers to: * Create novel applications that leverage data from multiple chains. -The destination chain must execute initiating message or event within the [expiry window of 7 days](interop/message-expiration). +The destination chain must execute initiating message or event within the [expiry window of 7 days](/interop/message-expiration). ## Why use `CrossL2Inbox`? From ee8b4618d36d6bbcd94da20d38b38dfd5f2daed2 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 14:51:28 -0700 Subject: [PATCH 10/21] Lint --- pages/interop/message-expiration.mdx | 2 +- words.txt | 230 +++++++++++++-------------- 2 files changed, 116 insertions(+), 116 deletions(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index c8b35efe9..523e422f3 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -48,7 +48,7 @@ The process to reemit an expired message: * `_target`: Target contract or wallet address. * `message`: Message payload to call target with. -2. [Relay the new message](C/interop/message-passing) as normal. +2. [Relay the new message](/interop/message-passing) as normal. ## Next steps diff --git a/words.txt b/words.txt index b2d3f4106..14f555b2a 100644 --- a/words.txt +++ b/words.txt @@ -1,7 +1,7 @@ -ACCOUNTQUEUE accountqueue -ACCOUNTSLOTS +ACCOUNTQUEUE accountslots +ACCOUNTSLOTS ACDC ADDI ADDIU @@ -9,58 +9,58 @@ ADDU airgap Allnodes allocs -Alphanet alphanet -Alphanets +Alphanet alphanets +Alphanets altda ANDI Ankr Apeworx Arweave authrpc -Autorelay autorelay +Autorelay autorelayer basefee bcde -Betanet betanet -Betanets +Betanet betanets +Betanets BGEZ BGTZ Biconomy BLEZ -BLOBPOOL blobpool +BLOBPOOL blobspace Blockdaemon blockhash blocklists -BLOCKLOGS blocklogs -BLOCKPROFILERATE +BLOCKLOGS blockprofilerate +BLOCKPROFILERATE Blockscout -Blockspace blockspace +Blockspace blocktime -Blocktimes blocktimes -BLOOMFILTER +Blocktimes bloomfilter +BLOOMFILTER BLTZ Bootcamp bootnode -BOOTNODES -Bootnodes bootnodes +Bootnodes +BOOTNODES bottlenecked -Brotli brotli -Callouts +Brotli callouts +Callouts CCIP cdef Celestia @@ -72,35 +72,35 @@ chaosnet Chugsplash Clabby codebases -Collateralized collateralized +Collateralized compr Comprensive -COMPUTEPENDINGBLOCK computependingblock +COMPUTEPENDINGBLOCK confs Consen corsdomain counterfactually -Crosschain crosschain +Crosschain Crossmint Dapphub daserver -DATACAP datacap -DATADIR +DATACAP datadir +DATADIR devdocs -Devnet devnet -Devnets +Devnet devnets +Devnets direnv -DISABLETXPOOLGOSSIP disabletxpoolgossip -Discv +DISABLETXPOOLGOSSIP discv +Discv DIVU Drand dripcheck @@ -108,30 +108,30 @@ Drippie Eigen EIPs emmitted -ENABLEDEPRECATEDPERSONAL enabledeprecatedpersonal +ENABLEDEPRECATEDPERSONAL enginekind -Erigon erigon -ETHERBASE +Erigon etherbase +ETHERBASE Ethernity Ethernow -ETHSTATS ethstats -EVMTIMEOUT +ETHSTATS evmtimeout +EVMTIMEOUT excercise executability exfiltrate -EXITWHENSYNCED exitwhensynced -EXTRADATA +EXITWHENSYNCED extradata +EXTRADATA Farcaster Faultproof -FDLIMIT fdlimit +FDLIMIT Flashblocks Flashbots forkable @@ -142,52 +142,52 @@ Fraxtal funcationality Funct gameplay -GASCAP gascap +GASCAP gaslessly -GCMODE gcmode +GCMODE Gelato gifs -GLOBALQUEUE globalqueue -GLOBALSLOTS +GLOBALQUEUE globalslots +GLOBALSLOTS gokzg growthepie hardfork hardforks -HEALTHCHECK healthcheck +HEALTHCHECK healthchecks -HISTORICALRPC historicalrpc -HISTORICALRPCTIMEOUT +HISTORICALRPC historicalrpctimeout -HOLESKY -Holesky +HISTORICALRPCTIMEOUT holesky +Holesky +HOLESKY IERC -IGNOREPRICE ignoreprice +IGNOREPRICE Immunefi -Inator inator -INFLUXDBV +Inator influxdbv +INFLUXDBV initcode -IPCDISABLE ipcdisable +IPCDISABLE ipcfile -IPCPATH ipcpath +IPCPATH IPFS Isthumus JALR -JOURNALREMOTES journalremotes -JSPATH +JOURNALREMOTES jspath +JSPATH jwtsecret Keccak leveldb @@ -196,34 +196,34 @@ Lisk logfile logfmt Mainnets -MAXAGE maxage -MAXBACKUPS +MAXAGE maxbackups -MAXPEERS +MAXBACKUPS maxpeers -MAXPENDPEERS +MAXPEERS maxpendpeers -MAXPRICE +MAXPENDPEERS maxprice -MEMPROFILERATE +MAXPRICE memprofilerate -Merkle +MEMPROFILERATE merkle +Merkle MFHI MFLO Mgas Minato -MINFREEDISK minfreedisk -MINSUGGESTEDPRIORITYFEE +MINFREEDISK minsuggestedpriorityfee +MINSUGGESTEDPRIORITYFEE Mintable Mintplex MIPSEVM Mitigations -Monitorism monitorism +Monitorism Moralis Mordor mountpoint @@ -233,44 +233,44 @@ MTHI MTLO MULT multiaddr -Multichain multichain +Multichain multiclient multisigs MULTU nethermind -NETRESTRICT netrestrict -NETWORKID +NETRESTRICT networkid -NEWPAYLOAD +NETWORKID newpayload +NEWPAYLOAD nextra -NOCOMPACTION nocompaction -NODEKEY +NOCOMPACTION nodekey -NODEKEYHEX +NODEKEY nodekeyhex +NODEKEYHEX nodename Nodies -NODISCOVER nodiscover -NOLOCALS +NODISCOVER nolocals -NOPREFETCH +NOLOCALS noprefetch -NOPRUNING +NOPREFETCH nopruning -NOSYNCSERVE +NOPRUNING nosyncserve +NOSYNCSERVE Numba -Offchain offchain +Offchain opchaina opchainb -OPCM opcm +OPCM Openfort oplabs opnode's @@ -278,98 +278,98 @@ opstack outfile Pausability pcscdpath -Pectra pectra +Pectra Pectra's -Peerstore peerstore +Peerstore peerstores -Permissioned permissioned -Permissionless +Permissioned permissionless +Permissionless permissionlessly Perps Peta Pimlico POAP POAPs -PPROF pprof -Precommitments +PPROF precommitments +Precommitments preconfigured predeploy -Predeployed predeployed -Predeploys +Predeployed predeploys +Predeploys prefunded -Preimage preimage -PREIMAGES +Preimage preimages +PREIMAGES preinstall -Preinstalls preinstalls -Prestate +Preinstalls prestate +Prestate prestates PREVRANDAO -PRICEBUMP pricebump -PRICELIMIT +PRICEBUMP pricelimit +PRICELIMIT productionize productionized Protip Proxied -Proxyd proxyd +Proxyd Pyth Pyth's QRNG -Quicknode quicknode +Quicknode quickstarts rebalancing reemit Reemitting -Regenesis regenesis +Regenesis Reimagine -REJOURNAL rejournal -REMOTEDB +REJOURNAL remotedb +REMOTEDB Reown Reown's replayability replayor reposts reproven -REQUIREDBLOCKS requiredblocks +REQUIREDBLOCKS rollouts -Rollups rollups +Rollups Routescan rpckind -RPCPREFIX rpcprefix +RPCPREFIX rpcs RPGF -Runbooks runbooks +Runbooks RWAs safedb Schnorr -SEPOLIA -Sepolia sepolia +Sepolia +SEPOLIA seqnr -SEQUENCERHTTP sequencerhttp +SEQUENCERHTTP serv signup SLLV @@ -378,16 +378,16 @@ SLTIU SLTU smartcard snapshotlog -Snapsync snapsync +Snapsync Solana Soneium soyboy Spearbit SRAV SRLV -Stablecoins stablecoins +Stablecoins statefulset structs subcomponents @@ -396,21 +396,21 @@ subheaders subsecond SUBU Sunnyside -SUPERCHAIN -Superchain superchain +Superchain +SUPERCHAIN Superchain's superchainerc Superlend Superloans Superscan Superseed -Supersim supersim -SYNCMODE +Supersim syncmode -SYNCTARGET +SYNCMODE synctarget +SYNCTARGET syscalls SYSCON thirdweb @@ -423,8 +423,8 @@ Twei txfeecap txmgr txns -TXPOOL txpool +TXPOOL txproxy txproxyd uncensorable @@ -435,21 +435,21 @@ Unprotect unsubmitted UPNP upstreaming -VERKLE verkle -VHOSTS +VERKLE vhosts -Viem +VHOSTS viem -Viem's +Viem viem's -VMDEBUG +Viem's vmdebug -VMODULE +VMDEBUG vmodule +VMODULE xlarge XORI ZKPs ZKVM -Zora zora +Zora From 51b3e809580f346013cc42375164b9e8de166449 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 14:51:45 -0700 Subject: [PATCH 11/21] Auto-fix: Update breadcrumbs, spelling dictionary and other automated fixes --- words.txt | 230 +++++++++++++++++++++++++++--------------------------- 1 file changed, 115 insertions(+), 115 deletions(-) diff --git a/words.txt b/words.txt index 14f555b2a..b2d3f4106 100644 --- a/words.txt +++ b/words.txt @@ -1,7 +1,7 @@ -accountqueue ACCOUNTQUEUE -accountslots +accountqueue ACCOUNTSLOTS +accountslots ACDC ADDI ADDIU @@ -9,58 +9,58 @@ ADDU airgap Allnodes allocs -alphanet Alphanet -alphanets +alphanet Alphanets +alphanets altda ANDI Ankr Apeworx Arweave authrpc -autorelay Autorelay +autorelay autorelayer basefee bcde -betanet Betanet -betanets +betanet Betanets +betanets BGEZ BGTZ Biconomy BLEZ -blobpool BLOBPOOL +blobpool blobspace Blockdaemon blockhash blocklists -blocklogs BLOCKLOGS -blockprofilerate +blocklogs BLOCKPROFILERATE +blockprofilerate Blockscout -blockspace Blockspace +blockspace blocktime -blocktimes Blocktimes -bloomfilter +blocktimes BLOOMFILTER +bloomfilter BLTZ Bootcamp bootnode -bootnodes -Bootnodes BOOTNODES +Bootnodes +bootnodes bottlenecked -brotli Brotli -callouts +brotli Callouts +callouts CCIP cdef Celestia @@ -72,35 +72,35 @@ chaosnet Chugsplash Clabby codebases -collateralized Collateralized +collateralized compr Comprensive -computependingblock COMPUTEPENDINGBLOCK +computependingblock confs Consen corsdomain counterfactually -crosschain Crosschain +crosschain Crossmint Dapphub daserver -datacap DATACAP -datadir +datacap DATADIR +datadir devdocs -devnet Devnet -devnets +devnet Devnets +devnets direnv -disabletxpoolgossip DISABLETXPOOLGOSSIP -discv +disabletxpoolgossip Discv +discv DIVU Drand dripcheck @@ -108,30 +108,30 @@ Drippie Eigen EIPs emmitted -enabledeprecatedpersonal ENABLEDEPRECATEDPERSONAL +enabledeprecatedpersonal enginekind -erigon Erigon -etherbase +erigon ETHERBASE +etherbase Ethernity Ethernow -ethstats ETHSTATS -evmtimeout +ethstats EVMTIMEOUT +evmtimeout excercise executability exfiltrate -exitwhensynced EXITWHENSYNCED -extradata +exitwhensynced EXTRADATA +extradata Farcaster Faultproof -fdlimit FDLIMIT +fdlimit Flashblocks Flashbots forkable @@ -142,52 +142,52 @@ Fraxtal funcationality Funct gameplay -gascap GASCAP +gascap gaslessly -gcmode GCMODE +gcmode Gelato gifs -globalqueue GLOBALQUEUE -globalslots +globalqueue GLOBALSLOTS +globalslots gokzg growthepie hardfork hardforks -healthcheck HEALTHCHECK +healthcheck healthchecks -historicalrpc HISTORICALRPC -historicalrpctimeout +historicalrpc HISTORICALRPCTIMEOUT -holesky -Holesky +historicalrpctimeout HOLESKY +Holesky +holesky IERC -ignoreprice IGNOREPRICE +ignoreprice Immunefi -inator Inator -influxdbv +inator INFLUXDBV +influxdbv initcode -ipcdisable IPCDISABLE +ipcdisable ipcfile -ipcpath IPCPATH +ipcpath IPFS Isthumus JALR -journalremotes JOURNALREMOTES -jspath +journalremotes JSPATH +jspath jwtsecret Keccak leveldb @@ -196,34 +196,34 @@ Lisk logfile logfmt Mainnets -maxage MAXAGE -maxbackups +maxage MAXBACKUPS -maxpeers +maxbackups MAXPEERS -maxpendpeers +maxpeers MAXPENDPEERS -maxprice +maxpendpeers MAXPRICE -memprofilerate +maxprice MEMPROFILERATE -merkle +memprofilerate Merkle +merkle MFHI MFLO Mgas Minato -minfreedisk MINFREEDISK -minsuggestedpriorityfee +minfreedisk MINSUGGESTEDPRIORITYFEE +minsuggestedpriorityfee Mintable Mintplex MIPSEVM Mitigations -monitorism Monitorism +monitorism Moralis Mordor mountpoint @@ -233,44 +233,44 @@ MTHI MTLO MULT multiaddr -multichain Multichain +multichain multiclient multisigs MULTU nethermind -netrestrict NETRESTRICT -networkid +netrestrict NETWORKID -newpayload +networkid NEWPAYLOAD +newpayload nextra -nocompaction NOCOMPACTION -nodekey +nocompaction NODEKEY -nodekeyhex +nodekey NODEKEYHEX +nodekeyhex nodename Nodies -nodiscover NODISCOVER -nolocals +nodiscover NOLOCALS -noprefetch +nolocals NOPREFETCH -nopruning +noprefetch NOPRUNING -nosyncserve +nopruning NOSYNCSERVE +nosyncserve Numba -offchain Offchain +offchain opchaina opchainb -opcm OPCM +opcm Openfort oplabs opnode's @@ -278,98 +278,98 @@ opstack outfile Pausability pcscdpath -pectra Pectra +pectra Pectra's -peerstore Peerstore +peerstore peerstores -permissioned Permissioned -permissionless +permissioned Permissionless +permissionless permissionlessly Perps Peta Pimlico POAP POAPs -pprof PPROF -precommitments +pprof Precommitments +precommitments preconfigured predeploy -predeployed Predeployed -predeploys +predeployed Predeploys +predeploys prefunded -preimage Preimage -preimages +preimage PREIMAGES +preimages preinstall -preinstalls Preinstalls -prestate +preinstalls Prestate +prestate prestates PREVRANDAO -pricebump PRICEBUMP -pricelimit +pricebump PRICELIMIT +pricelimit productionize productionized Protip Proxied -proxyd Proxyd +proxyd Pyth Pyth's QRNG -quicknode Quicknode +quicknode quickstarts rebalancing reemit Reemitting -regenesis Regenesis +regenesis Reimagine -rejournal REJOURNAL -remotedb +rejournal REMOTEDB +remotedb Reown Reown's replayability replayor reposts reproven -requiredblocks REQUIREDBLOCKS +requiredblocks rollouts -rollups Rollups +rollups Routescan rpckind -rpcprefix RPCPREFIX +rpcprefix rpcs RPGF -runbooks Runbooks +runbooks RWAs safedb Schnorr -sepolia -Sepolia SEPOLIA +Sepolia +sepolia seqnr -sequencerhttp SEQUENCERHTTP +sequencerhttp serv signup SLLV @@ -378,16 +378,16 @@ SLTIU SLTU smartcard snapshotlog -snapsync Snapsync +snapsync Solana Soneium soyboy Spearbit SRAV SRLV -stablecoins Stablecoins +stablecoins statefulset structs subcomponents @@ -396,21 +396,21 @@ subheaders subsecond SUBU Sunnyside -superchain -Superchain SUPERCHAIN +Superchain +superchain Superchain's superchainerc Superlend Superloans Superscan Superseed -supersim Supersim -syncmode +supersim SYNCMODE -synctarget +syncmode SYNCTARGET +synctarget syscalls SYSCON thirdweb @@ -423,8 +423,8 @@ Twei txfeecap txmgr txns -txpool TXPOOL +txpool txproxy txproxyd uncensorable @@ -435,21 +435,21 @@ Unprotect unsubmitted UPNP upstreaming -verkle VERKLE -vhosts +verkle VHOSTS -viem +vhosts Viem -viem's +viem Viem's -vmdebug +viem's VMDEBUG -vmodule +vmdebug VMODULE +vmodule xlarge XORI ZKPs ZKVM -zora Zora +zora From 2bd4e3e77d73babcd958e525a0d78d43444556f7 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 14:53:07 -0700 Subject: [PATCH 12/21] Add reviews --- pages/interop/message-expiration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index 523e422f3..924709b41 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -28,7 +28,7 @@ If a message expires before being relayed, developers can reemit the message on ## The expiry window -The expiry window is an offchain constant, defined by op-supervisor, that defines how long a cross-chain message or event emmitted by a chain remains valid. For any chain in the [interop set](/interop/explainer), messages must be executed within 7 days (604,800 seconds) of the initiating message being sent. +The expiry window is an offchain constant, defined by [op-supervisor](/interop/op-supervisor), that defines how long a cross-chain message or event emmitted by a chain remains valid. For any chain in the [interop set](/interop/explainer#superchain-interop-cluster), messages must be executed within 7 days (604,800 seconds) of the initiating message being sent. After this period, a message can no longer be executed on the destination chain unless the event is remitted on the source chain. From 43b041163a68df4774207a33bf88cf1f7254e870 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 14:56:53 -0700 Subject: [PATCH 13/21] Fix callout --- pages/interop/reading-logs.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/interop/reading-logs.mdx b/pages/interop/reading-logs.mdx index ae5b78d29..f2fe03ff4 100644 --- a/pages/interop/reading-logs.mdx +++ b/pages/interop/reading-logs.mdx @@ -27,9 +27,9 @@ This enables developers to: * Build cross-chain applications that react to events happening across the Superchain. * Create novel applications that leverage data from multiple chains. - + The destination chain must execute initiating message or event within the [expiry window of 7 days](/interop/message-expiration). - + ## Why use `CrossL2Inbox`? From 375f96ed5c99beecf20f371782335b15dfdb6062 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 15:07:58 -0700 Subject: [PATCH 14/21] Fix callout --- pages/interop/reading-logs.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/interop/reading-logs.mdx b/pages/interop/reading-logs.mdx index f2fe03ff4..28c69ca3d 100644 --- a/pages/interop/reading-logs.mdx +++ b/pages/interop/reading-logs.mdx @@ -28,7 +28,7 @@ This enables developers to: * Create novel applications that leverage data from multiple chains. -The destination chain must execute initiating message or event within the [expiry window of 7 days](/interop/message-expiration). +The destination chain must execute initiating messages within the [expiry window of 7 days](/interop/message-expiration). ## Why use `CrossL2Inbox`? From 198805cacfcf5da8b7687238a19227ee388ddce7 Mon Sep 17 00:00:00 2001 From: Zain Bacchus Date: Thu, 15 May 2025 17:11:42 -0500 Subject: [PATCH 15/21] Update reading-logs.mdx --- pages/interop/reading-logs.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/interop/reading-logs.mdx b/pages/interop/reading-logs.mdx index 28c69ca3d..9221fc197 100644 --- a/pages/interop/reading-logs.mdx +++ b/pages/interop/reading-logs.mdx @@ -28,7 +28,7 @@ This enables developers to: * Create novel applications that leverage data from multiple chains. -The destination chain must execute initiating messages within the [expiry window of 7 days](/interop/message-expiration). +When reading logs, you must reference logs created within the [expiry window of 7 days](/interop/message-expiration). ## Why use `CrossL2Inbox`? From 65dd836b97e1912fa5ce77c5d70d5cb8a9bda939 Mon Sep 17 00:00:00 2001 From: Zain Bacchus Date: Thu, 15 May 2025 17:34:29 -0500 Subject: [PATCH 16/21] Update message-expiration.mdx Address Skele's feedback from https://github.com/ethereum-optimism/docs/pull/1605#discussion_r2085196331 --- pages/interop/message-expiration.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index 924709b41..af213963a 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -22,15 +22,15 @@ is_imported_content: 'false' # Message expiration -[Initiating messages](/interop/message-passing) sent between OP Stack chains have a limited validity period called the expiry window. Once this window elapses, the initiating message becomes invalid and can no longer be referenced on the destination chain. +[Messages](/interop/message-passing) referenced between OP Stack chains have a limited validity period called the expiry window. Once this window elapses, the referenced message becomes invalid and can no longer be referenced. -If a message expires before being relayed, developers can reemit the message on the source chain. This triggers a fresh `SentMessage` event, allowing offchain infrastructure to pick it up and relay it again ensuring successful delivery. +For messages using [`L2ToL2CrossDomainMessenger`](/interop/message-passing), if a message expires before being referenced, developers can reemit the message on the source chain. This triggers a fresh `SentMessage` event, allowing offchain infrastructure to pick it up and relay it again ensuring successful delivery. ## The expiry window -The expiry window is an offchain constant, defined by [op-supervisor](/interop/op-supervisor), that defines how long a cross-chain message or event emmitted by a chain remains valid. For any chain in the [interop set](/interop/explainer#superchain-interop-cluster), messages must be executed within 7 days (604,800 seconds) of the initiating message being sent. +The expiry window is an offchain constant, defined by [OP-Supervisor](/interop/op-supervisor), that defines how long a cross-chain message or event emmitted remains valid. For any chain in the [Superchain interop cluster](/interop/explainer#superchain-interop-cluster), messages must be reference within 7 days (604,800 seconds) of the log being created. -After this period, a message can no longer be executed on the destination chain unless the event is remitted on the source chain. +After this period, a message can no longer be referenced unless the event is remitted. ## Reemitting an expired message From b1ee83060dbe0c20f33ee0ee3b31821dc52455a6 Mon Sep 17 00:00:00 2001 From: Zain Bacchus Date: Thu, 15 May 2025 17:37:21 -0500 Subject: [PATCH 17/21] Update message-expiration.mdx Address Disco feedback from https://github.com/ethereum-optimism/docs/pull/1605#pullrequestreview-2834049970 --- pages/interop/message-expiration.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index af213963a..7e01bd739 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -50,6 +50,8 @@ The process to reemit an expired message: 2. [Relay the new message](/interop/message-passing) as normal. +Note: Re-emitting an already relayed message will have no effect on the destination chain since the re-emitted event won't be logged by OP-Supervisor. + ## Next steps * [Build a revolutionary app](/app-developers/get-started) that uses multiple blockchains within the Superchain From 825519bbe2db9d37fee5ea624c94734ca6fce90c Mon Sep 17 00:00:00 2001 From: Zain Bacchus Date: Thu, 15 May 2025 17:39:53 -0500 Subject: [PATCH 18/21] Update message-expiration.mdx Addressing, https://github.com/ethereum-optimism/docs/pull/1605#discussion_r2085189644 --- pages/interop/message-expiration.mdx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index 7e01bd739..0ef07d700 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -40,15 +40,9 @@ This emits a new `SentMessage` log with the same content as the original message The process to reemit an expired message: -1. Call [`resendMessage`](https://github.com/ethereum-optimism/optimism/blob/a979a9444dbb482843f2a42f437ced54a8ac1053/packages/contracts-bedrock/interfaces/L2/IL2ToL2CrossDomainMessenger.sol#L110-L128) on the origin chain to reemit the message event. The contract verifies the message hash was originally sent. The call required the following parameters: +1. Call [`resendMessage`](https://github.com/ethereum-optimism/optimism/blob/a979a9444dbb482843f2a42f437ced54a8ac1053/packages/contracts-bedrock/interfaces/L2/IL2ToL2CrossDomainMessenger.sol#L110-L128) on the origin chain to reemit the message event. The contract verifies the message hash was originally sent. The call requires [every parameter](https://github.com/ethereum-optimism/optimism/blob/a979a9444dbb482843f2a42f437ced54a8ac1053/packages/contracts-bedrock/interfaces/L2/IL2ToL2CrossDomainMessenger.sol#L110-L128) to rebuild the original message. - * `_destination`: Chain ID of the destination chain. - * `_nonce`: Nonce of the message sent - * `_sender`: Address that sent the message - * `_target`: Target contract or wallet address. - * `message`: Message payload to call target with. - -2. [Relay the new message](/interop/message-passing) as normal. +2. [Relay the new message](/interop/message-passing#executing-message) as normal. Note: Re-emitting an already relayed message will have no effect on the destination chain since the re-emitted event won't be logged by OP-Supervisor. From 4e1ae1292d635800b7a927e29655e3fa3a6f2166 Mon Sep 17 00:00:00 2001 From: Zain Bacchus Date: Thu, 15 May 2025 17:42:01 -0500 Subject: [PATCH 19/21] Update message-expiration.mdx fix fragments --- pages/interop/message-expiration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index 0ef07d700..dad693a24 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -24,7 +24,7 @@ is_imported_content: 'false' [Messages](/interop/message-passing) referenced between OP Stack chains have a limited validity period called the expiry window. Once this window elapses, the referenced message becomes invalid and can no longer be referenced. -For messages using [`L2ToL2CrossDomainMessenger`](/interop/message-passing), if a message expires before being referenced, developers can reemit the message on the source chain. This triggers a fresh `SentMessage` event, allowing offchain infrastructure to pick it up and relay it again ensuring successful delivery. +For messages using [`L2ToL2CrossDomainMessenger`](/interop/message-passing), if a message expires before being referenced, developers can reemit the message on the source chain. This triggers a fresh `SentMessage` event, enabling the message to be relayed. ## The expiry window From cafff0fcd710092990e66f6e71595ba506dd7149 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 15 May 2025 15:44:07 -0700 Subject: [PATCH 20/21] Spelling fix --- pages/interop/message-expiration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index dad693a24..955291066 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -28,7 +28,7 @@ For messages using [`L2ToL2CrossDomainMessenger`](/interop/message-passing), if ## The expiry window -The expiry window is an offchain constant, defined by [OP-Supervisor](/interop/op-supervisor), that defines how long a cross-chain message or event emmitted remains valid. For any chain in the [Superchain interop cluster](/interop/explainer#superchain-interop-cluster), messages must be reference within 7 days (604,800 seconds) of the log being created. +The expiry window is an offchain constant, defined by [OP-Supervisor](/interop/op-supervisor), that defines how long a cross-chain message or event emitted remains valid. For any chain in the [Superchain interop cluster](/interop/explainer#superchain-interop-cluster), messages must be reference within 7 days (604,800 seconds) of the log being created. After this period, a message can no longer be referenced unless the event is remitted. From fc292810f38bf6250dbc25f3d5a56749fb134d88 Mon Sep 17 00:00:00 2001 From: Zain Bacchus Date: Thu, 15 May 2025 17:47:57 -0500 Subject: [PATCH 21/21] Update message-expiration.mdx spelling --- pages/interop/message-expiration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/interop/message-expiration.mdx b/pages/interop/message-expiration.mdx index 955291066..ed5cc1ac5 100644 --- a/pages/interop/message-expiration.mdx +++ b/pages/interop/message-expiration.mdx @@ -28,7 +28,7 @@ For messages using [`L2ToL2CrossDomainMessenger`](/interop/message-passing), if ## The expiry window -The expiry window is an offchain constant, defined by [OP-Supervisor](/interop/op-supervisor), that defines how long a cross-chain message or event emitted remains valid. For any chain in the [Superchain interop cluster](/interop/explainer#superchain-interop-cluster), messages must be reference within 7 days (604,800 seconds) of the log being created. +The expiry window is an offchain constant, defined by [OP-Supervisor](/interop/op-supervisor), that defines how long a cross-chain message or event emitted remains valid. For any chain in the [Superchain interop cluster](/interop/explainer#superchain-interop-cluster), messages must be referenced within 7 days (604,800 seconds) of the log being created. After this period, a message can no longer be referenced unless the event is remitted.