Skip to content
This repository was archived by the owner on Apr 6, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
1367722
Add message expiration doc
bradleycamacho May 12, 2025
4b1224e
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
bradleycamacho May 15, 2025
c24ec58
Implement review
bradleycamacho May 15, 2025
c64be26
Add missing link
bradleycamacho May 15, 2025
7490333
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
bradleycamacho May 15, 2025
aefdf2e
Merge branch 'main' into Message-expiration
bradleycamacho May 15, 2025
dd0209d
Fix flipflopped info
bradleycamacho May 15, 2025
070d225
Merge branch 'Message-expiration' of https://github.com/ethereum-opti…
bradleycamacho May 15, 2025
ac54be7
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
bradleycamacho May 15, 2025
fc712c4
Next steps and logs reference
bradleycamacho May 15, 2025
97bd758
fix link
bradleycamacho May 15, 2025
ee8b461
Lint
bradleycamacho May 15, 2025
51b3e80
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
bradleycamacho May 15, 2025
2bd4e3e
Add reviews
bradleycamacho May 15, 2025
43b0411
Fix callout
bradleycamacho May 15, 2025
375f96e
Fix callout
bradleycamacho May 15, 2025
198805c
Update reading-logs.mdx
zainbacchus May 15, 2025
65dd836
Update message-expiration.mdx
zainbacchus May 15, 2025
b1ee830
Update message-expiration.mdx
zainbacchus May 15, 2025
825519b
Update message-expiration.mdx
zainbacchus May 15, 2025
4e1ae12
Update message-expiration.mdx
zainbacchus May 15, 2025
cafff0f
Spelling fix
bradleycamacho May 15, 2025
fc29281
Update message-expiration.mdx
zainbacchus May 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pages/interop/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
44 changes: 44 additions & 0 deletions pages/interop/message-expiration.mdx
Original file line number Diff line number Diff line change
@@ -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.
Comment thread
bradleycamacho marked this conversation as resolved.
Outdated

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.
Comment thread
bradleycamacho marked this conversation as resolved.
Outdated

After this period, a message can no longer be executed on the destination chain unless the event is remitted on the source chain.
Comment thread
bradleycamacho marked this conversation as resolved.
Outdated

## 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.
Comment thread
bradleycamacho marked this conversation as resolved.

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.
Comment thread
bradleycamacho marked this conversation as resolved.
Outdated
2. Relay the new message as normal.
Comment thread
bradleycamacho marked this conversation as resolved.
Outdated
6 changes: 3 additions & 3 deletions words.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,10 @@ datacap
DATACAP
datadir
DATADIR
devdocs
devnet
Devnet
devnets
Devs
Devdocs
devdocs
Devnets
direnv
disabletxpoolgossip
Expand Down Expand Up @@ -334,6 +332,8 @@ quicknode
Quicknode
quickstarts
rebalancing
reemit
Reemitting
regenesis
Regenesis
Reimagine
Expand Down