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