|
|
|
@ -47,7 +47,10 @@ import ( |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
|
blockInsertTimer = metrics.NewRegisteredTimer("chain/inserts", nil) |
|
|
|
|
blockInsertTimer = metrics.NewRegisteredTimer("chain/inserts", nil) |
|
|
|
|
blockValidationTimer = metrics.NewRegisteredTimer("chain/validation", nil) |
|
|
|
|
blockExecutionTimer = metrics.NewRegisteredTimer("chain/execution", nil) |
|
|
|
|
blockWriteTimer = metrics.NewRegisteredTimer("chain/write", nil) |
|
|
|
|
|
|
|
|
|
ErrNoGenesis = errors.New("Genesis not found in chain") |
|
|
|
|
) |
|
|
|
@ -1188,7 +1191,9 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, [] |
|
|
|
|
return it.index, events, coalescedLogs, err |
|
|
|
|
} |
|
|
|
|
// Process block using the parent state as reference point.
|
|
|
|
|
t0 := time.Now() |
|
|
|
|
receipts, logs, usedGas, err := bc.processor.Process(block, state, bc.vmConfig) |
|
|
|
|
t1 := time.Now() |
|
|
|
|
if err != nil { |
|
|
|
|
bc.reportBlock(block, receipts, err) |
|
|
|
|
return it.index, events, coalescedLogs, err |
|
|
|
@ -1198,13 +1203,19 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, [] |
|
|
|
|
bc.reportBlock(block, receipts, err) |
|
|
|
|
return it.index, events, coalescedLogs, err |
|
|
|
|
} |
|
|
|
|
t2 := time.Now() |
|
|
|
|
proctime := time.Since(start) |
|
|
|
|
|
|
|
|
|
// Write the block to the chain and get the status.
|
|
|
|
|
status, err := bc.WriteBlockWithState(block, receipts, state) |
|
|
|
|
t3 := time.Now() |
|
|
|
|
if err != nil { |
|
|
|
|
return it.index, events, coalescedLogs, err |
|
|
|
|
} |
|
|
|
|
blockInsertTimer.UpdateSince(start) |
|
|
|
|
blockExecutionTimer.Update(t1.Sub(t0)) |
|
|
|
|
blockValidationTimer.Update(t2.Sub(t1)) |
|
|
|
|
blockWriteTimer.Update(t3.Sub(t2)) |
|
|
|
|
switch status { |
|
|
|
|
case CanonStatTy: |
|
|
|
|
log.Debug("Inserted new block", "number", block.Number(), "hash", block.Hash(), |
|
|
|
|