FAQ
How to unwrap USDT0 to gUSDT
Withdraw the amount you want to convert to gUSDT from USDT0 here

Testing $STABLE Token Functionality
The contract source code and ABI are provided below:
[Source code]
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "../common/CosmosTypes.sol";
address constant IBANK_PRECOMPILE_ADDRESS = 0x0000000000000000000000000000000000001003;
IBank constant IBANK_CONTRACT = IBank(IBANK_PRECOMPILE_ADDRESS);
interface IBank {
function mint(address,uint256) external returns (bool);
function burn(address,uint256) external returns (bool);
function transfer(address,uint256) external returns (bool);
function transferFrom(address,address,uint256) external returns (bool);
function multiTransfer(address[] calldata, uint256[] calldata) external returns (bool);
function approve(address,uint256) external returns (bool);
function revoke(address) external returns (bool); // custom method
function balanceOf(address) external view returns (uint256);
function totalSupply() external view returns (uint256);
function allowance(address,address) external view returns (uint256);
// Events
event CoinReceived(address indexed receiver, Coin[] amount);
event Coinbase(address indexed minter, Coin[] amount);
event CoinSpent(address indexed spender, Coin[] amount);
event Burn(address indexed burner, Coin[] amount);
event PrecompiledBankMint(address indexed from, address indexed to, uint256 value);
event PrecompiledBankBurn(address indexed from, address indexed to, uint256 value);
event PrecompiledBankTransfer(address indexed from, address indexed to, uint256 value);
event PrecompiledBankApproval(address indexed owner, address indexed spender, uint256 value);
event PrecompiledBankRevoke(address indexed owner, address indexed spender, uint256 value);
}
[ABI]
[
{
"type": "function",
"name": "allowance",
"inputs": [
{ "name": "", "type": "address", "internalType": "address" },
{ "name": "", "type": "address", "internalType": "address" }
],
"outputs": [
{ "name": "", "type": "uint256", "internalType": "uint256" }
],
"stateMutability": "view"
},
{
"type": "function",
"name": "approve",
"inputs": [
{ "name": "", "type": "address", "internalType": "address" },
{ "name": "", "type": "uint256", "internalType": "uint256" }
],
"outputs": [
{ "name": "", "type": "bool", "internalType": "bool" }
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "balanceOf",
"inputs": [
{ "name": "", "type": "address", "internalType": "address" }
],
"outputs": [
{ "name": "", "type": "uint256", "internalType": "uint256" }
],
"stateMutability": "view"
},
{
"type": "function",
"name": "burn",
"inputs": [
{ "name": "", "type": "address", "internalType": "address" },
{ "name": "", "type": "uint256", "internalType": "uint256" }
],
"outputs": [
{ "name": "", "type": "bool", "internalType": "bool" }
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "mint",
"inputs": [
{ "name": "", "type": "address", "internalType": "address" },
{ "name": "", "type": "uint256", "internalType": "uint256" }
],
"outputs": [
{ "name": "", "type": "bool", "internalType": "bool" }
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "multiTransfer",
"inputs": [
{ "name": "", "type": "address[]", "internalType": "address[]" },
{ "name": "", "type": "uint256[]", "internalType": "uint256[]" }
],
"outputs": [
{ "name": "", "type": "bool", "internalType": "bool" }
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "revoke",
"inputs": [
{ "name": "", "type": "address", "internalType": "address" }
],
"outputs": [
{ "name": "", "type": "bool", "internalType": "bool" }
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "totalSupply",
"inputs": [],
"outputs": [
{ "name": "", "type": "uint256", "internalType": "uint256" }
],
"stateMutability": "view"
},
{
"type": "function",
"name": "transfer",
"inputs": [
{ "name": "", "type": "address", "internalType": "address" },
{ "name": "", "type": "uint256", "internalType": "uint256" }
],
"outputs": [
{ "name": "", "type": "bool", "internalType": "bool" }
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "transferFrom",
"inputs": [
{ "name": "", "type": "address", "internalType": "address" },
{ "name": "", "type": "address", "internalType": "address" },
{ "name": "", "type": "uint256", "internalType": "uint256" }
],
"outputs": [
{ "name": "", "type": "bool", "internalType": "bool" }
],
"stateMutability": "nonpayable"
},
{
"type": "event",
"name": "Burn",
"inputs": [
{ "name": "burner", "type": "address", "indexed": true, "internalType": "address" },
{
"name": "amount",
"type": "tuple[]",
"indexed": false,
"internalType": "structCoin[]",
"components": [
{ "name": "denom", "type": "string", "internalType": "string" },
{ "name": "amount", "type": "uint256", "internalType": "uint256" }
]
}
],
"anonymous": false
},
{
"type": "event",
"name": "CoinReceived",
"inputs": [
{ "name": "receiver", "type": "address", "indexed": true, "internalType": "address" },
{
"name": "amount",
"type": "tuple[]",
"indexed": false,
"internalType": "structCoin[]",
"components": [
{ "name": "denom", "type": "string", "internalType": "string" },
{ "name": "amount", "type": "uint256", "internalType": "uint256" }
]
}
],
"anonymous": false
},
{
"type": "event",
"name": "CoinSpent",
"inputs": [
{ "name": "spender", "type": "address", "indexed": true, "internalType": "address" },
{
"name": "amount",
"type": "tuple[]",
"indexed": false,
"internalType": "structCoin[]",
"components": [
{ "name": "denom", "type": "string", "internalType": "string" },
{ "name": "amount", "type": "uint256", "internalType": "uint256" }
]
}
],
"anonymous": false
},
{
"type": "event",
"name": "Coinbase",
"inputs": [
{ "name": "minter", "type": "address", "indexed": true, "internalType": "address" },
{
"name": "amount",
"type": "tuple[]",
"indexed": false,
"internalType": "structCoin[]",
"components": [
{ "name": "denom", "type": "string", "internalType": "string" },
{ "name": "amount", "type": "uint256", "internalType": "uint256" }
]
}
],
"anonymous": false
},
{
"type": "event",
"name": "PrecompiledBankApproval",
"inputs": [
{ "name": "owner", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "spender", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }
],
"anonymous": false
},
{
"type": "event",
"name": "PrecompiledBankBurn",
"inputs": [
{ "name": "from", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "to", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }
],
"anonymous": false
},
{
"type": "event",
"name": "PrecompiledBankMint",
"inputs": [
{ "name": "from", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "to", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }
],
"anonymous": false
},
{
"type": "event",
"name": "PrecompiledBankRevoke",
"inputs": [
{ "name": "owner", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "spender", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }
],
"anonymous": false
},
{
"type": "event",
"name": "PrecompiledBankTransfer",
"inputs": [
{ "name": "from", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "to", "type": "address", "indexed": true, "internalType": "address" },
{ "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }
],
"anonymous": false
}
]