func anchorChainToDirBlockInfo(aRecord *anchor.AnchorRecord) (*common.DirBlockInfo, error) { dirBlockInfo := new(common.DirBlockInfo) dirBlockInfo.DBHeight = aRecord.DBHeight dirBlockInfo.BTCTxOffset = aRecord.Bitcoin.Offset dirBlockInfo.BTCBlockHeight = aRecord.Bitcoin.BlockHeight mrBytes, _ := hex.DecodeString(aRecord.KeyMR) dirBlockInfo.DBMerkleRoot, _ = common.NewShaHash(mrBytes) dirBlockInfo.BTCConfirmed = true txSha, _ := wire.NewShaHashFromStr(aRecord.Bitcoin.TXID) dirBlockInfo.BTCTxHash = toHash(txSha) blkSha, _ := wire.NewShaHashFromStr(aRecord.Bitcoin.BlockHash) dirBlockInfo.BTCBlockHash = toHash(blkSha) dblock, err := db.FetchDBlockByHeight(aRecord.DBHeight) if err != nil { fmt.Printf("err in FetchDBlockByHeight: %d\n", aRecord.DBHeight) dirBlockInfo.DBHash = new(common.Hash) } else { dirBlockInfo.Timestamp = int64(dblock.Header.Timestamp * 60) dirBlockInfo.DBHash = dblock.DBHash } fmt.Printf("dirBlockInfo: %s\n", spew.Sdump(dirBlockInfo)) return dirBlockInfo, nil }
func doTransaction(hash *common.Hash, blockHeight uint64, dirBlockInfo *common.DirBlockInfo) (*wire.ShaHash, error) { b := balances[0] i := copy(balances, balances[1:]) balances[i] = b msgtx, err := createRawTransaction(b, hash.Bytes(), blockHeight) if err != nil { return nil, fmt.Errorf("cannot create Raw Transaction: %s", err) } shaHash, err := sendRawTransaction(msgtx) if err != nil { return nil, fmt.Errorf("cannot send Raw Transaction: %s", err) } // for test purpose if dirBlockInfo != nil { dirBlockInfo.BTCTxHash = toHash(shaHash) } return shaHash, nil }
func doTransaction(hash *common.Hash, blockHeight uint32, dirBlockInfo *common.DirBlockInfo) (*wire.ShaHash, error) { b := balances[0] balances = balances[1:] anchorLog.Info("new balances.len=", len(balances)) msgtx, err := createRawTransaction(b, hash.Bytes(), blockHeight) if err != nil { return nil, fmt.Errorf("cannot create Raw Transaction: %s", err) } shaHash, err := sendRawTransaction(msgtx) if err != nil { return nil, fmt.Errorf("cannot send Raw Transaction: %s", err) } if dirBlockInfo != nil { dirBlockInfo.BTCTxHash = toHash(shaHash) } return shaHash, nil }