Skip to content

Withdraw from Ethereum

Use this guide to redeem GUSD or GenericUnit for USDC, USDT, or USDS on Ethereum Mainnet. You will unwrap GUSD when needed, check live vault liquidity, and redeem GenericUnit through Etherscan.

Check the Ethereum contracts

These are the contracts used in this route:

ContractAddressPurpose
GUSD0xece811d35f79C4868a2B911E55D9aa0821399EDFUnwrap GUSD into GenericUnit
GenericUnit0x8c307baDbd78bEa5A1cCF9677caa58e7A2172502Shares redeemed through a collateral vault
USDC vault0x4825eFF24F9B7b76EEAFA2ecc6A1D5dFCb3c1c3fRedeem GenericUnit for USDC
USDT vault0xB8280955aE7b5207AF4CDbdCd775135Bd38157fERedeem GenericUnit for USDT
USDS vault0x6133dA4Cd25773Ebd38542a8aCEF8F94cA89892ARedeem GenericUnit for USDS

Ethereum Mainnet has chain ID 1. Stop if your wallet displays another network when you connect.

Check whether you hold GUSD or GenericUnit

Read both balances before submitting a transaction:

  1. Open the GUSD contract on Etherscan.
  2. Select Contract, then Read as Proxy.
  3. Open balanceOf and enter your wallet address in account.
  4. Open the GenericUnit contract on Etherscan.
  5. Select Contract, then Read Contract.
  6. Open balanceOf and enter the same wallet address.

Both results use 18 decimals. A result of 1000000000000000000 equals one token.

Unwrap GUSD into GenericUnit

Skip this section if your balance is already in GenericUnit. Unwrapping burns the selected GUSD amount and sends the same number of GenericUnit shares to recipient.

  1. Open the GUSD Write as Proxy page.
  2. Select Contract, then Write as Proxy.
  3. Select Connect to Web3 and connect the GUSD owner wallet.
  4. Find unwrap and enter these parameters:
ParameterEnter
ownerYour connected wallet address
recipientYour connected wallet address
amountGUSD to unwrap, as an 18-decimal integer
  1. Select Write and review the transaction in your wallet.
  2. Confirm that the destination is the GUSD contract above.
  3. Submit the transaction and wait for Etherscan to show Success.
  4. Read your GenericUnit balanceOf again.

When the connected wallet is also owner, call unwrap without an approval. Do not approve another address to unwrap your GUSD for this route.

Choose a collateral vault

Each vault returns one stablecoin. Available liquidity can differ between vaults, so read the vault before choosing it.

StablecoinVaultStablecoin decimals
USDCUSDC vault6
USDTUSDT vault6
USDSUSDS vault18

The vault may hold less immediately available liquidity than your GenericUnit balance. This does not change your share balance.

Check your redeemable shares

Use the read functions on your selected vault to choose a valid amount:

  1. Open the vault and select Contract, then Read as Proxy.
  2. Open maxRedeem.
  3. Enter your wallet address in owner and select Query.
  4. Compare the result with your GenericUnit balanceOf.
  5. Choose a shares value no greater than either result.
  6. Open previewRedeem and enter that shares value.
  7. Record the returned asset amount before submitting the redemption.

shares and maxRedeem use 18 decimals. previewRedeem returns native units: 6 decimals for USDC or USDT, and 18 decimals for USDS.

Redeem GenericUnit for the stablecoin

Redeem the exact share amount you checked in the previous section:

  1. Change the vault tab from Read as Proxy to Write as Proxy.
  2. Select Connect to Web3 and connect the GenericUnit owner wallet.
  3. Find redeem and enter these parameters:
ParameterEnter
sharesThe 18-decimal share amount checked with maxRedeem
receiverYour connected wallet address
ownerYour connected wallet address
  1. Select Write and review the transaction in your wallet.
  2. Confirm that the destination is your selected vault address.
  3. Submit the transaction and wait for Etherscan to show Success.
  4. Check the token transfers in the transaction and your stablecoin balance.

When the connected wallet is also owner, call redeem without a GenericUnit approval. Another caller needs an allowance from the owner.

Resolve common Ethereum errors

Use the read functions again before retrying a failed transaction:

  • maxRedeem returns 0: that vault has no immediate redemption capacity for your position. Check another vault or wait for liquidity to change
  • previewRedeem returns less than expected: confirm the share amount and token decimals before signing
  • The transaction exceeds the maximum: read maxRedeem again and reduce shares
  • The wallet shows another contract: reject the transaction and reopen the vault from this guide
  • The transaction succeeded but the token is missing: inspect the receiver value and token transfer log