兄弟连区块链入门教程之基础开发通过接口查询币种提币情况bch

代码如下
  
  
  package main
  
  import (
   "encoding/json"
   "fmt"
  
   "github.com/buger/jsonparser"
   "github.com/levigross/grequests"
  )
  
  // HTTPGet .
  func HTTPGet(url string, requestOptions *grequests.RequestOptions) (response []byte, err error) {
   httpResponse, err := grequests.Get(url, requestOptions)
   if err == nil {
   if httpResponse.StatusCode == 200 {
   response = httpResponse.Bytes()
   }
   }
   return
  }
  
  // BchBlocksChainCheck 根据提币的数量,提币方地址以及目标方地址来检查提币是否已经confirmed.
  // 返回值有两个:提币状态以及已收到的提币数量(扣除手续费)
  func BchBlocksChainCheck(withdrawAmount float64, originalAddress string, targetAddress string) (status string, netWithdrawAmount float64, confirmations int64, err error) {
   targetURL := fmt.Sprintf("https://bch-chain.api.btc.com/v3/address/%s/tx", targetAddress)
   bData, err := HTTPGet(targetURL, nil)
   if err != nil {
   fmt.Println("error: HTTPGet targetURL failed.")
   return
   }
   //fmt.Println(string(bData))
  
   _, err = jsonparser.ArrayEach(bData, func(value []byte, dataType jsonparser.ValueType, offset int, e error) {
   outs, , _, e := jsonparser.Get(value, "outputs")
   confirmations, , _, e := jsonparser.Get(value, "confirmations")
   fees, , _, e := jsonparser.Get(value, "fee")
   fees, e := jsonparser.GetInt(_fees)
   confirmations, e = jsonparser.GetInt(_confirmations)
  
   status = "online"
   jsonparser.ArrayEach(_outs, func(out []byte, dataType jsonparser.ValueType, offset int, e error) {
   addr, , _, e := jsonparser.Get(out, "addresses")
   value, , _, e := jsonparser.Get(out, "value")
  
   var outputs []string
   e = json.Unmarshal(_addr, &outputs)
   v, e := jsonparser.GetFloat(_value)
  
   if outputs[0] == targetAddress && v == withdrawAmount {
   fmt.Println("fees: ", fees)
   status = "confirmed"
   netWithdrawAmount = v
   }
   })
   })
   return
  }
  
  func main() {
   status, netReceiveAmount, confirmations, err := BchBlocksChainCheck(1567646685, "1JnCVng5JaVSmPxtm3wjkUXVDv2HXZBJJw", "15um5NFHM39xPdnnxwbEY4LeSMC9CE9cky")
   if err != nil {
   fmt.Println("request failed...")
   return
   }
   fmt.Println(fmt.Sprintf("status: %s, net_withdraw_amount: %f, confirmations: %d", status, netReceiveAmount, confirmations))
  }
  

原文地址:http://blog.51cto.com/12918475/2295873

时间: 2024-10-02 13:49:30

兄弟连区块链入门教程之基础开发通过接口查询币种提币情况bch的相关文章

兄弟连区块链入门到精通教程基础开发通过接口查询xrp提币情况

package main import ( "errors" "fmt" "math" "strconv" "strings" "github.com/buger/jsonparser" "github.com/levigross/grequests" ) const min = 0.000000000001 func isEqual(f1, f2 float64)

区块链教程交易所基础开发通过接口查询币种的提币情况-etc

兄弟连区块链教程交易所基础开发通过接口查询币种的提币情况-etcpackage main import ("fmt" "github.com/buger/jsonparser" "github.com/levigross/grequests" ) // HTTPGet .func HTTPGet(url string, requestOptions *grequests.RequestOptions) (response []byte, err

区块链教程基础开发通过接口查询币种的提币情况-dash

兄弟连区块链教程基础开发通过接口查询币种的提币情况-dash:package main import ("encoding/json""fmt""math" "github.com/buger/jsonparser" "github.com/levigross/grequests" ) const min = 0.000000000001 func isEqual(f1, f2 float64) bool

区块链教程交易所基础开发通过接口查询各个币种的提币情况-eth

兄弟连区块链教程交易所基础开发通过接口查询各个币种的提币情况-eth package main import ( "errors" "fmt" "math" "strconv" "strings" "github.com/buger/jsonparser" "github.com/levigross/grequests" ) const min = 0.0000000

兄弟连区块链入门教程分享区块链POW证明代码实现demo

这里强调一下区块链的协议分层?应用层?合约层?激励机制?共识层?网络层?数据层上 一篇主要实现了区块链的 数据层,数据层主要使用的技术就是对数据的校验,求hash.这里介绍工作量证明POW, POW是属于共识机制的内容.PoW机制中根据矿工的工作量来执行货币的分配和记账权的确定.算力竞争的胜者将获得相应区块记账权和比特币奖励.因此,矿机芯片的算力越高,挖矿的时间更长,就可以获得更多的数字货币.优点:算法简单,容易实现:节点间无需交换额外的信息即可达成共识:破坏系统需要投入极大的成本.缺点:浪费能

兄弟连区块链入门教程eth源码分析RPC分析

这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符.在这个环境里也内置了一些用来操作eth的 JavaScript 对象,可以直接使用这些对象.这些对象主要包括: eth:包含一些跟操作区块链相关的方法:net:包含一些查看p2p网络状态的方法:admin:包含一些与管理节点相关的方法:miner:包含启动&停止挖矿的一些方法:personal:主要包含一些管理账户的方法:txpool:包含一些查看交易内存池的方法:web3

区块链入门教程以太坊源码分析fast sync算法一

区块链入门教程以太坊源码分析fast sync算法一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上.this PR aggregates a lot of small modifications to core, trie, eth and other packages to collectively implement the eth/63 fast synch

区块链入门教程

区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来. 可是,简单易懂的入门文章却很少.区块链到底是什么,有何特别之处,很少有解释. 下面,我就来尝试,写一篇最好懂的区块链教程.毕竟它也不是很难的东西,核心概念非常简单,几句话就能说清楚.我希望读完本文,你不仅可以理解区块链,还会明白什么是挖矿.为什么挖矿越来越难等问题. 需要说明的是,我并非这方面的专家.虽然很早就关注,但是仔细地了解区块链,还是从今年初开始.文中的错误和不准确的地方,欢迎大家指正. 一.区块链的本质

区块链入门教程(转)

原作者:阮一峰 原文链接:http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html 区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来. 可是,简单易懂的入门文章却很少.区块链到底是什么,有何特别之处,很少有解释. 下面,我就来尝试,写一篇最好懂的区块链教程.毕竟它也不是很难的东西,核心概念非常简单,几句话就能说清楚.我希望读完本文,你不仅可以理解区块链,还会明白什么是挖矿.为什么挖矿越来越难等问