diff options
Diffstat (limited to 'core/chain_manager.go')
-rw-r--r-- | core/chain_manager.go | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/core/chain_manager.go b/core/chain_manager.go index f2382cf8d..d2a6560c1 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -31,15 +31,18 @@ type StateQuery interface { func CalcDifficulty(block, parent *types.Header) *big.Int { diff := new(big.Int) - //adjust := new(big.Int).Rsh(parent.Difficulty(), 10) - //if block.Time() >= parent.Time()+8 { - adjust := new(big.Int).Div(parent.Difficulty, big.NewInt(2048)) + min := big.NewInt(2048) + adjust := new(big.Int).Div(parent.Difficulty, min) if (block.Time - parent.Time) < 8 { diff.Add(parent.Difficulty, adjust) } else { diff.Sub(parent.Difficulty, adjust) } + if diff.Cmp(GenesisDiff) < 0 { + return GenesisDiff + } + return diff } @@ -378,9 +381,12 @@ func (bc *ChainManager) Stop() { } func (self *ChainManager) InsertChain(chain types.Blocks) error { + println("insert chain start") self.tsmu.Lock() defer self.tsmu.Unlock() + defer println("insert chain end") + for _, block := range chain { // Call in to the block processor and check for errors. It's likely that if one block fails // all others will fail too (unless a known block is returned). @@ -422,14 +428,18 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error { self.mu.Unlock() if canonical { - jsonlogger.LogJson(&logger.EthChainNewHead{ - BlockHash: ethutil.Bytes2Hex(block.Hash()), - BlockNumber: block.Number(), - ChainHeadHash: ethutil.Bytes2Hex(cblock.Hash()), - BlockPrevHash: ethutil.Bytes2Hex(block.ParentHash()), - }) + /* + jsonlogger.LogJson(&logger.EthChainNewHead{ + BlockHash: ethutil.Bytes2Hex(block.Hash()), + BlockNumber: block.Number(), + ChainHeadHash: ethutil.Bytes2Hex(cblock.Hash()), + BlockPrevHash: ethutil.Bytes2Hex(block.ParentHash()), + }) + */ self.setTransState(state.New(block.Root(), self.db)) self.eventMux.Post(ChainEvent{block, td}) + } else { + //self.eventMux. } if split { |