From 9800c84348b5492dd87802f82ef54c5b9676a52a Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 14 Apr 2015 12:49:15 +0200 Subject: [PATCH] eth: limit the amount of peers that will receive Block/Tx messages All transaction and block messages are now limited using `sqrt(peers)` --- eth/backend.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eth/backend.go b/eth/backend.go index f073ec6e62..cde7b167df 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -4,6 +4,7 @@ import ( "crypto/ecdsa" "fmt" "io/ioutil" + "math" "path" "strings" @@ -448,7 +449,7 @@ func (self *Ethereum) txBroadcastLoop() { // automatically stops if unsubscribe for obj := range self.txSub.Chan() { event := obj.(core.TxPreEvent) - self.net.Broadcast("eth", TxMsg, []*types.Transaction{event.Tx}) + self.net.BroadcastLimited("eth", TxMsg, math.Sqrt, []*types.Transaction{event.Tx}) self.syncAccounts(event.Tx) } } @@ -472,7 +473,7 @@ func (self *Ethereum) blockBroadcastLoop() { for obj := range self.blockSub.Chan() { switch ev := obj.(type) { case core.ChainHeadEvent: - self.net.Broadcast("eth", NewBlockMsg, []interface{}{ev.Block, ev.Block.Td}) + self.net.BroadcastLimited("eth", NewBlockMsg, math.Sqrt, []interface{}{ev.Block, ev.Block.Td}) } } }