//?加入一個新的區(qū)塊到區(qū)塊鏈中
func?(bc?*BlockChain)?AddBlock(data?string)?{
???var?(
??????lastHash?[]byte
??????err??????error
???)
???//?獲取最后區(qū)塊的hash值
???err?=?bc.db.View(func(tx1?*bolt.Tx)?error?{
??????b?:=?tx1.Bucket([]byte(BLOCKS_BUCKET))
??????lastHash?=?b.Get([]byte(LAST_HASH))
??????return?nil
???})
???//?計算新的區(qū)塊
???newBlock?:=?NewBlock(data,?lastHash)
???bc.lastHash?=?newBlock.Hash
???//?將新的區(qū)塊加入到數(shù)據(jù)庫區(qū)塊鏈中
???err?=?bc.db.Update(func(tx?*bolt.Tx)?error?{
??????b?:=?tx.Bucket([]byte(BLOCKS_BUCKET))
??????err?=?b.Put(newBlock.Hash,?newBlock.Serialize())
??????//?將新的區(qū)塊置為最后一個區(qū)塊
??????err?=?b.Put([]byte(LAST_HASH),?newBlock.Hash)
??????return?err
???})
???if?err?!=?nil?{
??????log.Panic("failed?to?add?new?block:",err)
???}
}
2018-10-30
你這是要問什么