The MUSD bridge is powered by Wormhole’s Native Token Transfer (NTT) protocol, which enables secure cross-chain transfers while maintaining token fungibility.
Overview
Wormhole’s NTT protocol provides a secure and efficient way to transfer MUSD tokens across different blockchain networks while maintaining fungibility and security guarantees.
For user-facing documentation about the MUSD bridge, see the MUSD Bridge page.
Integration Guide
Understanding NTT
The Native Token Transfer (NTT) protocol by Wormhole ensures:
Token Fungibility : MUSD maintains its properties across chains
Security : Multi-guardian validation system
Reliability : Battle-tested cross-chain infrastructure
Atomic Transfers : Either completes fully or reverts entirely
Key Features
Cross-Chain Transfer Move MUSD seamlessly between supported blockchain networks
Security Validation Multi-signature validation by Wormhole guardians
Token Fungibility MUSD retains all properties across chains
Developer Friendly Simple integration with existing smart contracts
Smart Contract Integration
Prerequisites
Before integrating with the MUSD bridge:
Understand the Wormhole NTT documentation
Review MUSD token contract addresses
Set up Wormhole SDK in your project
Basic Transfer Flow
Approve Token Transfer
User approves the NTT contract to spend their MUSD tokens. IERC20 (musdToken). approve (nttManagerAddress, amount);
Initiate Transfer
Call the NTT Manager contract to initiate the cross-chain transfer. INttManager (nttManagerAddress). transfer (
amount,
targetChain,
recipientAddress
);
Wait for Validation
Wormhole guardians validate the transfer on the source chain.
Claim on Destination
Tokens become available on the destination chain after validation.
Example Integration
import { Wormhole } from '@wormhole-foundation/sdk' ;
async function bridgeMUSD (
amount : bigint ,
sourceChain : string ,
targetChain : string ,
recipientAddress : string
) {
const wormhole = new Wormhole ();
// Initiate transfer
const transfer = await wormhole . ntt . transfer ({
token: MUSD_TOKEN_ADDRESS ,
amount: amount ,
recipient: recipientAddress ,
sourceChain: sourceChain ,
targetChain: targetChain
});
// Wait for confirmation
const receipt = await transfer . wait ();
return receipt ;
}
Contract Addresses
Always verify contract addresses from official sources before integrating.
MUSD and NTT contract addresses will be published on the official documentation once deployed.
Best Practices
Gas Optimization
Cross-chain transfers require gas on both source and destination chains. Ensure users have sufficient native tokens on both chains.
Error Handling
try {
const transfer = await bridgeMUSD ( amount , sourceChain , targetChain , recipient );
console . log ( 'Transfer initiated:' , transfer . sequence );
} catch ( error ) {
if ( error . code === 'INSUFFICIENT_ALLOWANCE' ) {
// Handle approval error
} else if ( error . code === 'INSUFFICIENT_BALANCE' ) {
// Handle balance error
}
}
Monitoring Transfers
Use Wormhole’s APIs to track transfer status:
const status = await wormhole . getTransferStatus ( sequence , sourceChain );
console . log ( 'Transfer status:' , status );
Resources
Support
For technical support and questions: