Skip to content

Commit 8117040

Browse files
committed
Reduce redunant payload creation (flashbots#44)
* Remove redundant payload creation * pr comments
1 parent d370206 commit 8117040

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

miner/multi_worker.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,23 +113,27 @@ func (w *multiWorker) buildPayload(args *BuildPayloadArgs) (*Payload, error) {
113113
// Construct a payload object for return.
114114
payload := newPayload(empty, args.Id())
115115

116+
if len(w.workers) == 0 {
117+
return payload, nil
118+
}
119+
116120
// Keep separate payloads for each worker so that ResolveFull actually resolves the best of all workers
117121
workerPayloads := []*Payload{}
118122

119-
for _, worker := range w.workers {
123+
for _, w := range w.workers {
120124
workerPayload := newPayload(empty, args.Id())
121125
workerPayloads = append(workerPayloads, workerPayload)
122-
go func() {
123-
// Update routine done elsewhere!
124126

127+
go func(w *worker) {
128+
// Update routine done elsewhere!
125129
start := time.Now()
126-
block, fees, err := worker.getSealingBlock(args.Parent, args.Timestamp, args.FeeRecipient, args.GasLimit, args.Random, args.Withdrawals, false, args.BlockHook)
130+
block, fees, err := w.getSealingBlock(args.Parent, args.Timestamp, args.FeeRecipient, args.GasLimit, args.Random, args.Withdrawals, false, args.BlockHook)
127131
if err == nil {
128132
workerPayload.update(block, fees, time.Since(start))
129133
}
130-
}()
134+
}(w)
131135
}
132-
136+
133137
go payload.resolveBestFullPayload(workerPayloads)
134138

135139
return payload, nil

miner/payload_building.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func newPayload(empty *types.Block, id engine.PayloadID) *Payload {
8181
empty: empty,
8282
stop: make(chan struct{}),
8383
}
84-
log.Info("Starting work on payload", "id", payload.id)
84+
8585
payload.cond = sync.NewCond(&payload.lock)
8686
return payload
8787
}
@@ -115,7 +115,7 @@ func (payload *Payload) resolveBestFullPayload(payloads []*Payload) {
115115
payload.lock.Lock()
116116
defer payload.lock.Unlock()
117117

118-
log.Info("XXX resolving")
118+
log.Trace("resolving best payload")
119119
for _, p := range payloads {
120120
p.lock.Lock()
121121

@@ -134,15 +134,15 @@ func (payload *Payload) resolveBestFullPayload(payloads []*Payload) {
134134
}
135135

136136
if payload.full == nil || payload.fullFees.Cmp(p.fullFees) < 0 {
137-
log.Info("XXX updated")
137+
log.Trace("best payload updated", "id", p.id, "blockHash", p.full.Hash())
138138
payload.full = p.full
139139
payload.fullFees = p.fullFees
140140
}
141141
p.lock.Unlock()
142142
}
143143
}
144144

145-
log.Info("XXX resolved")
145+
log.Trace("best payload resolved", "id", payload.id, "blockHash", payload.full.Hash())
146146
payload.cond.Broadcast() // fire signal for notifying full block
147147
}
148148

0 commit comments

Comments
 (0)