Unverified Commit f5d3d486 authored by Marius van der Wijden's avatar Marius van der Wijden Committed by GitHub

eth: send big transactions by announce/retrieve only (#27618)

* eth: send big transactions by announce/retrieve only

* Update eth/handler.go
Co-authored-by: 's avatarMartin Holst Swende <martin@swende.se>

* eth: remove superfluous bracket

* eth: add whitespace

---------
Co-authored-by: 's avatarMartin Holst Swende <martin@swende.se>
parent eed7983c
...@@ -45,6 +45,11 @@ const ( ...@@ -45,6 +45,11 @@ const (
// txChanSize is the size of channel listening to NewTxsEvent. // txChanSize is the size of channel listening to NewTxsEvent.
// The number is referenced from the size of tx pool. // The number is referenced from the size of tx pool.
txChanSize = 4096 txChanSize = 4096
// txMaxBroadcastSize is the max size of a transaction that will be broadcasted.
// All transactions with a higher size will be announced and need to be fetched
// by the peer.
txMaxBroadcastSize = 4096
) )
var ( var (
...@@ -564,8 +569,12 @@ func (h *handler) BroadcastTransactions(txs types.Transactions) { ...@@ -564,8 +569,12 @@ func (h *handler) BroadcastTransactions(txs types.Transactions) {
// 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
if tx.Size() <= txMaxBroadcastSize {
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
numDirect := int(math.Sqrt(float64(len(peers))))
for _, peer := range peers[:numDirect] { for _, peer := range peers[:numDirect] {
txset[peer] = append(txset[peer], tx.Hash()) txset[peer] = append(txset[peer], tx.Hash())
} }
......
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