本文整理匯總了Golang中github.com/FactomProject/FactomCode/common.DirBlockInfo類的典型用法代碼示例。如果您正苦於以下問題:Golang DirBlockInfo類的具體用法?Golang DirBlockInfo怎麽用?Golang DirBlockInfo使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了DirBlockInfo類的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: anchorChainToDirBlockInfo
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
}
示例2: FetchAllUnconfirmedDirBlockInfo
// FetchAllUnconfirmedDirBlockInfo gets all of the dirBlockInfos that have BTC Anchor confirmation
func (db *LevelDb) FetchAllUnconfirmedDirBlockInfo() (dirBlockInfoMap map[string]*common.DirBlockInfo, err error) {
db.dbLock.Lock()
defer db.dbLock.Unlock()
var fromkey []byte = []byte{byte(TBL_DB_INFO)} // Table Name (1 bytes)
var tokey []byte = []byte{byte(TBL_DB_INFO + 1)} // Table Name (1 bytes)
dirBlockInfoMap = make(map[string]*common.DirBlockInfo)
iter := db.lDb.NewIterator(&util.Range{Start: fromkey, Limit: tokey}, db.ro)
for iter.Next() {
dBInfo := new(common.DirBlockInfo)
// The last byte stores the confirmation flag
if iter.Value()[len(iter.Value())-1] == 0 {
_, err := dBInfo.UnmarshalBinaryData(iter.Value())
if err != nil {
return dirBlockInfoMap, err
}
dirBlockInfoMap[dBInfo.DBMerkleRoot.String()] = dBInfo
}
}
iter.Release()
err = iter.Error()
return dirBlockInfoMap, err
}
示例3: InsertDirBlockInfo
// Insert the Directory Block meta data into db
func (db *LevelDb) InsertDirBlockInfo(dirBlockInfo *common.DirBlockInfo) (err error) {
if dirBlockInfo.BTCTxHash == nil {
return
}
db.dbLock.Lock()
defer db.dbLock.Unlock()
if db.lbatch == nil {
db.lbatch = new(leveldb.Batch)
}
defer db.lbatch.Reset()
var key []byte = []byte{byte(TBL_DB_INFO)} // Table Name (1 bytes)
key = append(key, dirBlockInfo.DBHash.Bytes()...)
binaryDirBlockInfo, _ := dirBlockInfo.MarshalBinary()
db.lbatch.Put(key, binaryDirBlockInfo)
err = db.lDb.Write(db.lbatch, db.wo)
if err != nil {
return err
}
return nil
}
示例4: InsertDirBlockInfoMultiBatch
func (db *LevelDb) InsertDirBlockInfoMultiBatch(dirBlockInfo *common.DirBlockInfo) (err error) {
if dirBlockInfo == nil {
return nil
}
if dirBlockInfo.BTCTxHash == nil {
return
}
if db.lbatch == nil {
return fmt.Errorf("db.lbatch == nil")
}
if db.lbatch == nil {
db.lbatch = new(leveldb.Batch)
}
defer db.lbatch.Reset()
var key = []byte{byte(TBL_DB_INFO)} // Table Name (1 bytes)
key = append(key, dirBlockInfo.DBHash.Bytes()...)
binaryDirBlockInfo, _ := dirBlockInfo.MarshalBinary()
db.lbatch.Put(key, binaryDirBlockInfo)
return nil
}
示例5: doTransaction
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
}
示例6: doTransaction
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
}