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
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?