mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
eth, miner: minor polishes in the mining and announcing logs
This commit is contained in:
parent
8bfdab3ec6
commit
43d5627e46
2 changed files with 23 additions and 17 deletions
|
|
@ -598,21 +598,28 @@ func (h *handler) BroadcastBlock(block *types.Block, propagate bool) {
|
||||||
// already have the given transaction.
|
// already have the given transaction.
|
||||||
func (h *handler) BroadcastTransactions(txs types.Transactions) {
|
func (h *handler) BroadcastTransactions(txs types.Transactions) {
|
||||||
var (
|
var (
|
||||||
annoCount int // Count of announcements made
|
blobTxs int // Number of blob transactions to announce only
|
||||||
annoPeers int
|
largeTxs int // Number of large transactions to announce only
|
||||||
directCount int // Count of the txs sent directly to peers
|
|
||||||
directPeers int // Count of the peers that were sent transactions directly
|
directCount int // Number of transactions sent directly to peers (duplicates included)
|
||||||
|
directPeers int // Number of peers that were sent transactions directly
|
||||||
|
annCount int // Number of transactions announced across all peers (duplicates included)
|
||||||
|
annPeers int // Number of peers announced about transactions
|
||||||
|
|
||||||
txset = make(map[*ethPeer][]common.Hash) // Set peer->hash to transfer directly
|
txset = make(map[*ethPeer][]common.Hash) // Set peer->hash to transfer directly
|
||||||
annos = make(map[*ethPeer][]common.Hash) // Set peer->hash to announce
|
annos = make(map[*ethPeer][]common.Hash) // Set peer->hash to announce
|
||||||
|
|
||||||
)
|
)
|
||||||
// Broadcast transactions to a batch of peers not knowing about it
|
// Broadcast transactions to a batch of peers not knowing about it
|
||||||
for _, tx := range txs {
|
for _, tx := range txs {
|
||||||
peers := h.peers.peersWithoutTransaction(tx.Hash())
|
peers := h.peers.peersWithoutTransaction(tx.Hash())
|
||||||
|
|
||||||
var numDirect int
|
var numDirect int
|
||||||
if tx.Type() != types.BlobTxType && tx.Size() <= txMaxBroadcastSize {
|
switch {
|
||||||
|
case tx.Type() == types.BlobTxType:
|
||||||
|
blobTxs++
|
||||||
|
case tx.Size() > txMaxBroadcastSize:
|
||||||
|
largeTxs++
|
||||||
|
default:
|
||||||
numDirect = int(math.Sqrt(float64(len(peers))))
|
numDirect = int(math.Sqrt(float64(len(peers))))
|
||||||
}
|
}
|
||||||
// Send the tx unconditionally to a subset of our peers
|
// Send the tx unconditionally to a subset of our peers
|
||||||
|
|
@ -630,13 +637,12 @@ func (h *handler) BroadcastTransactions(txs types.Transactions) {
|
||||||
peer.AsyncSendTransactions(hashes)
|
peer.AsyncSendTransactions(hashes)
|
||||||
}
|
}
|
||||||
for peer, hashes := range annos {
|
for peer, hashes := range annos {
|
||||||
annoPeers++
|
annPeers++
|
||||||
annoCount += len(hashes)
|
annCount += len(hashes)
|
||||||
peer.AsyncSendPooledTransactionHashes(hashes)
|
peer.AsyncSendPooledTransactionHashes(hashes)
|
||||||
}
|
}
|
||||||
log.Debug("Transaction broadcast", "txs", len(txs),
|
log.Debug("Distributed transactions", "plaintxs", len(txs)-blobTxs-largeTxs, "blobtxs", blobTxs, "largetxs", largeTxs,
|
||||||
"announce packs", annoPeers, "announced hashes", annoCount,
|
"bcastpeers", directPeers, "bcastcount", directCount, "annpeers", annPeers, "anncount", annCount)
|
||||||
"tx packs", directPeers, "broadcast txs", directCount)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// minedBroadcastLoop sends mined blocks to connected peers.
|
// minedBroadcastLoop sends mined blocks to connected peers.
|
||||||
|
|
|
||||||
|
|
@ -818,19 +818,19 @@ func (w *worker) commitTransactions(env *environment, txs *transactionsByPriceAn
|
||||||
}
|
}
|
||||||
// If we don't have enough space for the next transaction, skip the account.
|
// If we don't have enough space for the next transaction, skip the account.
|
||||||
if env.gasPool.Gas() < ltx.Gas {
|
if env.gasPool.Gas() < ltx.Gas {
|
||||||
log.Trace("Not enough gas left for transaction", "left", env.gasPool.Gas(), "needed", ltx.Gas)
|
log.Trace("Not enough gas left for transaction", "hash", ltx.Hash, "left", env.gasPool.Gas(), "needed", ltx.Gas)
|
||||||
txs.Pop()
|
txs.Pop()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if left := uint64(params.MaxBlobGasPerBlock - env.blobs*params.BlobTxBlobGasPerBlob); left < ltx.BlobGas {
|
if left := uint64(params.MaxBlobGasPerBlock - env.blobs*params.BlobTxBlobGasPerBlob); left < ltx.BlobGas {
|
||||||
log.Trace("Not enough blob gas left for transaction", "left", left, "needed", ltx.BlobGas)
|
log.Trace("Not enough blob gas left for transaction", "hash", ltx.Hash, "left", left, "needed", ltx.BlobGas)
|
||||||
txs.Pop()
|
txs.Pop()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// Transaction seems to fit, pull it up from the pool
|
// Transaction seems to fit, pull it up from the pool
|
||||||
tx := ltx.Resolve()
|
tx := ltx.Resolve()
|
||||||
if tx == nil {
|
if tx == nil {
|
||||||
log.Warn("Ignoring evicted transaction")
|
log.Trace("Ignoring evicted transaction", "hash", ltx.Hash)
|
||||||
txs.Pop()
|
txs.Pop()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
@ -841,7 +841,7 @@ func (w *worker) commitTransactions(env *environment, txs *transactionsByPriceAn
|
||||||
// Check whether the tx is replay protected. If we're not in the EIP155 hf
|
// Check whether the tx is replay protected. If we're not in the EIP155 hf
|
||||||
// phase, start ignoring the sender until we do.
|
// phase, start ignoring the sender until we do.
|
||||||
if tx.Protected() && !w.chainConfig.IsEIP155(env.header.Number) {
|
if tx.Protected() && !w.chainConfig.IsEIP155(env.header.Number) {
|
||||||
log.Trace("Ignoring replay protected transaction", "hash", tx.Hash(), "eip155", w.chainConfig.EIP155Block)
|
log.Trace("Ignoring replay protected transaction", "hash", ltx.Hash, "eip155", w.chainConfig.EIP155Block)
|
||||||
txs.Pop()
|
txs.Pop()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
@ -852,7 +852,7 @@ func (w *worker) commitTransactions(env *environment, txs *transactionsByPriceAn
|
||||||
switch {
|
switch {
|
||||||
case errors.Is(err, core.ErrNonceTooLow):
|
case errors.Is(err, core.ErrNonceTooLow):
|
||||||
// New head notification data race between the transaction pool and miner, shift
|
// New head notification data race between the transaction pool and miner, shift
|
||||||
log.Trace("Skipping transaction with low nonce", "sender", from, "nonce", tx.Nonce())
|
log.Trace("Skipping transaction with low nonce", "hash", ltx.Hash, "sender", from, "nonce", tx.Nonce())
|
||||||
txs.Shift()
|
txs.Shift()
|
||||||
|
|
||||||
case errors.Is(err, nil):
|
case errors.Is(err, nil):
|
||||||
|
|
@ -864,7 +864,7 @@ func (w *worker) commitTransactions(env *environment, txs *transactionsByPriceAn
|
||||||
default:
|
default:
|
||||||
// Transaction is regarded as invalid, drop all consecutive transactions from
|
// Transaction is regarded as invalid, drop all consecutive transactions from
|
||||||
// the same sender because of `nonce-too-high` clause.
|
// the same sender because of `nonce-too-high` clause.
|
||||||
log.Debug("Transaction failed, account skipped", "hash", tx.Hash(), "err", err)
|
log.Debug("Transaction failed, account skipped", "hash", ltx.Hash, "err", err)
|
||||||
txs.Pop()
|
txs.Pop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue