|
|
@@ -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 {
|