获取USDT余额(erc20代币)
Get USDT balance (erc20 token)
我正在尝试获取 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)?
USDT有6位小数。您可以通过调用合约的 decimals()
函数来获取此数字。
然后将 amount
除以 10 ^ decimals
。
有需要的人:
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)
}
amount, _ := contract.BalanceOf(&bind.CallOpts{}, common.HexToAddress(addrHex))
decimals, _ := contract.Decimals(&bind.CallOpts{})
fmt.Println("amount:", float64(amount.Int64())/math.Pow(float64(10), float64(decimals.Int64())))
}
我正在尝试获取 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)?
USDT有6位小数。您可以通过调用合约的 decimals()
函数来获取此数字。
然后将 amount
除以 10 ^ decimals
。
有需要的人:
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)
}
amount, _ := contract.BalanceOf(&bind.CallOpts{}, common.HexToAddress(addrHex))
decimals, _ := contract.Decimals(&bind.CallOpts{})
fmt.Println("amount:", float64(amount.Int64())/math.Pow(float64(10), float64(decimals.Int64())))
}