OSDN Git Service

fix prev checkpoint cache (#1943)
[bytom/bytom.git] / protocol / casper.go
index 8787fec..3fdc4a9 100644 (file)
@@ -179,11 +179,6 @@ func (c *Casper) prevCheckpointHash(blockHash *bc.Hash) (*bc.Hash, error) {
 func (c *Casper) prevCheckpointHashByPrevHash(prevBlockHash *bc.Hash) (*bc.Hash, error) {
        prevHash := prevBlockHash
        for {
-               if data, ok := c.prevCheckpointCache.Get(*prevHash); ok {
-                       c.prevCheckpointCache.Add(*prevBlockHash, data)
-                       return data.(*bc.Hash), nil
-               }
-
                prevBlock, err := c.store.GetBlockHeader(prevHash)
                if err != nil {
                        return nil, err
@@ -194,6 +189,11 @@ func (c *Casper) prevCheckpointHashByPrevHash(prevBlockHash *bc.Hash) (*bc.Hash,
                        return prevHash, nil
                }
 
+               if data, ok := c.prevCheckpointCache.Get(*prevHash); ok {
+                       c.prevCheckpointCache.Add(*prevBlockHash, data)
+                       return data.(*bc.Hash), nil
+               }
+
                prevHash = &prevBlock.PreviousBlockHash
        }
 }