From a79d78ad8cf4179252d983319196a48393e1d37e Mon Sep 17 00:00:00 2001 From: Ivan Kuznetsov Date: Sun, 1 Oct 2017 20:30:21 +0700 Subject: [PATCH] Implement Blockchain.AddBlock --- blockchain.go | 18 ++++++++++++++++++ server.go | 6 +++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/blockchain.go b/blockchain.go index 328cf06..1874f45 100644 --- a/blockchain.go +++ b/blockchain.go @@ -102,6 +102,24 @@ func (bc *Blockchain) Reset() { } +// AddBlock saves the block into the blockchain +func (bc *Blockchain) AddBlock(block *Block) { + err := bc.db.Update(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte(blocksBucket)) + blockInDb := b.Get(block.Hash) + + if blockInDb != nil { + blockData := block.Serialize() + b.Put(block.Hash, blockData) + } + + return nil + }) + if err != nil { + log.Panic(err) + } +} + // FindTransaction finds a transaction by its ID func (bc *Blockchain) FindTransaction(ID []byte) (Transaction, error) { bci := bc.Iterator() diff --git a/server.go b/server.go index 83b649c..bfc9d2b 100644 --- a/server.go +++ b/server.go @@ -183,7 +183,7 @@ func handleBlock(request []byte, bc *Blockchain) { block := DeserializeBlock(blockData) fmt.Println("Recevied a new block!") - fmt.Println(block) + bc.AddBlock(block) } func handleInv(request []byte, bc *Blockchain) { @@ -201,8 +201,8 @@ func handleInv(request []byte, bc *Blockchain) { blocks := bc.GetBlockHashes() if len(blocks) < len(payload.Items) { - for _, blockHash := range invResponse.Items { - sendGetData(sourceNode, "block", blockHash) + for _, blockHash := range payload.Items { + sendGetData(payload.AddrFrom, "block", blockHash) } } }