EIP-712 domain separator missing chainId
Hyperlane's assessment for RD-F-020 — scored green on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
Message.sol includes origin domain (4-byte uint32) in the formatMessage encoding: [version, nonce, originDomain, sender, destDomain, recipient, body]. The message ID is keccak256 of this full encoding. Cross-chain replay is prevented because origin domain is bound into the message hash used in ISM verification. Score: green.
Sources #
- GitHubMessage.sol — formatMessage() with origin domain bindingMessage.sol formatMessage() — includes _originDomain as parameter; id() = keccak256(_message) binding originretrieved 2026-05-17
Methodology #
Determine whether the EIP-712 domain separator struct omits the `chainId` field, allowing cross-chain replay.
See the full factor methodology and distribution across all protocols →
rubric_version v1.7.0 protocol hyperlane factor RD-F-020 score green collected_at 2026-05-16 23:03:56