{
  "id": 5260067,
  "title": "Five things I learned moving USDM between Cardano and Midnight",
  "url": "https://urgent.news/2026/09/03/five-things-i-learned-moving-usdm-between-cardano-and-midnight",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-03T05:37:55.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/tminus1s/five-things-i-learned-moving-usdm-between-cardano-and-midnight-4l2k"
  },
  "original_language": "en",
  "account": "Five lessons learned from migrating USDM between Cardano and Midnight:\n\n1. USDM deposits may land in an enterprise address that a wallet does not display. Send USDM from Midnight to Cardano and it will not appear in your wallet. The money is at an address your wallet does not watch. Derive and display the enterprise address for user visibility.\n\n2. Midnight hashes for USDM require a 0x prefix, while Cardano hashes do not. Incorrect formatting can cause Scan to say the transaction does not exist. Use a helper function to automatically add the 0x prefix when necessary.\n\n3. Testnet attests after only one block, while Mainnet takes about 50 minutes. Mistakenly waiting 1 hour on testnet, when the delay is actually only 1 minute 52 seconds, leads to unnecessary frustration. Flip the network toggle to know which network you are on.\n\n4. As of now, Compact contracts on Midnight Preview cannot hold USDM. An attempt to deposit into a contract using USDM was rejected with error code 192. This is a design constraint, not a preference, and should be noted in any documentation or contract addresses provided.\n\n5. Unshielded inputs require a signature, and forgetting to include it results in the same error code 192 rejection. When moving USDM wallet-to-wallet using the SDK, always sign the transaction before finalizing it to avoid this issue.",
  "summary": "Notes from building a cross-chain USDM transfer app and a private invoice contract on Midnight. Enterprise addresses, explorer link rules, a node error code, and why a contract cannot hold USDM today. I built two things on VIA's USDM cross-chain transfers over the past two weeks: Tender — a browser app that moves native USDM between Cardano Preprod and Midnight Preview, both directions, signed by…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}