---
# System prepended metadata

title: Amino X Bridge Out Documentation <br/><font color="gray">(Aminio X 出金文件)</font>

---

# Amino X Bridge Out Documentation <br/><font color="gray">(Aminio X 出金文件)</font>

According to the Amino X official documentation, bridge out could be accomplish by interact with contract and no API required.
<font color="gray">根據 Amino X 官方文件, 出金流程可以只靠跟合約互動即可完成而無需額外的API</font>

## Withdraw Function <br /><font color="gray">出金函式</font>
```solidity
transferBridgedOut(
    address to,
    uint256 value,
    uint256 targetChainId,
    uint256 targetChainType
) external returns (bool) {
    ...
}
```

## Target Chain ID List <br /><font color="gray">鏈 ID 列表</font>
Binance mainnet: 56
<font color="gray">幣安主鏈: 56</font>
Binance testnet: 97
<font color="gray">幣安測試鏈: 97</font>
Tron mainnet: 11111
<font color="gray">Tron 主鏈: 11111</font>
Tron Shasta testnet: 1
<font color="gray">Tron Shasta 測試鏈: 1</font>


## Target Chain Type List <br /><font color="gray">鏈類型列表</font>
```
0: ethereum
1: binance
2: aminox
3: polygon
4: tron
```

## Some Example <br /><font color="gray">範例</font>
For Example, the following command should be sent if we want to bridge out USDT from Amino X testnet to Binance testnet<br /><font color="gray">舉例說明:如果我們想要從 Amino X 測試鏈出金至幣安測試鏈, 應該要執行以下指令</font>
```shell
cast send --rpc-url https://aminoxtestnet.node.alphacarbon.network \
--private-key 000000000000000000000000000000000000000... \
{token_address} \ *address of USDT, ACT...
"transferBridgedOut(address, uint256, uint256, uint256)" \
{to_address} \ *target addresse you want to withdraw to
{value * decimals of the token} \ 
97 \
1
```

## Token Address List <br /><font color="gray">Token 地址列表</font>
Mainnet: https://aminox.blockscout.alphacarbon.network/tokens
Testnet: https://aminoxtestnet.blockscout.alphacarbon.network/tokens

## Tron Address Handle
Tron address is quite differnet to Amino X and Binance, we must handle the tron address with different way, here is the example code from Amino X team.<br /><font color="gray">Tron 的地址格式與 Amino X 和幣安鏈不太一樣, 我們必須對Tron 的地址作額外處理, 以下是 Amino X 的團隊提供的程式碼範例</font>
```javascript
const decodeBase58Address = (base58Sting: string) => {
	if (typeof base58Sting != 'string') return undefined;

	if (base58Sting.length <= 4) return undefined;

	return `0x${Buffer.from(bs58.decode(base58Sting))
		.toString('hex')
		.substring(2, 42)}`;
};

// if to chain is Tron, must decode address
const hexAddress =
    toChain === EChainType.tron
        ? decodeBase58Address(address)
        : address;
```

## Bridge abi.json
```json
[
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "from",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            }
        ],
        "name": "BridgeFee",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "from",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "value",
                "type": "uint256"
            }
        ],
        "name": "Transfer",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "from",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "sourceChainId",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "sourceChainType",
                "type": "uint256"
            }
        ],
        "name": "TransferBridgedIn",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "from",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "bridgeAddress",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "targetChainId",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "targetChainType",
                "type": "uint256"
            }
        ],
        "name": "TransferBridgedOut",
        "type": "event"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "recipient",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "amount",
                "type": "uint256"
            }
        ],
        "name": "transfer",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "value",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "sourceChainId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "sourceChainType",
                "type": "uint256"
            }
        ],
        "name": "transferBridgedIn",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "value",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "targetChainId",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "targetChainType",
                "type": "uint256"
            }
        ],
        "name": "transferBridgedOut",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "account",
                "type": "address"
            }
        ],
        "name": "balanceOf",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "decimals",
        "outputs": [
            {
                "internalType": "uint8",
                "name": "",
                "type": "uint8"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "name",
        "outputs": [
            {
                "internalType": "string",
                "name": "",
                "type": "string"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "owner",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "symbol",
        "outputs": [
            {
                "internalType": "string",
                "name": "",
                "type": "string"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "totalSupply",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    }
]
```