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:
| Contract | Address | Purpose |
|---|---|---|
| GUSD | 0xece811d35f79C4868a2B911E55D9aa0821399EDF | Unwrap GUSD into GenericUnit |
| GenericUnit | 0x8c307baDbd78bEa5A1cCF9677caa58e7A2172502 | Shares redeemed through a collateral vault |
| USDC vault | 0x4825eFF24F9B7b76EEAFA2ecc6A1D5dFCb3c1c3f | Redeem GenericUnit for USDC |
| USDT vault | 0xB8280955aE7b5207AF4CDbdCd775135Bd38157fE | Redeem GenericUnit for USDT |
| USDS vault | 0x6133dA4Cd25773Ebd38542a8aCEF8F94cA89892A | Redeem 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:
- Open the GUSD contract on Etherscan.
- Select Contract, then Read as Proxy.
- Open
balanceOfand enter your wallet address inaccount. - Open the GenericUnit contract on Etherscan.
- Select Contract, then Read Contract.
- Open
balanceOfand 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.
- Open the GUSD Write as Proxy page.
- Select Contract, then Write as Proxy.
- Select Connect to Web3 and connect the GUSD owner wallet.
- Find
unwrapand enter these parameters:
| Parameter | Enter |
|---|---|
owner | Your connected wallet address |
recipient | Your connected wallet address |
amount | GUSD to unwrap, as an 18-decimal integer |
- Select Write and review the transaction in your wallet.
- Confirm that the destination is the GUSD contract above.
- Submit the transaction and wait for Etherscan to show Success.
- Read your GenericUnit
balanceOfagain.
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.
| Stablecoin | Vault | Stablecoin decimals |
|---|---|---|
| USDC | USDC vault | 6 |
| USDT | USDT vault | 6 |
| USDS | USDS vault | 18 |
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:
- Open the vault and select Contract, then Read as Proxy.
- Open
maxRedeem. - Enter your wallet address in
ownerand select Query. - Compare the result with your GenericUnit
balanceOf. - Choose a
sharesvalue no greater than either result. - Open
previewRedeemand enter thatsharesvalue. - 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:
- Change the vault tab from Read as Proxy to Write as Proxy.
- Select Connect to Web3 and connect the GenericUnit owner wallet.
- Find
redeemand enter these parameters:
| Parameter | Enter |
|---|---|
shares | The 18-decimal share amount checked with maxRedeem |
receiver | Your connected wallet address |
owner | Your connected wallet address |
- Select Write and review the transaction in your wallet.
- Confirm that the destination is your selected vault address.
- Submit the transaction and wait for Etherscan to show Success.
- 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:
maxRedeemreturns0: that vault has no immediate redemption capacity for your position. Check another vault or wait for liquidity to changepreviewRedeemreturns less than expected: confirm the share amount and token decimals before signing- The transaction exceeds the maximum: read
maxRedeemagain and reduceshares - 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
receivervalue and token transfer log