Core Bridging Process
The transfer of $M (or its extensions like Wrapped $M) between the Hub and Spoke chains follows a similar logical flow in both implementations, orchestrated by the Portals and their underlying messaging bridge.
Transfer: Hub Chain -> Spoke Chain

-
User Interaction: The user initiates a transfer by calling a function on the
HubPortalcontract on Ethereum, specifying the destination chain and amount. Beforehand, users can call a function to get the estimated delivery fee for the cross-chain transaction.- M Portal (Standard): The function is
quoteDeliveryPrice, inherited from the Wormhole NTT framework. - M Portal Lite: The function is
quoteTransfer.
After getting the fee and approving the
HubPortalto spend their $M or Wrapped $M, the user makes the final transfer call. - M Portal (Standard): The function is
-
Token Handling:
- If the user transferred Wrapped $M, the
HubPortalfirst unwraps it to the native $M token. - The native $M tokens are then locked within the
HubPortalcontract. - (M Portal Lite Specific): The
HubPortalincrements its internalbridgedPrincipalcounter for the destination spoke chain.
- If the user transferred Wrapped $M, the
-
Message Creation & Sending:
- The
HubPortalconstructs a cross-chain message containing transfer details (amount, recipient, destination chain) and additional metadata (like the current $M Index). - It interacts with its configured bridge to send this message.
- M Portal (Wormhole): Interacts with the Wormhole Transceiver via the
NttManagerlogic to publish a message to the Wormhole network. - M Portal Lite (Hyperlane): Interacts with the
HyperlaneBridgecontract, which dispatches the message via the Hyperlane Mailbox.
- M Portal (Wormhole): Interacts with the Wormhole Transceiver via the
- The
-
Cross-Chain Relaying (Off-Chain): The message is validated by the underlying bridge's security mechanism (Wormhole Guardians or Hyperlane's Interchain Security Modules (ISMs)). Once validated, the message is delivered by relayers to the destination Spoke chain.
-
Message Reception & Processing:
- The bridge contract on the Spoke chain receives the message and passes it to the
SpokePortal.
- The bridge contract on the Spoke chain receives the message and passes it to the
-
Token Minting & Delivery:
- The
SpokePortalprocesses the message. - It mints the corresponding amount of the $M token representation on the Spoke chain.
- If the original transfer was for Wrapped $M, the
SpokePortalwraps the newly minted $M. - The final token is transferred to the recipient address on the Spoke chain.
- The
Transfer: Spoke Chain -> Hub Chain
This is largely the reverse process.
- User Interaction: User calls the
SpokePortalon a Spoke chain to send tokens back to the Hub. -
Token Handling:
- If transferring Wrapped $M, it's unwrapped to the native $M representation.
- The native $M tokens are burned by the
SpokePortal.
- Message Creation & Sending: The
SpokePortalsends a cross-chain message back to the Hub Chain (Ethereum). - Cross-Chain Relaying: The message is relayed back to Ethereum.
- Message Reception & Processing: The bridge on Ethereum receives the message and passes it to the
HubPortal. -
Token Releasing & Delivery:
- The
HubPortalprocesses the message and releases (unlocks) the equivalent amount of native $M tokens. - (M Portal Lite Specific): The
HubPortalfirst verifies that the requested release amount does not exceed thebridgedPrincipalfor that source spoke chain. It then decrements thebridgedPrincipalcounter. - The released tokens (wrapped if necessary) are delivered to the recipient on Ethereum.
- The
Transfer: Spoke Chain -> Spoke Chain
- M Portal (Wormhole): Supported. This process involves burning tokens on the source Spoke and minting them on the destination Spoke, with a message relayed via Wormhole.
- M Portal Lite (Hyperlane): Not Supported. The system is strictly Hub-and-Spoke. To move assets between spokes, a user must first bridge back to the Hub (Ethereum) and then out to the new Spoke chain.

