Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
bnoieh committed Oct 22, 2024
1 parent c34ace0 commit e93b628
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 14 deletions.
20 changes: 6 additions & 14 deletions core/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -1719,6 +1719,7 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)
var err error
if minerMode {
block = chain[0]
it.index = 0
} else {
block, err = it.next()
}
Expand Down Expand Up @@ -1878,15 +1879,6 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)
continue
}

// Async verify header if minerMode
asyncItNextCh := make(chan error)
if minerMode {
go func() {
_, err := it.next()
asyncItNextCh <- err
}()
}

var (
receipts, receiptExist = bc.miningReceiptsCache.Get(block.Hash())
logs, logExist = bc.miningTxLogsCache.Get(block.Hash())
Expand Down Expand Up @@ -1948,12 +1940,15 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)

vstart := time.Now()
// Async validate if minerMode
asyncValidateStateCh := make(chan error)
asyncValidateStateCh := make(chan error, 1)
if minerMode {
header := block.Header()
// Can not validate root concurrently
if root := statedb.IntermediateRoot(bc.chainConfig.IsEIP158(header.Number)); header.Root != root {
panic(fmt.Errorf("self mined block(hash: %x number %v) verify root err(mined: %x expected: %x) dberr: %w", block.Hash(), block.NumberU64(), header.Root, root, statedb.Error()))
err := fmt.Errorf("self mined block(hash: %x number %v) verify root err(mined: %x expected: %x) dberr: %w", block.Hash(), block.NumberU64(), header.Root, root, statedb.Error())
bc.reportBlock(block, receipts, err)
followupInterrupt.Store(true)
return it.index, err
}
go func() {
asyncValidateStateCh <- bc.validator.ValidateState(block, statedb, receipts, usedGas, true)
Expand Down Expand Up @@ -2004,9 +1999,6 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error)
return it.index, err
}
if minerMode {
if err := <-asyncItNextCh; err != nil {
panic(fmt.Errorf("self mined block(hash: %x number %v) async verify header err: %w", block.Hash(), block.NumberU64(), err))
}
if err := <-asyncValidateStateCh; err != nil {
panic(fmt.Errorf("self mined block(hash: %x number %v) async verify state err: %w", block.Hash(), block.NumberU64(), err))
}
Expand Down
5 changes: 5 additions & 0 deletions eth/catalyst/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ var (
forkchoiceUpdateHeadsTimer = metrics.NewRegisteredTimer("api/engine/forkchoiceUpdate/heads", nil)
getPayloadTimer = metrics.NewRegisteredTimer("api/engine/get/payload", nil)
newPayloadTimer = metrics.NewRegisteredTimer("api/engine/new/payload", nil)
sealPayloadTimer = metrics.NewRegisteredTimer("api/engine/seal/payload", nil)
)

// Register adds the engine API to the full node.
Expand Down Expand Up @@ -721,6 +722,10 @@ func (api *ConsensusAPI) OpSealPayloadV3(payloadID engine.PayloadID, update engi

func (api *ConsensusAPI) opSealPayload(payloadID engine.PayloadID, update engine.ForkchoiceStateV1, needPayload bool, version string) (engine.OpSealPayloadResponse, error) {
start := time.Now()
defer func() {
sealPayloadTimer.UpdateSince(start)
log.Debug("sealPayloadTimer", "duration", common.PrettyDuration(time.Since(start)), "payloadID", payloadID)
}()
var payloadEnvelope *engine.ExecutionPayloadEnvelope
var err error
if version == "V2" {
Expand Down

0 comments on commit e93b628

Please sign in to comment.