★ Default bytes32(0) acceptable as valid root
M^0's assessment for RD-F-154 — scored green on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
M^0's Portal/HubPortal/SpokePortal does not use inbound Merkle-root-based message validation (the Nomad bug class). Messages validated via Wormhole VAA attestation (guardian signatures on VAA struct, not Merkle roots) or Hyperlane mailbox ISM. The only Merkle root in the system is the outbound earnersMerkleRoot_ fetched from IMerkleTreeBuilder for Solana earner list — an outbound data payload, not an inbound security mechanism. No acceptableRoot or zero-root acceptance path exists in M^0 bridge code.
Sources #
- GitHubHubPortal.sol sourcem0-foundation/m-portal main/src/HubPortal.sol — earnersMerkleRoot_ is outbound payload via sendEarnersMerkleRoot(), not inbound security checkretrieved 2026-05-16
- Portal.sol sourcem0-foundation/m-portal main/src/Portal.sol — uses NTT message digests, not Merkle roots for inbound validationretrieved 2026-05-16
Methodology #
Determine whether the bridge inbox accepts a default-value (bytes32(0)) Merkle root as a valid proof root (Nomad bug class).
See the full factor methodology and distribution across all protocols →