Unverified Commit 08fb1aad authored by rjl493456442's avatar rjl493456442 Committed by GitHub

miner: display change in fees, change recommit period (#26097)

* miner: add logs for displaying fees change

* miner: simplify feesInEther calculation

* miner: fix lock

* miner: change to default recommit to 2 seconds
parent 9a4e8e22
...@@ -60,9 +60,14 @@ type Config struct { ...@@ -60,9 +60,14 @@ type Config struct {
// DefaultConfig contains default settings for miner. // DefaultConfig contains default settings for miner.
var DefaultConfig = Config{ var DefaultConfig = Config{
GasCeil: 30000000, GasCeil: 30000000,
GasPrice: big.NewInt(params.GWei), GasPrice: big.NewInt(params.GWei),
Recommit: 3 * time.Second,
// The default recommit time is chosen as two seconds since
// consensus-layer usually will wait a half slot of time(6s)
// for payload generation. It should be enough for Geth to
// run 3 rounds.
Recommit: 2 * time.Second,
NewPayloadTimeout: 2 * time.Second, NewPayloadTimeout: 2 * time.Second,
} }
......
...@@ -24,6 +24,8 @@ import ( ...@@ -24,6 +24,8 @@ import (
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/beacon" "github.com/ethereum/go-ethereum/core/beacon"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
) )
// BuildPayloadArgs contains the provided parameters for building payload. // BuildPayloadArgs contains the provided parameters for building payload.
...@@ -46,23 +48,22 @@ type Payload struct { ...@@ -46,23 +48,22 @@ type Payload struct {
full *types.Block full *types.Block
fullFees *big.Int fullFees *big.Int
stop chan struct{} stop chan struct{}
lock *sync.Mutex lock sync.Mutex
cond *sync.Cond cond *sync.Cond
} }
// newPayload initializes the payload object. // newPayload initializes the payload object.
func newPayload(empty *types.Block) *Payload { func newPayload(empty *types.Block) *Payload {
lock := new(sync.Mutex) payload := &Payload{
return &Payload{
empty: empty, empty: empty,
stop: make(chan struct{}), stop: make(chan struct{}),
lock: lock,
cond: sync.NewCond(lock),
} }
payload.cond = sync.NewCond(&payload.lock)
return payload
} }
// update updates the full-block with latest built version. // update updates the full-block with latest built version.
func (payload *Payload) update(block *types.Block, fees *big.Int) { func (payload *Payload) update(block *types.Block, fees *big.Int, elapsed time.Duration) {
payload.lock.Lock() payload.lock.Lock()
defer payload.lock.Unlock() defer payload.lock.Unlock()
...@@ -77,6 +78,10 @@ func (payload *Payload) update(block *types.Block, fees *big.Int) { ...@@ -77,6 +78,10 @@ func (payload *Payload) update(block *types.Block, fees *big.Int) {
if payload.full == nil || fees.Cmp(payload.fullFees) > 0 { if payload.full == nil || fees.Cmp(payload.fullFees) > 0 {
payload.full = block payload.full = block
payload.fullFees = fees payload.fullFees = fees
feesInEther := new(big.Float).Quo(new(big.Float).SetInt(fees), big.NewFloat(params.Ether))
log.Info("Updated payload", "number", block.NumberU64(), "hash", block.Hash(),
"txs", len(block.Transactions()), "gas", block.GasUsed(), "fees", feesInEther, "elapsed", common.PrettyDuration(elapsed))
} }
payload.cond.Broadcast() // fire signal for notifying full block payload.cond.Broadcast() // fire signal for notifying full block
} }
...@@ -152,9 +157,10 @@ func (w *worker) buildPayload(args *BuildPayloadArgs) (*Payload, error) { ...@@ -152,9 +157,10 @@ func (w *worker) buildPayload(args *BuildPayloadArgs) (*Payload, error) {
for { for {
select { select {
case <-timer.C: case <-timer.C:
start := time.Now()
block, fees, err := w.getSealingBlock(args.Parent, args.Timestamp, args.FeeRecipient, args.Random, false) block, fees, err := w.getSealingBlock(args.Parent, args.Timestamp, args.FeeRecipient, args.Random, false)
if err == nil { if err == nil {
payload.update(block, fees) payload.update(block, fees, time.Since(start))
} }
timer.Reset(w.recommit) timer.Reset(w.recommit)
case <-payload.stop: case <-payload.stop:
......
...@@ -1196,7 +1196,7 @@ func (w *worker) commit(env *environment, interval func(), update bool, start ti ...@@ -1196,7 +1196,7 @@ func (w *worker) commit(env *environment, interval func(), update bool, start ti
w.unconfirmed.Shift(block.NumberU64() - 1) w.unconfirmed.Shift(block.NumberU64() - 1)
fees := totalFees(block, env.receipts) fees := totalFees(block, env.receipts)
feesInEther := new(big.Float).Quo(new(big.Float).SetInt(fees), new(big.Float).SetInt(big.NewInt(params.Ether))) feesInEther := new(big.Float).Quo(new(big.Float).SetInt(fees), big.NewFloat(params.Ether))
log.Info("Commit new sealing work", "number", block.Number(), "sealhash", w.engine.SealHash(block.Header()), log.Info("Commit new sealing work", "number", block.Number(), "sealhash", w.engine.SealHash(block.Header()),
"uncles", len(env.uncles), "txs", env.tcount, "uncles", len(env.uncles), "txs", env.tcount,
"gas", block.GasUsed(), "fees", feesInEther, "gas", block.GasUsed(), "fees", feesInEther,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment