5 以太坊余额、token余额校验与转账问题

    //查询余额
    balance,err := client.BalanceAt(context.Background(),msg.From,big.NewInt(int64(blockNumber)))
    if err != nil {
        fmt.Println("GetBalanceAt Error:", err)
        return
    }
    //将balance转为eth单位
    fBalance := new(big.Float)
    fBalance.SetString(balance.String())
    ethBalance := new(big.Float).Quo(fBalance,big.NewFloat(math.Pow10(18)))
    fmt.Println("ethBalance:",ethBalance)

    //设置最低余额
    lessBalance := new(big.Int).SetUint64(uint64(8000000000000000))
    fmt.Println("lessBalance:",lessBalance)//800,000,000,000,000,0
    lfBalance := new(big.Float)
    lfBalance.SetString(lessBalance.String())
    lethBalance := new(big.Float).Quo(lfBalance,big.NewFloat(math.Pow10(18)))
    fmt.Println("lethBalance:",lethBalance)//0.008

    //比较当前余额是否低于最低余额
    if ethBalance < lethBalance {
        fmt.Println("余额不足")
    }

用以上方法获得以太坊余额后,想比较余额与设置的最低余额时,提示operator < not defined on *Float,请问应该如何比较余额是否达到自定义的数字呢?以及如何获取ERC20代币的余额及代币转账

请先 登录 后评论

最佳答案 2020-10-29 18:19

没这么算过, 不过算法为大数整型后, 相减一下 判断是否 大于 0 就可以以。

ERC20 代币的余额: 在代币合约地址上调用 balanceOf 函数。 转账: 调用 transfer 函数。参考 ERC20 标准:https://learnblockchain.cn/2018/01/12/create_token

请先 登录 后评论

其它 0 个回答

  • 0 关注
  • 0 收藏,3411 浏览
  • 廖生 提出于 2020-10-27 12:06