Cardano and Stable interoperability

This guide walks you through how to move value back and forth between:

  • USDT on the Stable Mainnet

  • USDA and USDM on Cardano

You will use Restish and jq to generate deposit addresses via the Mynth API, plus Rabby and Lace wallets to hold your funds. Wherever you see placeholders like <amount>, <YOUR RABBY ADDRESS>, or <YOUR LACE ADDRESS>, you must replace them with your own values before running the commands.

This is a technical walkthrough only and not financial advice. Always test with a small amount first.

Mynth API reference: https://docs.mynth.ai/reference#tag/addresses/post/api/address/generate

1. What you will need

Before you start, make sure you have the following set up.

You will need Restish and jq installed and configured. Follow our Restish and jq setup instructions from the Mynth documentation.

You will need two wallets. First, a Rabby wallet configured for Stable Mainnet. In Rabby, add or select the Stable network with the following details:

  • Network Name: Stable Mainnet

  • Chain ID: 988

  • Gas Token: gUSDT

This Rabby wallet will hold your USDT0 and gUSDT on Stable.

Second, a Cardano wallet in Lace. Create or open your Lace wallet, and make sure you have some ADA in it. You will need ADA both to pay Cardano network fees and to swap into USDA and USDM.

You will also need USDA and USDM on Cardano. To get them, open your Lace wallet and go to SteelSwap.

On SteelSwap, connect your Lace wallet, then use ADA to buy USDA and USDM. Once done, you should see USDA and/or USDM in your Lace wallet on Cardano.

At this point you have:

  • Rabby on Stable Mainnet ready to receive and send USDT0 and gUSDT

  • Lace on Cardano holding ADA plus USDA and/or USDM

  • Restish and jq installed and configured to call the Mynth API

You can swap out Rabby/Lace/SteelSwap for services and providers of your choosing.

2. How the swapping process works

The swaps between Cardano and Stable are done by generating a one-time deposit address using the Mynth API, then sending tokens to that address.

The overall flow is:

  1. Use Restish to call post-api-address-generate with the correct parameters.

  2. Pipe the response through jq to extract the Cardano or Stable deposit address.

  3. Send your tokens to that deposit address from the appropriate wallet.

  4. After a short delay, the corresponding tokens will arrive on the other chain.

You will be repeating this pattern with slightly different parameters depending on the direction of the swap and which token you are using.

The key token identifiers you will use are:

  • USDA on Cardano: fe7c786ab321f41c654ef6c1af7b3250a613c24e4213e0425a7ae45655534441

  • USDM on Cardano:

    c48cbb3d5e57ed56e276bc45f99ab39abe94e6cd7ac39fb402da47ad0014df105553444d

  • USDT0 on Stable:

    0x779Ded0c9e1022225f8E0630b35a9b54bE713736

You will use these token identifiers directly in the Restish commands without modification.

3. Swapping from Cardano (USDA/USDM) to Stable (USDT)

This section covers moving stablecoins from Cardano (USDA or USDM) over to Stable as USDT.

3.1 Swapping USDA on Cardano to USDT on Stable

In this direction, you start with USDA in your Lace wallet on Cardano and end with USDT in your Rabby wallet on Stable.

You will run the following Restish command, and you must fill in the placeholders before running it.

restish mynth post-api-address-generate '
  amount: <amount>,
  source.blockchain: cardano,
  source.token: fe7c786ab321f41c654ef6c1af7b3250a613c24e4213e0425a7ae45655534441,
  target.address: <YOUR RABBY ADDRESS>,
  target.blockchain: stable,
  target.token: 0x779Ded0c9e1022225f8E0630b35a9b54bE713736
' -rf body.contents | jq -r '.address'

Here is how to choose each placeholder.

For <amount>, replace this with the amount of USDA you want to swap. Use a numeric amount that matches how the Mynth API expects the value. If you are unsure or doing this for the first time, start with a small test amount.

For <YOUR RABBY ADDRESS>, paste your actual Stable wallet address from Rabby. Make sure you are using the address on the Stable Mainnet network, not an address from another chain.

When you run this command, Restish will call the Mynth API and jq will return a single line containing a Cardano address. This is a deposit address for USDA.

Copy this address carefully. In your Lace wallet on Cardano, send the USDA amount you specified to this exact address. Double-check that you are sending USDA on Cardano and that the address matches what Restish returned.

After you send the transaction, wait a few minutes. Once Mynth processes the transfer, you should see USDT0 appear in your Rabby wallet on Stable at the address you provided in target.address.

3.2 Swapping USDM on Cardano to USDT on Stable

For USDM, the process is very similar. You start with USDM in Lace and end up with USDT on Stable.

Use this command, again filling in the <amount> placeholder.

restish mynth post-api-address-generate '
  amount: <amount>,
  source.blockchain: cardano,
  source.token: c48cbb3d5e57ed56e276bc45f99ab39abe94e6cd7ac39fb402da47ad0014df105553444d,
  target.address: <YOUR RABBY ADDRESS>,
  target.blockchain: stable,
  target.token: 0x779Ded0c9e1022225f8E0630b35a9b54bE713736
' -rf body.contents | jq -r '.address'

