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
HubPortal
contract 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
HubPortal
to 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
HubPortal
first unwraps it to the native $M token. - The native $M tokens are then locked within the
HubPortal
contract. - (M Portal Lite Specific): The
HubPortal
increments its internalbridgedPrincipal
counter for the destination spoke chain.
- If the user transferred Wrapped $M, the
-
Message Creation & Sending:
- The
HubPortal
constructs 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
NttManager
logic to publish a message to the Wormhole network. - M Portal Lite (Hyperlane): Interacts with the
HyperlaneBridge
contract, 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
SpokePortal
processes 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
SpokePortal
wraps 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
SpokePortal
on 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
SpokePortal
sends 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
HubPortal
processes the message and releases (unlocks) the equivalent amount of native $M tokens. - (M Portal Lite Specific): The
HubPortal
first verifies that the requested release amount does not exceed thebridgedPrincipal
for that source spoke chain. It then decrements thebridgedPrincipal
counter. - 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.