获取USDT余额(erc20代币)

时间:2021-06-09 14:50:40

标签: ethereum geth erc20

我正在尝试获取 USDT 地址的余额(erc20 代币)。

func tetherAmount(addrHex string) {
    conn, err := ethclient.Dial("https://mainnet.infura.io/v3/[api_here]")
    if err != nil {
        log.Fatal("Whoops something went wrong!", err)
    }

    contract, err := NewTetherToken(common.HexToAddress("0xdAC17F958D2ee523a2206206994597C13D831ec7"), conn)
    if err != nil {
        log.Fatalf("Failed to initiate contract: %v", err)
    }

    // this func return *big.Int, error
    amount, _ := contract.BalanceOf(&bind.CallOpts{}, common.HexToAddress(addrHex))
    fmt.Println("amount:", amount)
}

通过这段代码,我得到了下一个结果:

amount: 917750889

这个随机地址的实际余额是 917.750889 USDT。 那么如何将得到的结果 (917750889) 转换为简单格式 (usdt) ?

2 个答案:

答案 0 :(得分:1)

给有需要的人:

app_server2

答案 1 :(得分:0)

USDT 有 6 位小数。您可以通过调用合约的 decimals() 函数来获取此编号。

然后将 amount 除以 10 ^ decimals