本文整理匯總了Golang中github.com/FactomProject/factoid/block.FBlock.GetLedgerKeyMR方法的典型用法代碼示例。如果您正苦於以下問題:Golang FBlock.GetLedgerKeyMR方法的具體用法?Golang FBlock.GetLedgerKeyMR怎麽用?Golang FBlock.GetLedgerKeyMR使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/FactomProject/factoid/block.FBlock
的用法示例。
在下文中一共展示了FBlock.GetLedgerKeyMR方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: ParseFactoidBlock
func ParseFactoidBlock(chainID, hash string, rawBlock []byte, blockTime string) (*Block, error) {
answer := new(Block)
fBlock := new(block.FBlock)
_, err := fBlock.UnmarshalBinaryData(rawBlock)
if err != nil {
return nil, err
}
answer.ChainID = chainID
answer.PartialHash = fBlock.GetHash().String()
answer.FullHash = fBlock.GetLedgerKeyMR().String()
answer.PrevBlockHash = fmt.Sprintf("%x", fBlock.PrevKeyMR.Bytes())
transactions := fBlock.GetTransactions()
answer.EntryCount = len(transactions)
answer.EntryList = make([]*Entry, answer.EntryCount)
answer.BinaryString = fmt.Sprintf("%x", rawBlock)
for i, v := range transactions {
entry := new(Entry)
bin, err := v.MarshalBinary()
if err != nil {
return nil, err
}
entry.BinaryString = fmt.Sprintf("%x", bin)
entry.Timestamp = TimestampToString(v.GetMilliTimestamp() / 1000)
entry.Hash = v.GetHash().String()
entry.ChainID = chainID
entry.JSONString, err = v.JSONString()
if err != nil {
return nil, err
}
entry.SpewString = v.Spew()
answer.EntryList[i] = entry
}
answer.JSONString, err = fBlock.JSONString()
if err != nil {
return nil, err
}
answer.SpewString = fBlock.Spew()
answer.IsFactoidBlock = true
return answer, nil
}
示例2: Test_create_genesis_FactoidState
//.........這裏部分代碼省略.........
PrtTrans(t)
fs.stats.transactions += 1
title := fmt.Sprintf("Bad Transactions: %d Total transaactions %d",
fs.stats.badAddresses, fs.stats.transactions)
cp.CP.AddUpdate("Bad Transaction", "status", title, "", 0)
time.Sleep(time.Second / 100)
} else {
fs.stats.badAddresses += 1
}
}
//
// Serialization deserialization tests for blocks
//
blkdata, err := fs.GetCurrentBlock().MarshalBinary()
if err != nil {
test.Fail()
return
}
blk := fs.GetCurrentBlock().GetNewInstance().(block.IFBlock)
err = blk.UnmarshalBinary(blkdata)
if err != nil {
test.Fail()
return
}
fmt.Println("Block Check")
// Collect our block pointers, MR Key, and LMR Key before we process the end of block
blk1 := fs.GetCurrentBlock()
blk1KMR := blk1.GetHash()
blk1LKMR := blk1.GetLedgerKeyMR()
// Process the end of block. This simulates what Factomd will do.
fmt.Println("ProcessEndOfBlock")
fs.ProcessEndOfBlock() // Process the block.
fmt.Println("Check ProcessEndOfBlock")
// Collect the new block pointer, Previous MR Key and LMR Key after we processed the block.
blk2 := fs.GetCurrentBlock()
blk2PKMR := blk2.GetPrevKeyMR()
blk2PLKMR := blk2.GetPrevLedgerKeyMR()
// Check that the Previous MR and LMR match what we had from the previous block.
if !bytes.Equal(blk1KMR.Bytes(), blk2PKMR.Bytes()) {
fmt.Println("MR's don't match")
test.Fail()
return
}
if !bytes.Equal(blk1LKMR.Bytes(), blk2PLKMR.Bytes()) {
fmt.Println("LKMR's don't match")
fmt.Println(" block: ", blk1LKMR)
fmt.Println(" Prev: ", blk2PLKMR)
test.Fail()
return
}
// Now we marshal and unmarshal to simulate a reboot, getting our blocks for the DB
data, err := blk1.MarshalBinary()
if err != nil {
fmt.Println("Failed to Marshal")
test.Fail()
return
}