Skip to content
Snippets Groups Projects
Commit 659fabc1 authored by lyf-00's avatar lyf-00
Browse files

addblock

parent ee4e8985
Branches main
No related tags found
Loading
......@@ -25,50 +25,35 @@ type BlockchainIterator struct {
// AddBlock saves provided data as a block in the blockchain
// implement
func (bc *Blockchain) AddBlock(data []string) {
// 获得父节点哈希值
// bci := bc.Iterator()
// blockprev := bci.Next()
// for {
// block := bci.Next()
// if len(block.PrevBlockHash) == 0 {
// break
// }
// blockprev = block
// } // 跳出循环时,blockprev就是父区块
var prevHash []byte
err := bc.db.View(func(tx *bolt.Tx) error {
err := bc.db.Update(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(blocksBucket))
prevHash = b.Get([]byte("l"))
// 得到链上最后一块的hash和blockdata
lastHash := b.Get([]byte("l"))
lastBlockData := b.Get(lastHash)
lastBlock = DeserializeBlock(lastBlockData)
fmt.Print("prevhash=")
fmt.Print(prevHash)
return nil
})
fmt.Print(lastHash)
if err != nil {
log.Panic(err)
}
// newblock得到新区块
newblock := NewBlock(data,lastHash)
fmt.Print("newblock.hash=")
fmt.Print(newblock.Hash)
// newblock得到新区块
// newblock := NewBlock(data,blockprev.Hash)
newblock := NewBlock(data,prevHash)
fmt.Print("newblock.hash=")
fmt.Print(newblock.Hash)
// 将新区块上链,修改l
// err = b.Put(newblock.Hash, newblock.Serialize())
// if err != nil {
// log.Panic(err)
// }
err = bc.db.Update(func(tx *bolt.Tx) error {
b := tx.Bucket([]byte(blocksBucket))
// 将新区块上链,修改l
err := b.Put(newblock.Hash, newblock.Serialize())
if err != nil {
log.Panic(err)
}
err = b.Put([]byte("l"), newblock.Hash)
if err != nil {
log.Panic(err)
}
if block.Height > lastBlock.Height {
err = b.Put([]byte("l"), newblock.Hash)
if err != nil {
log.Panic(err)
}
bc.tip = newblock.Hash
}
return nil
})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment