Ana içeriğe geç

mUSDC Bridge

The mUSDC Bridge brings USDC liquidity into the Monolythium ecosystem through a mint-and-burn model. Users deposit USDC on the source chain and receive mUSDC (Bridged USDC) on Monolythium. To redeem, users burn mUSDC and receive their USDC back on the source chain.

Architecture

The bridge consists of two contracts and a relayer service:

Source Chain (USDC)                    Monolythium (mUSDC)
+---------------------+ +---------------------+
| USDCBridgeVault | -- relay --> | USDCBridgeMinter |
| | | |
| - deposit() USDC | | - processDeposit() |
| - release() USDC | <-- relay -- | - redeem() mUSDC |
| - 0.1% fee | | |
| - daily limits | | |
+---------------------+ +---------------------+
^ ^
| |
[User deposits USDC] [User redeems mUSDC]
  • USDCBridgeVault — deployed on the source chain. Locks USDC when users deposit and releases USDC when users redeem.
  • USDCBridgeMinter — deployed on Monolythium. Mints mUSDC when deposits are confirmed and burns mUSDC when users redeem.
  • Relayer — an off-chain service that watches for events on both chains and relays transactions between them.

How It Works

Depositing (USDC → mUSDC)

  1. Approve — the user approves the vault contract to spend their USDC.
  2. Deposit — the user calls deposit(amount) on the vault. A 0.1% fee is deducted and sent to the protocol treasury. The net amount is locked in the vault.
  3. Relay — the relayer detects the Deposited event and calls processDeposit() on the minter.
  4. Mint — the minter mints the net amount of mUSDC to the user's address on Monolythium.

Redeeming (mUSDC → USDC)

  1. Approve — the user approves the minter contract to spend their mUSDC.
  2. Redeem — the user calls redeem(amount) on the minter. The mUSDC is burned.
  3. Relay — the relayer detects the Redeemed event and calls release() on the vault.
  4. Release — the vault releases the USDC to the user's address on the source chain.

Fee Structure

ParameterValue
Deposit fee0.1% (10 basis points)
Redeem feeNone (vault-side only)
Fee recipientProtocol Treasury
Minimum depositNo minimum

Fee Calculation Example

Depositing 1,000 USDC:

Fee    = 1,000 × 0.001 = 1.00 USDC  (sent to treasury)
Net = 1,000 - 1.00 = 999.00 mUSDC (minted to user)

mUSDC Token

mUSDC is an ERC-20 token on Monolythium that represents bridged USDC:

PropertyValue
NameBridged USDC (Monolythium)
SymbolmUSDC
Decimals6 (matches native USDC)
StandardERC-20 (OpenZeppelin v5)

mUSDC can be freely traded, used as collateral, or provided as liquidity on MonoSwap just like any other ERC-20 token. It is always redeemable 1:1 for USDC locked in the vault (minus fees).

Trading mUSDC

mUSDC is paired with LYTH on MonoSwap. You can trade it on MonoHub like any other token:

  • Pair: mUSDC / WLYTH
  • Router: MonoRouter (0x2999dAa2C1535A52F1c42f8FE08577700BfDF878)

Security

The bridge implements multiple security measures:

  • Nonce tracking — each deposit and redemption has a unique nonce to prevent double-processing.
  • Pausable — the owner can pause both the vault and minter in an emergency.
  • Reentrancy guard — all state-changing functions are protected against reentrancy.
  • Daily volume limits — configurable limits on total daily deposit/release volume (can be set by the owner).
  • Per-transaction limits — configurable maximum amount per single deposit or release.
  • Operator separation — only the authorized operator (relayer) can process deposits and releases. The operator cannot change contract settings.

Contract Addresses

Sprintnet (Chain ID: 262146)

ContractAddress
mUSDC Token0x65D8742A9E95c7a18E0E0a28f8B1d8f20c0ea7F0
TestUSDC (Source Token)0x8BB072657DC5a24BbC7fd43A6696FA822B11A0eD
USDCBridgeVault0x6B6CE8D05cA859b21f452DFbe7aF819932b660cd
USDCBridgeMinter0x96148FeE8C66e005D625920FB8688dd455cd1077
not

On Sprintnet, the source token is TestUSDC (a freely mintable test token). On mainnet, this will be replaced with real USDC.

Troubleshooting

My deposit is stuck

The relayer typically processes deposits within a few seconds. If your mUSDC hasn't appeared after a few minutes:

  1. Check that your deposit transaction was confirmed on the source chain.
  2. Verify the deposit event was emitted (check on Monoscan).
  3. The relayer may be temporarily offline — deposits are never lost and will be processed when the relayer resumes.

Can I get my USDC back if the bridge is paused?

If the bridge is paused, no new deposits or redemptions can be processed until it is unpaused. Your USDC remains safely locked in the vault and your mUSDC remains in your wallet. Once unpaused, all operations resume normally.

Next Steps