package main import ( "fmt" "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcrpcclient" ) func explore(client *btcrpcclient.Client, blockHash string) { for blockHash != "" { //generate hash from string bh, err := chainhash.NewHashFromStr(blockHash) check(err) fmt.Print("blockHash: ") fmt.Println(bh) block, err := client.GetBlockVerbose(bh) check(err) fmt.Print("height: ") fmt.Println(block.Height) fmt.Print("rawTx: ") fmt.Println(block.RawTx) fmt.Print("Tx: ") fmt.Println(block.Tx) fmt.Print("Time: ") fmt.Println(block.Time) fmt.Print("Confirmations: ") fmt.Println(block.Confirmations) fmt.Print("Fee: ") th, err := chainhash.NewHashFromStr(block.Tx[0]) check(err) tx, err := client.GetRawTransactionVerbose(th) check(err) var totalFee float64 for _, Vo := range tx.Vout { totalFee = totalFee + Vo.Value } fmt.Print("totalFee: ") fmt.Print(totalFee) fmt.Println(" FAIR") //for each Tx, get the Tx value var totalAmount float64 for k, txHash := range block.Tx { //first Tx is the Fee //after first Tx is the Sent Amount if k > 0 { th, err := chainhash.NewHashFromStr(txHash) check(err) fmt.Print("tx hash: ") fmt.Println(th) tx, err := client.GetRawTransactionVerbose(th) check(err) for _, Vo := range tx.Vout { totalAmount = totalAmount + Vo.Value } fmt.Print("totalAmount: ") fmt.Print(totalAmount) fmt.Println(" FAIR") } } fmt.Println("-----") //set the next block blockHash = block.NextHash } fmt.Println("reached the end of blockchain") }