mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
miner: return newPayloadResult from generateWork
This commit is contained in:
parent
1fdb204bc5
commit
cea826c243
1 changed files with 14 additions and 17 deletions
|
|
@ -148,13 +148,12 @@ type newWorkReq struct {
|
||||||
timestamp int64
|
timestamp int64
|
||||||
}
|
}
|
||||||
|
|
||||||
// newPayloadResult represents a result struct corresponds to payload generation.
|
// newPayloadResult is the result of payload generation.
|
||||||
type newPayloadResult struct {
|
type newPayloadResult struct {
|
||||||
err error
|
err error
|
||||||
block *types.Block
|
block *types.Block
|
||||||
fees *big.Int
|
fees *big.Int // total block fees
|
||||||
|
sidecars []*types.BlobTxSidecar // collected blobs of blob transactions
|
||||||
sidecars []*types.BlobTxSidecar
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// getWorkReq represents a request for getting a new sealing work with provided parameters.
|
// getWorkReq represents a request for getting a new sealing work with provided parameters.
|
||||||
|
|
@ -525,13 +524,7 @@ func (w *worker) mainLoop() {
|
||||||
w.commitWork(req.interrupt, req.timestamp)
|
w.commitWork(req.interrupt, req.timestamp)
|
||||||
|
|
||||||
case req := <-w.getWorkCh:
|
case req := <-w.getWorkCh:
|
||||||
block, fees, sidecars, err := w.generateWork(req.params)
|
req.result <- w.generateWork(req.params)
|
||||||
req.result <- &newPayloadResult{
|
|
||||||
err: err,
|
|
||||||
block: block,
|
|
||||||
fees: fees,
|
|
||||||
sidecars: sidecars,
|
|
||||||
}
|
|
||||||
|
|
||||||
case ev := <-w.txsCh:
|
case ev := <-w.txsCh:
|
||||||
// Apply transactions to the pending state if we're not sealing
|
// Apply transactions to the pending state if we're not sealing
|
||||||
|
|
@ -977,10 +970,10 @@ func (w *worker) fillTransactions(interrupt *atomic.Int32, env *environment) err
|
||||||
}
|
}
|
||||||
|
|
||||||
// generateWork generates a sealing block based on the given parameters.
|
// generateWork generates a sealing block based on the given parameters.
|
||||||
func (w *worker) generateWork(params *generateParams) (*types.Block, *big.Int, []*types.BlobTxSidecar, error) {
|
func (w *worker) generateWork(params *generateParams) *newPayloadResult {
|
||||||
work, err := w.prepareWork(params)
|
work, err := w.prepareWork(params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return &newPayloadResult{err: err}
|
||||||
}
|
}
|
||||||
defer work.discard()
|
defer work.discard()
|
||||||
|
|
||||||
|
|
@ -998,9 +991,13 @@ func (w *worker) generateWork(params *generateParams) (*types.Block, *big.Int, [
|
||||||
}
|
}
|
||||||
block, err := w.engine.FinalizeAndAssemble(w.chain, work.header, work.state, work.txs, nil, work.receipts, params.withdrawals)
|
block, err := w.engine.FinalizeAndAssemble(w.chain, work.header, work.state, work.txs, nil, work.receipts, params.withdrawals)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return &newPayloadResult{err: err}
|
||||||
|
}
|
||||||
|
return &newPayloadResult{
|
||||||
|
block: block,
|
||||||
|
fees: totalFees(block, work.receipts),
|
||||||
|
sidecars: work.sidecars,
|
||||||
}
|
}
|
||||||
return block, totalFees(block, work.receipts), work.sidecars, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// commitWork generates several new sealing tasks based on the parent block
|
// commitWork generates several new sealing tasks based on the parent block
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue