This commit is contained in:
Cassandra Heart 2024-04-04 14:16:34 -05:00 committed by GitHub
parent 4148de06bd
commit 150020231a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 66 additions and 25 deletions

View File

@ -10,11 +10,11 @@ func GetMinimumVersionCutoff() time.Time {
} }
func GetMinimumVersion() []byte { func GetMinimumVersion() []byte {
return []byte{0x01, 0x04, 0x0E} return []byte{0x01, 0x04, 0x0F}
} }
func GetVersion() []byte { func GetVersion() []byte {
return []byte{0x01, 0x04, 0x0E} return []byte{0x01, 0x04, 0x0F}
} }
func GetVersionString() string { func GetVersionString() string {

View File

@ -160,11 +160,44 @@ func NewBlossomSub(
} }
blossomOpts := []blossomsub.Option{} blossomOpts := []blossomsub.Option{}
if isBootstrapPeer {
blossomOpts = append(blossomOpts,
blossomsub.WithPeerExchange(true),
)
}
if tracer != nil { if tracer != nil {
blossomOpts = append(blossomOpts, blossomsub.WithEventTracer(tracer)) blossomOpts = append(blossomOpts, blossomsub.WithEventTracer(tracer))
} }
blossomOpts = append(blossomOpts, blossomsub.WithPeerScore(
&blossomsub.PeerScoreParams{
SkipAtomicValidation: false,
BitmaskScoreCap: 0,
IPColocationFactorWeight: 0,
IPColocationFactorThreshold: 6,
BehaviourPenaltyWeight: 0,
BehaviourPenaltyThreshold: 100,
BehaviourPenaltyDecay: .5,
DecayInterval: 10 * time.Second,
DecayToZero: .1,
RetainScore: 5 * time.Minute,
AppSpecificScore: func(p peer.ID) float64 {
return float64(bs.GetPeerScore([]byte(p)))
},
AppSpecificWeight: 10.0,
},
&blossomsub.PeerScoreThresholds{
SkipAtomicValidation: false,
GossipThreshold: -2000,
PublishThreshold: -5000,
GraylistThreshold: -10000,
AcceptPXThreshold: 100,
OpportunisticGraftThreshold: 2,
}))
ps, err := blossomsub.NewFloodSub(ctx, h, blossomOpts...) params := mergeDefaults(p2pConfig)
rt := blossomsub.NewBlossomSubRouter(h, params)
ps, err := blossomsub.NewBlossomSubWithRouter(ctx, h, rt, blossomOpts...)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -312,26 +345,33 @@ func initDHT(
} }
reconnect := func() { reconnect := func() {
var wg sync.WaitGroup
logger.Info( logger.Info(
"connecting to bootstrap", "connecting to bootstrap",
zap.String("peer_id", h.ID().String()), zap.String("peer_id", h.ID().String()),
) )
defaultBootstrapPeers := p2pConfig.BootstrapPeers defaultBootstrapPeers := p2pConfig.BootstrapPeers
connected := 0
for _, peerAddr := range defaultBootstrapPeers { for connected < 2 {
i, err := rand.Int(
rand.Reader,
big.NewInt(int64(len(defaultBootstrapPeers))),
)
if err != nil {
panic(err)
}
peerAddr := defaultBootstrapPeers[i.Int64()]
peerinfo, err := peer.AddrInfoFromString(peerAddr) peerinfo, err := peer.AddrInfoFromString(peerAddr)
if err != nil { if err != nil {
panic(err) panic(err)
} }
wg.Add(1)
go func() {
defer wg.Done()
if peerinfo.ID == h.ID() || if peerinfo.ID == h.ID() ||
h.Network().Connectedness(peerinfo.ID) == network.Connected { h.Network().Connectedness(peerinfo.ID) == network.Connected ||
return connected >= 2 {
continue
} }
if err := h.Connect(ctx, *peerinfo); err != nil { if err := h.Connect(ctx, *peerinfo); err != nil {
@ -341,10 +381,9 @@ func initDHT(
"connected to peer", "connected to peer",
zap.String("peer_id", peerinfo.ID.String()), zap.String("peer_id", peerinfo.ID.String()),
) )
connected++
} }
}()
} }
wg.Wait()
} }
reconnect() reconnect()
@ -354,7 +393,7 @@ func initDHT(
time.Sleep(30 * time.Second) time.Sleep(30 * time.Second)
// try to assert some stability, never go below min peers for data // try to assert some stability, never go below min peers for data
// consensus: // consensus:
if len(h.Network().Peers()) < 4 { if len(h.Network().Peers()) < 2 {
logger.Info("reconnecting to peers") logger.Info("reconnecting to peers")
reconnect() reconnect()
} }
@ -554,8 +593,10 @@ func discoverPeers(
go func() { go func() {
for { for {
time.Sleep(5 * time.Minute) time.Sleep(5 * time.Minute)
if len(h.Network().Peers()) < 4 {
discover() discover()
} }
}
}() }()
logger.Info("completed initial peer discovery") logger.Info("completed initial peer discovery")