Display hash properly
This commit is contained in:
@@ -6,7 +6,6 @@ import (
|
||||
|
||||
"github.com/adityapk00/lightwalletd/walletrpc"
|
||||
"github.com/golang/protobuf/proto"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type BlockCacheEntry struct {
|
||||
@@ -34,7 +33,7 @@ func NewBlockCache(maxEntries int) *BlockCache {
|
||||
}
|
||||
}
|
||||
|
||||
func (c *BlockCache) Add(height int, block *walletrpc.CompactBlock) error {
|
||||
func (c *BlockCache) Add(height int, block *walletrpc.CompactBlock) (error, bool) {
|
||||
c.mutex.Lock()
|
||||
defer c.mutex.Unlock()
|
||||
|
||||
@@ -58,14 +57,14 @@ func (c *BlockCache) Add(height int, block *walletrpc.CompactBlock) error {
|
||||
// Don't allow out-of-order blocks. This is more of a sanity check than anything
|
||||
// If there is a reorg, then the ingestor needs to handle it.
|
||||
if c.m[height-1] != nil && !bytes.Equal(block.PrevHash, c.m[height-1].hash) {
|
||||
return errors.New("Prev hash of the block didn't match")
|
||||
return nil, true
|
||||
}
|
||||
|
||||
// Add the entry and update the counters
|
||||
data, err := proto.Marshal(block)
|
||||
if err != nil {
|
||||
println("Error marshalling block!")
|
||||
return nil
|
||||
return err, false
|
||||
}
|
||||
|
||||
c.m[height] = &BlockCacheEntry{
|
||||
@@ -83,7 +82,7 @@ func (c *BlockCache) Add(height int, block *walletrpc.CompactBlock) error {
|
||||
}
|
||||
|
||||
//println("Cache size is ", len(c.m))
|
||||
return nil
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (c *BlockCache) Get(height int) *walletrpc.CompactBlock {
|
||||
|
||||
@@ -141,20 +141,22 @@ func BlockIngestor(rpcClient *rpcclient.Client, cache *BlockCache, log *logrus.E
|
||||
}
|
||||
|
||||
log.Info("Ingestor adding block to cache: ", height)
|
||||
err = cache.Add(height, block)
|
||||
err, reorg := cache.Add(height, block)
|
||||
|
||||
if err != nil {
|
||||
log.Error("Error adding block to cache: ", err)
|
||||
continue
|
||||
}
|
||||
|
||||
//check for reorgs once we have inital block hash from startup
|
||||
if err != nil {
|
||||
if reorg {
|
||||
reorgCount++
|
||||
|
||||
hash := hex.EncodeToString(block.Hash)
|
||||
phash := hex.EncodeToString(block.PrevHash)
|
||||
|
||||
log.WithFields(logrus.Fields{
|
||||
"height": height,
|
||||
"hash(reversed)": hash,
|
||||
"phash(reversed)": phash,
|
||||
"reorg": reorgCount,
|
||||
"height": height,
|
||||
"hash": displayHash(block.Hash),
|
||||
"phash": displayHash(block.PrevHash),
|
||||
"reorg": reorgCount,
|
||||
}).Warn("REORG")
|
||||
} else {
|
||||
reorgCount = 0
|
||||
@@ -208,3 +210,15 @@ func GetBlockRange(rpcClient *rpcclient.Client, cache *BlockCache,
|
||||
|
||||
errOut <- nil
|
||||
}
|
||||
|
||||
func displayHash(hash []byte) string {
|
||||
rhash := make([]byte, len(hash))
|
||||
copy(rhash, hash)
|
||||
// Reverse byte order
|
||||
for i := 0; i < len(rhash)/2; i++ {
|
||||
j := len(rhash) - 1 - i
|
||||
rhash[i], rhash[j] = rhash[j], rhash[i]
|
||||
}
|
||||
|
||||
return hex.EncodeToString(rhash)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user