Integrating with the M0 Portals
This guide provides technical details and step-by-step workflows for developers integrating with the M0 stablecoin bridging infrastructure. The system uses two distinct protocols for different chains, so it is crucial to use the correct integration path.
- Portal (NTT) Repository: m-portal on GitHub
- Portal Lite (Hyperlane) Repository: m-portal-lite on GitHub
The Portal system is built on the Wormhole Native Token Transfer (NTT) standard. It is used for bridging tokens to and from Arbitrum One and Optimism.
Key Concepts
- Protocol: Wormhole NTT
- Chains:
Ethereum↔Arbitrum One,Ethereum↔Optimism - Chain IDs: Uses Wormhole Chain IDs (
uint16), e.g., Ethereum =2, Arbitrum =23, Optimism =24. - Addresses: Recipient and token addresses are passed as
bytes32.
Contract Addresses
| Contract | Network(s) | Address |
|---|---|---|
| Hub Portal | Ethereum | 0xD925C84b55E4e44a53749fF5F2a5A13F63D128fd |
| Spoke Portal | Arbitrum, Optimism | 0xD925C84b55E4e44a53749fF5F2a5A13F63D128fd |
| Wormhole Transceiver | All | 0x0763196A091575adF99e2306E5e90E0Be5154841 |
M0 Portal - Hub to Spoke (e.g., Ethereum -> Arbitrum)
This workflow details how to lock a token (M or wM) on Ethereum and mint its equivalent on a spoke chain like Arbitrum.
M0 Portal - Spoke to Hub (e.g., Arbitrum -> Ethereum)
This workflow is the mirror image of the first. You will interact with the Spoke Portal contract on the source chain (e.g., Arbitrum).
- Approve: Call
approveon the token contract on the spoke chain, granting an allowance to the Spoke Portal (0xD92...28fd). - Quote Fee: Obtain the delivery fee for sending a message from the spoke chain to Ethereum.
- Bridge: Call
transferMLikeTokenon the Spoke Portal.destinationChainId:2(Wormhole ID for Ethereum).destinationToken: Thebytes32address of the target token on Ethereum.
The Portal Lite system is built on the Hyperlane protocol. It is used for bridging tokens to and from Plume and HyperEVM.
Key Concepts
- Protocol: Hyperlane
- Chains:
Ethereum↔Plume,Ethereum↔HyperEVM - Chain IDs: Uses standard EVM Chain IDs (
uint256), e.g., Ethereum =1, Plume =98866. - Addresses: All addresses are standard
addresstypes.
Contract Addresses
| Contract | Network(s) | Address |
|---|---|---|
| Portal Lite | Ethereum, Plume, HyperEVM | 0x36f586A30502AE3afb555b8aA4dCc05d233c2ecE |
M0 Portal Lite - Hub to Spoke (e.g., Ethereum -> Plume)
This workflow details locking a token on Ethereum and minting its equivalent on Plume.
M0 Portal Lite - Spoke to Hub (e.g., Plume -> Ethereum)
The process is identical to Workflow 1 but performed on the spoke chain's contracts.
- Quote Fee: Call
quoteTransferon the Portal Lite contract on Plume to get the fee for delivering a message to Ethereum (destinationChainId = 1). - Approve: Call
approveon the token contract on Plume, granting an allowance to the Portal Lite (0x36f...2ecE). - Bridge: Call
transferMLikeTokenon the Portal Lite on Plume, withdestinationChainIdset to1.