Skip to main content
HyperProver integrates with Hyperlane’s cross-chain messaging system to prove intent fulfillment. It implements the IMessageRecipient interface to receive proof messages from the Hyperlane mailbox.

Contract Overview

Location: contracts/prover/HyperProver.sol
contracts/prover/HyperProver.sol

Constructor

From HyperProver.sol:55-62:
contracts/prover/HyperProver.sol

Parameters

address
Address of the local Hyperlane mailbox contract
address
Address of the Portal contract that manages rewards
bytes32[]
Array of trusted prover addresses on other chains (as bytes32 for cross-VM compatibility)

Prove Function

Inherited from MessageBridgeProver.sol:112-117:
contracts/prover/MessageBridgeProver.sol
The domainID parameter uses Hyperlane domain IDs, which are NOT the same as chain IDs. Consult Hyperlane documentation for domain ID mappings.

Data Parameter Structure

The data parameter must be ABI-encoded as an UnpackedData struct (from HyperProver.sol:22-26):
contracts/prover/HyperProver.sol
Encoding example:

Message Dispatch

Internal dispatch implementation from HyperProver.sol:93-120:
contracts/prover/HyperProver.sol

Message Formatting

From HyperProver.sol:201-224:
contracts/prover/HyperProver.sol

Message Reception

From HyperProver.sol:71-83:
contracts/prover/HyperProver.sol
The handle() function:
  1. Validates origin domain ID is non-zero
  2. Validates sender address is non-zero
  3. Checks sender is whitelisted
  4. Extracts chain ID from message prefix
  5. Processes intent proofs

Fee Calculation

From HyperProver.sol:130-141:
contracts/prover/HyperProver.sol
Internal implementation (from HyperProver.sol:162-183):
contracts/prover/HyperProver.sol

Usage Example

Domain ID Reference

Always check Hyperlane’s official domain registry for accurate domain IDs. These may differ from chain IDs.
Common mappings (verify before use):

Security Considerations

Whitelist Validation

Only whitelisted prover addresses can send proof messages. This is validated in _handleCrossChainMessage() from MessageBridgeProver.sol:81-82:
contracts/prover/MessageBridgeProver.sol

Hook Security

Custom hooks can be specified, but default to the mailbox’s default hook:
contracts/prover/HyperProver.sol