Here, you replace <amount> with the amount of USDM on Cardano you want to swap.

For <YOUR RABBY ADDRESS>, paste your actual Stable wallet address from Rabby.

Use it exactly as given and do not change it. The rest of the parameters specify that you are swapping from Cardano USDM to Stable USDT.

When you run the command, it will again return a Cardano deposit address via jq. Copy that address and send the specified amount of USDM there from your Lace wallet.

After a few minutes, you will receive USDT in your Rabby wallet on Stable.

As before, start with a small test amount to confirm everything is working as you expect.

4. Getting gas on Stable: Converting USDT0 to gUSDT

Once you have USDT0 on the Stable network, you will still need gUSDT to pay for gas on Stable, because the gas token on Stable Mainnet is gUSDT.

To get gUSDT, go to:

Connect your Rabby wallet on Stable. Use the interface to convert 1 USDT0 (or another small amount) into gUSDT. Once the conversion completes, you will see gUSDT in your Rabby wallet.

Keep some gUSDT in your wallet at all times so that you can pay for future transactions on Stable.

5. Swapping from Stable (USDT) back to Cardano (USDA/USDM)

Now that you have USDT0 and some gUSDT on Stable, you can move value back to Cardano as USDA or USDM.

In this direction, you will:

  1. Generate a deposit address using a Restish command on Stable.

  2. Send USDT0 from your Rabby wallet to that address.

  3. Wait for the USDA or USDM to show up in your Lace wallet.

Make sure you have enough gUSDT to pay for the transaction gas before you send USDT0.

5.1 Swapping USDT on Stable to USDA on Cardano

To swap from USDT on Stable to USDA on Cardano, use this command and replace all placeholders.

restish mynth post-api-address-generate '
  amount: <amount>,
  source.blockchain: stable,
  source.token: 0x779Ded0c9e1022225f8E0630b35a9b54bE713736,
  target.address: <YOUR LACE ADDRESS>,
  target.blockchain: cardano,
  target.token: fe7c786ab321f41c654ef6c1af7b3250a613c24e4213e0425a7ae45655534441
' -rf body.contents | jq -r '.address'

For <amount>, specify how much USDT on Stable you want to swap into USDA on Cardano.

For <YOUR LACE ADDRESS>, paste your own Cardano receiving address from the Lace wallet. This is where you want to receive USDA on Cardano.

Once you run the command, jq will output a Stable deposit address. Copy this Stable address and go to Rabby.

From your Rabby wallet, on the Stable Mainnet network, send the specified amount of USDT to that deposit address. Confirm that you are sending:

  • From the Stable network

  • Using the USDT token

  • To the exact deposit address returned by jq

After the transaction confirms and the swap completes, USDA will arrive at the Lace address you set in target.address.

5.2 Swapping USDT on Stable to USDM on Cardano

The process for USDM is almost identical, except that you change the target token to the USDM identifier.

Use this command, again replacing the placeholders.

restish mynth post-api-address-generate '
  amount: <amount>,
  source.blockchain: stable,
  source.token: 0x779Ded0c9e1022225f8E0630b35a9b54bE713736,
  target.address: <YOUR LACE ADDRESS>,
  target.blockchain: cardano,
  target.token: c48cbb3d5e57ed56e276bc45f99ab39abe94e6cd7ac39fb402da47ad0014df105553444d
' -rf body.contents | jq -r '.address'

Set <amount> to the amount of USDT you want to swap into USDM, and set <YOUR LACE ADDRESS> to your own Cardano address in Lace.

As before, the command will output a Stable deposit address. Copy this address and send USDT from Rabby on the Stable network to that address.

After a short period, USDM should appear in your Lace wallet at the Cardano address you specified.

6. Practical tips and safety checks

When working with stablecoins and multiple blockchains, it is important to be careful and methodical. Here are some practical tips that fit the flow above.

Always start with a small test amount for your very first swap in each direction. For example, you might try a tiny amount of USDA to Stable, then a tiny amount of USDT back to Cardano as USDA or USDM, just to confirm everything works with your setup.

Make sure to triple-check the placeholders before running your Restish commands. Every time you see <amount>, <YOUR RABBY ADDRESS>, or <YOUR LACE ADDRESS>, replace them with:

  • <amount>: the exact quantity you want to swap

  • <YOUR RABBY ADDRESS>: your Stable Mainnet address from Rabby

  • <YOUR LACE ADDRESS>: your Cardano address from Lace

Confirm that you have selected the correct blockchain in your wallet before sending. On Rabby, ensure you are on the Stable Mainnet when sending USDT0 or using gUSDT for gas. On Lace, confirm that you are sending USDA or USDM on Cardano to the deposit address you obtained via Restish.

Keep an eye on gas. On Stable, you need a small balance of gUSDT for every transaction. If a transaction fails or does not go through, check that you still have enough gUSDT. On Cardano, you will need ADA for every transaction.

Finally, keep your wallet seed phrases and private keys secure. Never paste them into the terminal or into any scripts. The commands in this guide only require your public wallet addresses and amounts, which is all you should ever provide to these tools.

With these steps and checks, you can comfortably swap between USDT on Stable and USDA or USDM on Cardano using Rabby, Lace, Restish, jq, and the Mynth API.