本文整理匯總了Golang中github.com/FactomProject/factoid/block.FBlock.UnmarshalBinary方法的典型用法代碼示例。如果您正苦於以下問題:Golang FBlock.UnmarshalBinary方法的具體用法?Golang FBlock.UnmarshalBinary怎麽用?Golang FBlock.UnmarshalBinary使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/FactomProject/factoid/block.FBlock
的用法示例。
在下文中一共展示了FBlock.UnmarshalBinary方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: getAll
func getAll() error {
dbs := make([]*common.DirectoryBlock, 0, 100)
next := DBHeadStr
for {
blk, err := factom.GetRaw(next)
if err != nil {
panic(err.Error())
}
db := new(common.DirectoryBlock)
err = db.UnmarshalBinary(blk)
if err != nil {
panic(err.Error())
}
dbs = append(dbs, db)
if bytes.Equal(db.Header.PrevKeyMR.Bytes(), DBHeadLast) {
break
}
next = hex.EncodeToString(db.Header.PrevKeyMR.Bytes())
}
DBHeadLast = DBHead
for i := len(dbs) - 1; i >= 0; i-- {
DirectoryBlocks = append(DirectoryBlocks, dbs[i])
fb := new(block.FBlock)
var fcnt int
for _, dbe := range dbs[i].DBEntries {
if bytes.Equal(dbe.ChainID.Bytes(), common.FACTOID_CHAINID) {
fcnt++
hashstr := hex.EncodeToString(dbe.KeyMR.Bytes())
fdata, err := factom.GetRaw(hashstr)
if err != nil {
panic(err.Error())
}
err = fb.UnmarshalBinary(fdata)
if err != nil {
panic(err.Error())
}
FactoidBlocks = append(FactoidBlocks, fb)
break
}
}
if fb == nil {
panic("Missing Factoid Block from a directory block")
}
if fcnt > 1 {
panic("More than one Factom Block found in a directory block.")
}
if err := ProcessFB(fb); err != nil {
return err
}
}
return nil
}
示例2: getAll
func getAll() error {
dbs := make([]*common.DirectoryBlock, 0, 100)
next := DBHeadStr
for {
blk, err := factom.GetRaw(next)
if err != nil {
panic(err.Error())
}
db := new(common.DirectoryBlock)
err = db.UnmarshalBinary(blk)
if err != nil {
panic(err.Error())
}
dbs = append(dbs, db)
if bytes.Equal(db.Header.PrevKeyMR.Bytes(), common.ZERO_HASH[:]) {
break
}
next = hex.EncodeToString(db.Header.PrevKeyMR.Bytes())
}
for i := len(dbs) - 1; i >= 0; i-- {
DirectoryBlocks = append(DirectoryBlocks, dbs[i])
fb := new(block.FBlock)
for _, dbe := range dbs[i].DBEntries {
if bytes.Equal(dbe.ChainID.Bytes(), common.FACTOID_CHAINID) {
hashstr := hex.EncodeToString(dbe.KeyMR.Bytes())
fdata, err := factom.GetRaw(hashstr)
if err != nil {
panic(err.Error())
}
err = fb.UnmarshalBinary(fdata)
if err != nil {
panic(err.Error())
}
FactoidBlocks = append(FactoidBlocks, fb)
break
}
}
if fb == nil {
fmt.Println("Missing Factoid Block")
}
}
return nil
}
示例3: Test_create_genesis_FactoidState
//.........這裏部分代碼省略.........
len(tx.GetInputs()), len(tx.GetOutputs()), len(tx.GetECOutputs())), // Msg
0) // Expire
}
if len(m) < min {
min = len(m)
cp.CP.AddUpdate(
"min transaction size", // tag
"info", // Category
fmt.Sprintf("Min Transaction Size %d", min), // Title
fmt.Sprintf("<pre>#inputs = %-3d #outputs = %-3d #ecoutputs = %-3d<pre>",
len(tx.GetInputs()), len(tx.GetOutputs()), len(tx.GetECOutputs())), // Msg
0) // Expire
}
k := rand.Int() % (len(m) - 2)
k++
good := true
flip = rand.Int() % 100
// To simulate bad data, I mess up some of the data here.
if rand.Int()%100 < 5 { // Mess up 5 percent of the transactions
good = false
if flip < 49 { // Flip a coin
m = m[k:]
fs.stats.errors["lost start of trans"] += 1
fs.stats.full["lost start of trans"] = "lost start of trans"
} else {
m = m[:k]
fs.stats.errors["lost end of trans"] += 1
fs.stats.full["lost end of trans"] = "lost end of trans"
}
}
t := new(fct.Transaction)
err = t.UnmarshalBinary(m)
if good && tx.IsEqual(t) != nil {
fmt.Println("Fail valid Unmarshal")
test.Fail()
return
}
if err == nil {
if good && err != nil {
fmt.Println("Added a transaction that should have failed to be added")
fmt.Println(err)
test.Fail()
return
}
if !good {
fmt.Println("Failed to add a transaction that should have added")
test.Fail()
return
}
}
if good {
err = fs.AddTransaction(j+1, t)
}
if !addtest && err == nil {
ts := int64(t.GetMilliTimestamp())
bts := int64(fs.GetCurrentBlock().GetCoinbaseTimestamp())
fmt.Println("timestamp failure ", ts, bts, ts-bts, fct.TRANSACTION_POST_LIMIT)
test.Fail()
return
}
if !addtest && err == nil {
fmt.Println("failed to catch error")