LegacyMessagePasser
Table of Contents
Overview
The LegacyMessagePasser is a deprecated predeploy contract that stored commitments to withdrawal transactions before the Bedrock upgrade. It has been superseded by the L2ToL1MessagePasser contract and is no longer used for withdrawals through the CrossDomainMessenger system.
Definitions
N/A
Assumptions
a01-001: Migration completeness
All pending withdrawals from this contract were successfully migrated to the L2ToL1MessagePasser during the Bedrock upgrade.
Mitigations
- Migration was performed as part of the Bedrock upgrade process
- Historical withdrawal data remains accessible for verification
a01-002: Alternative bridge compatibility
Alternative bridge implementations that depend on this contract have either migrated to the new system or are aware that finalization through this contract is no longer supported.
Mitigations
- Clear deprecation notices in documentation
- Contract remains deployed to maintain historical state
Dependencies
This specification depends on:
- L2ToL1MessagePasser - The successor contract that replaced this functionality
Invariants
i01-001: Message commitment immutability
Once a message commitment is stored in the sentMessages mapping, it remains permanently set to true and cannot
be modified or removed.
Impact
Severity: Low
If this invariant were violated, historical withdrawal commitments could be altered, potentially affecting the verification of pre-Bedrock withdrawals. However, since the contract is deprecated and no longer used for finalization, the practical impact is minimal and limited to historical record integrity.
i01-002: Unrestricted message passing
Any address can call passMessageToL1 to store a message commitment without restrictions or validation.
Impact
Severity: Low
If this invariant were violated and restrictions were added, it would deviate from the contract's original design. However, since the contract is deprecated and calling it is a no-op in the context of the CrossDomainMessenger system, this has no practical security impact.
Function Specification
passMessageToL1
Stores a commitment to a message in the sentMessages mapping.
Parameters:
_message: Arbitrary bytes representing the message to pass to L1
Behavior:
- MUST compute the message hash as
keccak256(abi.encodePacked(_message, msg.sender)) - MUST set
sentMessages[messageHash]totrue - MUST NOT revert under any circumstances
- MUST NOT emit any events
- MUST NOT forward the call to L2ToL1MessagePasser
sentMessages
Returns whether a message commitment exists for a given hash.
Parameters:
bytes32: The message hash to query
Behavior:
- MUST return
trueif the message hash has been stored viapassMessageToL1 - MUST return
falseif the message hash has never been stored - MUST NOT revert under any circumstances