查询钱包余额
查看钱包信息
查询交易记录
指定地址进行转账 返回哈希值与余额
整个过程通过go语言exec包调用服务器bitcoin-cli可执行文件
传入对应参数返回对应数据
同样可以在命令行使用curl进行查询
下面是整个程序的源码
//通过变量与bitcoind进行交互
func bitcoincode(s string) string {
str := strings.Fields(s)
var c *exec.Cmd
{
}
switch len(str) {
case 0:
break
case 1:
c = exec.Command("/usr/local/bin/bitcoin-cli", "-testnet", str[0])
case 2:
c = exec.Command("/usr/local/bin/bitcoin-cli", "-testnet", str[0], str[1])
case 3:
c = exec.Command("/usr/local/bin/bitcoin-cli", "-testnet", str[0], str[1], str[2])
}
var out bytes.Buffer
c.Stdout = &out
if err := c.Run(); err != nil {
fmt.Println("Error: ", err)
}
fmt.Println(out.String())
return out.String()
}
//实现web命令及暴露端口
func run() {
http.HandleFunc("/block_chain/getbalance", blockChainGetBalanec)
http.HandleFunc("/block_chain/getwalletinfo", blockChainGetWalletInfo)
http.HandleFunc("/block_chain/getrawtransaction", blockChainGetRawtransaction)
http.HandleFunc("/block_chain/sendtoaddress", blockChainSendToaddRess)
http.ListenAndServe(":8332", nil)
}
//实现getbalance
func blockChainGetBalanec(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, bitcoincode("getbalance"))
}
//实现getwalletinfo
func blockChainGetWalletInfo(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, bitcoincode("getwalletinfo"))
}
//实现getrawtransaction
func blockChainGetRawtransaction(w http.ResponseWriter, r *http.Request) {
blockData := r.URL.Query().Get("data")
io.WriteString(w, bitcoincode(blockData))
}
//实现sendtoaddress
func blockChainSendToaddRess(w http.ResponseWriter, r *http.Request) {
blockData := r.URL.Query().Get("data")
io.WriteString(w, bitcoincode(blockData))
blockChainGetBalanec(w, r)
}
func main() {
run()
}