---
description: Tutorial on how to read account balances from the bitcoin blockchain with Go.
---
# 账户余额
### 源代码
```go
package main
import (
"crypto/tls"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"math/big"
)
func main() {
address := "3BMEXpRXTdAHagbFtjtuSS3S8ZXfQQqiTw"
req := struct {
ID int `json:"id"`
Method string `json:"method"`
Params []string `json:"params"`
}{
ID: 1,
Method: "blockchain.address.get_balance",
Params: []string{address},
}
res := struct {
JSONRPC string `json:"jsonrpc,omitempty"`
ID int `json:"id"`
Result struct {
Confirmed *big.Int `json:"confirmed"`
Uncomfirmed *big.Int `json:"unconfirmed"`
} `json:"result"`
}{}
serverAddr := "electrum.qtornado.com:50002" // mainnet
certBytes, err := ioutil.ReadFile("certs/example.com.cert")
if err != nil {
log.Fatal(err)
}
certKeyBytes, err := ioutil.ReadFile("certs/example.com.key")
if err != nil {
log.Fatal(err)
}
cert, err := tls.X509KeyPair(certBytes, certKeyBytes)
if err != nil {
log.Fatal(err)
}
fmt.Printf("dialing to server: %s\n", serverAddr)
conn, err := tls.Dial("tcp", serverAddr, &tls.Config{
Certificates: []tls.Certificate{cert},
InsecureSkipVerify: true,
})
if err != nil {
log.Fatal(err)
}
defer conn.Close()
fmt.Printf("client connected to: %s\n", conn.RemoteAddr())
reqMsgBytes, err := json.Marshal(req)
if err != nil {
log.Fatal(err)
}
reqMsg := fmt.Sprintf("%s\n", string(reqMsgBytes))
fmt.Printf("writing message: %s", reqMsg)
_, err = io.WriteString(conn, reqMsg)
if err != nil {
log.Fatal(err)
}
var (
i int
readSize int = 1024
respData []byte
)
for {
fmt.Println("reading response...")
respBytes := make([]byte, readSize)
n, err := conn.Read(respBytes)
if err != nil {
if err != io.EOF {
log.Fatal(err)
}
}
fmt.Printf("reading: %q (%d bytes)\n", string(respBytes[:n]), n)
respData = append(respData, respBytes[:n]...)
i += n
if n < readSize {
break
}
}
json.Unmarshal(respData[:i], &res)
fmt.Printf("unconfirmed: %s\n", res.Result.Uncomfirmed.String()) // unconfirmed: 0
fmt.Printf("confirmed: %s\n", res.Result.Confirmed.String()) // confirmed: 500000000
}
```