dongqiongzheng0615 2016-02-22 10:48
浏览 264
已采纳

在Go中查找地址的BTC余额

I need to correct and transform a function, to checking 2 addresses of btc balance, like (addr and addr1 ), and the return is json value, i need to specify im not know very well golang.. need help!

func balance(addr) {
    var url = "https://bitcoin.toshi.io/api/v0/addresses/" + addr
    response, _ := http.Get(url)
    defer response.Body.Close()
    contents, _ := ioutil.ReadAll(response.Body)
    return contents
}

EDIT:

i need a function to get balances of 2 btc addresses, or to use this libraries btcwallet.

func GetAddressBalance(icmd btcjson.Cmd) (interface{}, *btcjson.Error) 
func GetAddressesByAccount(icmd btcjson.Cmd) (interface{}, *btcjson.Error) 
func GetBalance(icmd btcjson.Cmd) (interface{}, *btcjson.Error) 
  • 写回答

1条回答 默认 最新

  • duanjiwang2927 2016-02-22 14:18
    关注

    You were on the right track. The api returns a json. This can be unmarshalled into a struct (Address). That way you can access everything returned by the api. Do not forget to always check for error codes! Replace some_address with an actual address to get the balance.

    package main
    
    import (
        "encoding/json"
        "fmt"
        "net/http"
    )
    
    func main() {
        a, err := getAddress("some_address")
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Println("Balance:", a.Balance)
    }
    
    type Address struct {
        Hash                string
        Balance             int
        Received            int
        Send                int
        UnconfirmedBalance  int `json:"unconfirmed_balance"`
        UnconfirmedReceived int `json:"unconfirmed_received"`
        UnconfirmedSent     int `json:"unconfirmed_sent"`
    }
    
    func getAddress(addr string) (*Address, error) {
        resp, err := http.Get("https://bitcoin.toshi.io/api/v0/addresses/" + addr)
        if err != nil {
            return nil, err
        }
        defer resp.Body.Close()
    
        if resp.StatusCode != http.StatusOK {
            return nil, fmt.Errorf("Error: %v", http.StatusText(resp.StatusCode))
        }
    
        var address Address
        decoder := json.NewDecoder(resp.Body)
        if err := decoder.Decode(&address); err != nil {
            return nil, err
        }
    
        return &address, nil
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)