@libp2p/gossipsub 17.1.1 → 17.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -52
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +3 -3
- package/dist/src/constants.d.ts +3 -3
- package/dist/src/constants.js +3 -3
- package/dist/src/gossipsub.js +8 -8
- package/dist/src/gossipsub.js.map +1 -1
- package/dist/src/index.d.ts +36 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +36 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/metrics.d.ts +1 -1
- package/dist/src/metrics.d.ts.map +1 -1
- package/dist/src/metrics.js +1 -1
- package/dist/src/metrics.js.map +1 -1
- package/dist/src/score/peer-score-params.d.ts +1 -1
- package/dist/src/score/peer-score-params.js +1 -1
- package/dist/src/score/peer-score-params.js.map +1 -1
- package/dist/src/score/peer-score-thresholds.d.ts +2 -2
- package/dist/src/score/peer-score.d.ts +2 -2
- package/dist/src/score/peer-score.d.ts.map +1 -1
- package/dist/src/tracer.js +1 -1
- package/dist/src/utils/buildRawMessage.js +2 -2
- package/dist/src/utils/buildRawMessage.js.map +1 -1
- package/dist/typedoc-urls.json +38 -195
- package/package.json +10 -5
- package/src/constants.ts +3 -3
- package/src/gossipsub.ts +8 -8
- package/src/index.ts +37 -0
- package/src/message/rpc.proto +1 -1
- package/src/metrics.ts +1 -1
- package/src/score/peer-score-params.ts +2 -2
- package/src/score/peer-score-thresholds.ts +2 -2
- package/src/score/peer-score.ts +2 -2
- package/src/tracer.ts +1 -1
- package/src/utils/buildRawMessage.ts +2 -2
package/dist/typedoc-urls.json
CHANGED
|
@@ -1,197 +1,40 @@
|
|
|
1
1
|
{
|
|
2
|
-
"TopicValidatorResult": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub
|
|
3
|
-
".:TopicValidatorResult": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub
|
|
4
|
-
"GossipSub": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
5
|
-
".:GossipSub": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
6
|
-
"GossipSubComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
7
|
-
".:GossipSubComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
8
|
-
"GossipSubEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
9
|
-
".:GossipSubEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
10
|
-
"GossipsubMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
11
|
-
".:GossipsubMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
12
|
-
"GossipsubOpts": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
13
|
-
".:GossipsubOpts": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
14
|
-
"MeshPeer": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
15
|
-
".:MeshPeer": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
16
|
-
"PublishResult": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
17
|
-
".:PublishResult": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
18
|
-
"SignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
19
|
-
".:SignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
20
|
-
"Subscription": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
21
|
-
".:Subscription": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
22
|
-
"SubscriptionChangeData": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
23
|
-
".:SubscriptionChangeData": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
24
|
-
"TopicValidatorFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
25
|
-
".:TopicValidatorFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
26
|
-
"UnsignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
27
|
-
".:UnsignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub
|
|
28
|
-
"Message": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub
|
|
29
|
-
".:Message": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub
|
|
30
|
-
"SignaturePolicy": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub
|
|
31
|
-
".:SignaturePolicy": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub
|
|
32
|
-
"multicodec": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub
|
|
33
|
-
".:multicodec": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub
|
|
34
|
-
"StrictNoSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub
|
|
35
|
-
".:StrictNoSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub
|
|
36
|
-
"StrictSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub
|
|
37
|
-
".:StrictSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub
|
|
38
|
-
"gossipsub": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub
|
|
39
|
-
".:gossipsub": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub
|
|
40
|
-
"ControlGraftTopicIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlGraft.ControlGraftTopicIDFieldEvent.html",
|
|
41
|
-
"codec": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.message.RPC.ControlGraft.codec.html",
|
|
42
|
-
"decode": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.message.RPC.ControlGraft.decode.html",
|
|
43
|
-
"encode": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.message.RPC.ControlGraft.encode.html",
|
|
44
|
-
"stream": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.message.RPC.ControlGraft.stream.html",
|
|
45
|
-
"ControlIDontWantMessageIDsFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlIDontWant.ControlIDontWantMessageIDsFieldEvent.html",
|
|
46
|
-
"ControlIHaveMessageIDsFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlIHave.ControlIHaveMessageIDsFieldEvent.html",
|
|
47
|
-
"ControlIHaveTopicIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlIHave.ControlIHaveTopicIDFieldEvent.html",
|
|
48
|
-
"ControlIWantMessageIDsFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlIWant.ControlIWantMessageIDsFieldEvent.html",
|
|
49
|
-
"ControlMessageGraftTopicIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.ControlMessageGraftTopicIDFieldEvent.html",
|
|
50
|
-
"ControlMessageIdontwantMessageIDsFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.ControlMessageIdontwantMessageIDsFieldEvent.html",
|
|
51
|
-
"ControlMessageIhaveMessageIDsFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.ControlMessageIhaveMessageIDsFieldEvent.html",
|
|
52
|
-
"ControlMessageIhaveTopicIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.ControlMessageIhaveTopicIDFieldEvent.html",
|
|
53
|
-
"ControlMessageIwantMessageIDsFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.ControlMessageIwantMessageIDsFieldEvent.html",
|
|
54
|
-
"ControlMessagePruneBackoffFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.ControlMessagePruneBackoffFieldEvent.html",
|
|
55
|
-
"ControlMessagePrunePeersPeerIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.ControlMessagePrunePeersPeerIDFieldEvent.html",
|
|
56
|
-
"ControlMessagePrunePeersSignedPeerRecordFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.ControlMessagePrunePeersSignedPeerRecordFieldEvent.html",
|
|
57
|
-
"ControlMessagePruneTopicIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.ControlMessagePruneTopicIDFieldEvent.html",
|
|
58
|
-
"ControlPruneBackoffFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlPrune.ControlPruneBackoffFieldEvent.html",
|
|
59
|
-
"ControlPrunePeersPeerIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlPrune.ControlPrunePeersPeerIDFieldEvent.html",
|
|
60
|
-
"ControlPrunePeersSignedPeerRecordFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlPrune.ControlPrunePeersSignedPeerRecordFieldEvent.html",
|
|
61
|
-
"ControlPruneTopicIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlPrune.ControlPruneTopicIDFieldEvent.html",
|
|
62
|
-
"MessageDataFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.Message.MessageDataFieldEvent.html",
|
|
63
|
-
"MessageFromFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.Message.MessageFromFieldEvent.html",
|
|
64
|
-
"MessageKeyFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.Message.MessageKeyFieldEvent.html",
|
|
65
|
-
"MessageSeqnoFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.Message.MessageSeqnoFieldEvent.html",
|
|
66
|
-
"MessageSignatureFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.Message.MessageSignatureFieldEvent.html",
|
|
67
|
-
"MessageTopicFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.Message.MessageTopicFieldEvent.html",
|
|
68
|
-
"PeerInfoPeerIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.PeerInfo.PeerInfoPeerIDFieldEvent.html",
|
|
69
|
-
"PeerInfoSignedPeerRecordFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.PeerInfo.PeerInfoSignedPeerRecordFieldEvent.html",
|
|
70
|
-
"SubOptsSubscribeFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.SubOpts.SubOptsSubscribeFieldEvent.html",
|
|
71
|
-
"SubOptsTopicFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.SubOpts.SubOptsTopicFieldEvent.html",
|
|
72
|
-
"ControlGraft": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlGraft.html",
|
|
73
|
-
"ControlIDontWant": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlIDontWant.html",
|
|
74
|
-
"ControlIHave": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlIHave.html",
|
|
75
|
-
"ControlIWant": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlIWant.html",
|
|
76
|
-
"ControlMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlMessage.html",
|
|
77
|
-
"ControlPrune": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.ControlPrune.html",
|
|
78
|
-
"PeerInfo": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.PeerInfo.html",
|
|
79
|
-
"RPCControlGraftTopicIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCControlGraftTopicIDFieldEvent.html",
|
|
80
|
-
"RPCControlIdontwantMessageIDsFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCControlIdontwantMessageIDsFieldEvent.html",
|
|
81
|
-
"RPCControlIhaveMessageIDsFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCControlIhaveMessageIDsFieldEvent.html",
|
|
82
|
-
"RPCControlIhaveTopicIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCControlIhaveTopicIDFieldEvent.html",
|
|
83
|
-
"RPCControlIwantMessageIDsFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCControlIwantMessageIDsFieldEvent.html",
|
|
84
|
-
"RPCControlPruneBackoffFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCControlPruneBackoffFieldEvent.html",
|
|
85
|
-
"RPCControlPrunePeersPeerIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCControlPrunePeersPeerIDFieldEvent.html",
|
|
86
|
-
"RPCControlPrunePeersSignedPeerRecordFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCControlPrunePeersSignedPeerRecordFieldEvent.html",
|
|
87
|
-
"RPCControlPruneTopicIDFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCControlPruneTopicIDFieldEvent.html",
|
|
88
|
-
"RPCMessagesDataFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCMessagesDataFieldEvent.html",
|
|
89
|
-
"RPCMessagesFromFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCMessagesFromFieldEvent.html",
|
|
90
|
-
"RPCMessagesKeyFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCMessagesKeyFieldEvent.html",
|
|
91
|
-
"RPCMessagesSeqnoFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCMessagesSeqnoFieldEvent.html",
|
|
92
|
-
"RPCMessagesSignatureFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCMessagesSignatureFieldEvent.html",
|
|
93
|
-
"RPCMessagesTopicFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCMessagesTopicFieldEvent.html",
|
|
94
|
-
"RPCSubscriptionsSubscribeFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCSubscriptionsSubscribeFieldEvent.html",
|
|
95
|
-
"RPCSubscriptionsTopicFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.RPCSubscriptionsTopicFieldEvent.html",
|
|
96
|
-
"SubOpts": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.SubOpts.html",
|
|
97
|
-
"RPC": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.message.RPC.html",
|
|
98
|
-
"ChurnReason": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.ChurnReason.html",
|
|
99
|
-
"./metrics:ChurnReason": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.ChurnReason.html",
|
|
100
|
-
"IDontWantSkipPath": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.IDontWantSkipPath.html",
|
|
101
|
-
"./metrics:IDontWantSkipPath": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.IDontWantSkipPath.html",
|
|
102
|
-
"IHaveIgnoreReason": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.IHaveIgnoreReason.html",
|
|
103
|
-
"./metrics:IHaveIgnoreReason": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.IHaveIgnoreReason.html",
|
|
104
|
-
"InclusionReason": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.InclusionReason.html",
|
|
105
|
-
"./metrics:InclusionReason": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.InclusionReason.html",
|
|
106
|
-
"MessageSource": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.MessageSource.html",
|
|
107
|
-
"./metrics:MessageSource": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.MessageSource.html",
|
|
108
|
-
"ScorePenalty": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.ScorePenalty.html",
|
|
109
|
-
"./metrics:ScorePenalty": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.ScorePenalty.html",
|
|
110
|
-
"ScoreThreshold": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.ScoreThreshold.html",
|
|
111
|
-
"./metrics:ScoreThreshold": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.metrics.ScoreThreshold.html",
|
|
112
|
-
"AvgMinMax": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.AvgMinMax.html",
|
|
113
|
-
"./metrics:AvgMinMax": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.AvgMinMax.html",
|
|
114
|
-
"Gauge": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.Gauge.html",
|
|
115
|
-
"./metrics:Gauge": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.Gauge.html",
|
|
116
|
-
"Histogram": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.Histogram.html",
|
|
117
|
-
"./metrics:Histogram": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.Histogram.html",
|
|
118
|
-
"MetricsRegister": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.MetricsRegister.html",
|
|
119
|
-
"./metrics:MetricsRegister": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.MetricsRegister.html",
|
|
120
|
-
"ScoreWeights": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.ScoreWeights.html",
|
|
121
|
-
"./metrics:ScoreWeights": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.ScoreWeights.html",
|
|
122
|
-
"ToAddGroupCount": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.ToAddGroupCount.html",
|
|
123
|
-
"./metrics:ToAddGroupCount": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.ToAddGroupCount.html",
|
|
124
|
-
"TopicScoreWeights": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.TopicScoreWeights.html",
|
|
125
|
-
"./metrics:TopicScoreWeights": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.TopicScoreWeights.html",
|
|
126
|
-
"ToSendGroupCount": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.ToSendGroupCount.html",
|
|
127
|
-
"./metrics:ToSendGroupCount": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.metrics.ToSendGroupCount.html",
|
|
128
|
-
"AvgMinMaxConfig": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.AvgMinMaxConfig.html",
|
|
129
|
-
"./metrics:AvgMinMaxConfig": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.AvgMinMaxConfig.html",
|
|
130
|
-
"GaugeConfig": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.GaugeConfig.html",
|
|
131
|
-
"./metrics:GaugeConfig": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.GaugeConfig.html",
|
|
132
|
-
"HistogramConfig": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.HistogramConfig.html",
|
|
133
|
-
"./metrics:HistogramConfig": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.HistogramConfig.html",
|
|
134
|
-
"Metrics": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.Metrics.html",
|
|
135
|
-
"./metrics:Metrics": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.Metrics.html",
|
|
136
|
-
"PeersByScoreThreshold": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.PeersByScoreThreshold.html",
|
|
137
|
-
"./metrics:PeersByScoreThreshold": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.PeersByScoreThreshold.html",
|
|
138
|
-
"PromiseDeliveredStats": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.PromiseDeliveredStats.html",
|
|
139
|
-
"./metrics:PromiseDeliveredStats": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.PromiseDeliveredStats.html",
|
|
140
|
-
"TopicLabel": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.TopicLabel.html",
|
|
141
|
-
"./metrics:TopicLabel": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.TopicLabel.html",
|
|
142
|
-
"TopicStrToLabel": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.TopicStrToLabel.html",
|
|
143
|
-
"./metrics:TopicStrToLabel": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.metrics.TopicStrToLabel.html",
|
|
144
|
-
"getMetrics": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.metrics.getMetrics.html",
|
|
145
|
-
"./metrics:getMetrics": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.metrics.getMetrics.html",
|
|
146
|
-
"PeerScore": "https://libp2p.github.io/js-libp2p/classes/_libp2p_gossipsub.score.PeerScore.html",
|
|
147
|
-
"PeerScoreParams": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.score.PeerScoreParams.html",
|
|
148
|
-
"PeerScoreThresholds": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.score.PeerScoreThresholds.html",
|
|
149
|
-
"TopicScoreParams": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.score.TopicScoreParams.html",
|
|
150
|
-
"PeerScoreStatsDump": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.score.PeerScoreStatsDump.html",
|
|
151
|
-
"defaultPeerScoreParams": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub.score.defaultPeerScoreParams.html",
|
|
152
|
-
"defaultPeerScoreThresholds": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub.score.defaultPeerScoreThresholds.html",
|
|
153
|
-
"defaultTopicScoreParams": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub.score.defaultTopicScoreParams.html",
|
|
154
|
-
"createPeerScoreParams": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.score.createPeerScoreParams.html",
|
|
155
|
-
"createPeerScoreThresholds": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.score.createPeerScoreThresholds.html",
|
|
156
|
-
"createTopicScoreParams": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.score.createTopicScoreParams.html",
|
|
157
|
-
"validatePeerScoreParams": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.score.validatePeerScoreParams.html",
|
|
158
|
-
"validatePeerScoreThresholds": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.score.validatePeerScoreThresholds.html",
|
|
159
|
-
"validateTopicScoreParams": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.score.validateTopicScoreParams.html",
|
|
160
|
-
"MessageStatus": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.types.MessageStatus.html",
|
|
161
|
-
"./types:MessageStatus": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.types.MessageStatus.html",
|
|
162
|
-
"PublishConfigType": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.types.PublishConfigType.html",
|
|
163
|
-
"./types:PublishConfigType": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.types.PublishConfigType.html",
|
|
164
|
-
"RejectReason": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.types.RejectReason.html",
|
|
165
|
-
"./types:RejectReason": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.types.RejectReason.html",
|
|
166
|
-
"./types:SignaturePolicy": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.types.SignaturePolicy.html",
|
|
167
|
-
"ValidateError": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.types.ValidateError.html",
|
|
168
|
-
"./types:ValidateError": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.types.ValidateError.html",
|
|
169
|
-
"AddrInfo": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.AddrInfo.html",
|
|
170
|
-
"./types:AddrInfo": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.AddrInfo.html",
|
|
171
|
-
"DataTransform": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.DataTransform.html",
|
|
172
|
-
"./types:DataTransform": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.DataTransform.html",
|
|
173
|
-
"FastMsgIdFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.FastMsgIdFn.html",
|
|
174
|
-
"./types:FastMsgIdFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.FastMsgIdFn.html",
|
|
175
|
-
"MessageId": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.MessageId.html",
|
|
176
|
-
"./types:MessageId": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.MessageId.html",
|
|
177
|
-
"MsgIdFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.MsgIdFn.html",
|
|
178
|
-
"./types:MsgIdFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.MsgIdFn.html",
|
|
179
|
-
"MsgIdToStrFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.MsgIdToStrFn.html",
|
|
180
|
-
"./types:MsgIdToStrFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.MsgIdToStrFn.html",
|
|
181
|
-
"PublishOpts": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.PublishOpts.html",
|
|
182
|
-
"./types:PublishOpts": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.types.PublishOpts.html",
|
|
183
|
-
"IPStr": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.IPStr.html",
|
|
184
|
-
"./types:IPStr": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.IPStr.html",
|
|
185
|
-
"MsgIdStr": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.MsgIdStr.html",
|
|
186
|
-
"./types:MsgIdStr": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.MsgIdStr.html",
|
|
187
|
-
"PeerIdStr": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.PeerIdStr.html",
|
|
188
|
-
"./types:PeerIdStr": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.PeerIdStr.html",
|
|
189
|
-
"PublishConfig": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.PublishConfig.html",
|
|
190
|
-
"./types:PublishConfig": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.PublishConfig.html",
|
|
191
|
-
"RejectReasonObj": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.RejectReasonObj.html",
|
|
192
|
-
"./types:RejectReasonObj": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.RejectReasonObj.html",
|
|
193
|
-
"TopicStr": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.TopicStr.html",
|
|
194
|
-
"./types:TopicStr": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.types.TopicStr.html",
|
|
195
|
-
"rejectReasonFromAcceptance": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.types.rejectReasonFromAcceptance.html",
|
|
196
|
-
"./types:rejectReasonFromAcceptance": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.types.rejectReasonFromAcceptance.html"
|
|
2
|
+
"TopicValidatorResult": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.TopicValidatorResult.html",
|
|
3
|
+
".:TopicValidatorResult": "https://libp2p.github.io/js-libp2p/enums/_libp2p_gossipsub.TopicValidatorResult.html",
|
|
4
|
+
"GossipSub": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipSub.html",
|
|
5
|
+
".:GossipSub": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipSub.html",
|
|
6
|
+
"GossipSubComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipSubComponents.html",
|
|
7
|
+
".:GossipSubComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipSubComponents.html",
|
|
8
|
+
"GossipSubEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipSubEvents.html",
|
|
9
|
+
".:GossipSubEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipSubEvents.html",
|
|
10
|
+
"GossipsubMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipsubMessage.html",
|
|
11
|
+
".:GossipsubMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipsubMessage.html",
|
|
12
|
+
"GossipsubOpts": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipsubOpts.html",
|
|
13
|
+
".:GossipsubOpts": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.GossipsubOpts.html",
|
|
14
|
+
"MeshPeer": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.MeshPeer.html",
|
|
15
|
+
".:MeshPeer": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.MeshPeer.html",
|
|
16
|
+
"PublishResult": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.PublishResult.html",
|
|
17
|
+
".:PublishResult": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.PublishResult.html",
|
|
18
|
+
"SignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.SignedMessage.html",
|
|
19
|
+
".:SignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.SignedMessage.html",
|
|
20
|
+
"Subscription": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.Subscription.html",
|
|
21
|
+
".:Subscription": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.Subscription.html",
|
|
22
|
+
"SubscriptionChangeData": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.SubscriptionChangeData.html",
|
|
23
|
+
".:SubscriptionChangeData": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.SubscriptionChangeData.html",
|
|
24
|
+
"TopicValidatorFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.TopicValidatorFn.html",
|
|
25
|
+
".:TopicValidatorFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.TopicValidatorFn.html",
|
|
26
|
+
"UnsignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.UnsignedMessage.html",
|
|
27
|
+
".:UnsignedMessage": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_gossipsub.UnsignedMessage.html",
|
|
28
|
+
"Message": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.Message.html",
|
|
29
|
+
".:Message": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.Message.html",
|
|
30
|
+
"SignaturePolicy": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.SignaturePolicy.html",
|
|
31
|
+
".:SignaturePolicy": "https://libp2p.github.io/js-libp2p/types/_libp2p_gossipsub.SignaturePolicy.html",
|
|
32
|
+
"multicodec": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub.multicodec.html",
|
|
33
|
+
".:multicodec": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub.multicodec.html",
|
|
34
|
+
"StrictNoSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub.StrictNoSign.html",
|
|
35
|
+
".:StrictNoSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub.StrictNoSign.html",
|
|
36
|
+
"StrictSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub.StrictSign.html",
|
|
37
|
+
".:StrictSign": "https://libp2p.github.io/js-libp2p/variables/_libp2p_gossipsub.StrictSign.html",
|
|
38
|
+
"gossipsub": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.gossipsub.html",
|
|
39
|
+
".:gossipsub": "https://libp2p.github.io/js-libp2p/functions/_libp2p_gossipsub.gossipsub.html"
|
|
197
40
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/gossipsub",
|
|
3
|
-
"version": "17.1.
|
|
3
|
+
"version": "17.1.2",
|
|
4
4
|
"description": "A typescript implementation of gossipsub",
|
|
5
5
|
"files": [
|
|
6
6
|
"src",
|
|
@@ -47,9 +47,10 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
|
+
"clean": "aegir clean",
|
|
50
51
|
"lint": "aegir lint",
|
|
51
52
|
"dep-check": "aegir dep-check",
|
|
52
|
-
"
|
|
53
|
+
"doc-check": "aegir doc-check",
|
|
53
54
|
"build": "aegir build",
|
|
54
55
|
"generate": "protons ./src/message/rpc.proto",
|
|
55
56
|
"benchmark": "npm run benchmark:files -- 'dist/test/benchmark/**/*.test.js' -- --exit",
|
|
@@ -60,8 +61,8 @@
|
|
|
60
61
|
"test:chrome-webworker": "aegir test -f dist/test/*.spec.js -t webworker",
|
|
61
62
|
"test:firefox": "aegir test -f dist/test/*.spec.js -t browser -- --browser firefox",
|
|
62
63
|
"test:firefox-webworker": "aegir test -f dist/test/*.spec.js -t webworker -- --browser firefox",
|
|
63
|
-
"test:
|
|
64
|
-
"test:
|
|
64
|
+
"test:webkit": "aegir test -f dist/test/*.spec.js -t browser -- --browser webkit",
|
|
65
|
+
"test:electron-main": "aegir test -f dist/test/*.spec.js -t electron-main"
|
|
65
66
|
},
|
|
66
67
|
"repository": {
|
|
67
68
|
"type": "git",
|
|
@@ -73,10 +74,14 @@
|
|
|
73
74
|
"gossip"
|
|
74
75
|
],
|
|
75
76
|
"author": "Cayman Nava",
|
|
76
|
-
"license": "Apache-2.0",
|
|
77
|
+
"license": "Apache-2.0 OR MIT",
|
|
77
78
|
"bugs": {
|
|
78
79
|
"url": "https://github.com/libp2p/js-libp2p/issues"
|
|
79
80
|
},
|
|
81
|
+
"publishConfig": {
|
|
82
|
+
"access": "public",
|
|
83
|
+
"provenance": true
|
|
84
|
+
},
|
|
80
85
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/gossipsub#readme",
|
|
81
86
|
"dependencies": {
|
|
82
87
|
"@libp2p/crypto": "^5.1.23",
|
package/src/constants.ts
CHANGED
|
@@ -7,7 +7,7 @@ export const FloodsubID = '/floodsub/1.0.0'
|
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* The protocol ID for version 1.0.0 of the Gossipsub protocol
|
|
10
|
-
* It is advertised along with GossipsubIDv11 for backwards
|
|
10
|
+
* It is advertised along with GossipsubIDv11 for backwards compatibility
|
|
11
11
|
*/
|
|
12
12
|
export const GossipsubIDv10 = '/meshsub/1.0.0'
|
|
13
13
|
|
|
@@ -199,7 +199,7 @@ export const GossipsubPrunePeers = 16
|
|
|
199
199
|
export const GossipsubPruneBackoff = minute
|
|
200
200
|
|
|
201
201
|
/**
|
|
202
|
-
* Backoff to use when
|
|
202
|
+
* Backoff to use when unsubscribing from a topic. Should not resubscribe to this topic before it expired.
|
|
203
203
|
*/
|
|
204
204
|
export const GossipsubUnsubscribeBackoff = 10 * second
|
|
205
205
|
|
|
@@ -276,7 +276,7 @@ export const GossipsubMaxIWantMessages = 10
|
|
|
276
276
|
/**
|
|
277
277
|
* Time to wait for a message requested through IWANT following an IHAVE advertisement.
|
|
278
278
|
* If the message is not received within this window, a broken promise is declared and
|
|
279
|
-
* the router may apply
|
|
279
|
+
* the router may apply behavioural penalties.
|
|
280
280
|
*/
|
|
281
281
|
export const GossipsubIWantFollowupTime = 3 * second
|
|
282
282
|
|
package/src/gossipsub.ts
CHANGED
|
@@ -499,7 +499,7 @@ export class GossipSub extends TypedEventEmitter<GossipSubEvents> implements Typ
|
|
|
499
499
|
//
|
|
500
500
|
// ## Topology
|
|
501
501
|
// - new instance of Topology (unlinked to libp2p) with handlers
|
|
502
|
-
// -
|
|
502
|
+
// - registrar.register(topology)
|
|
503
503
|
|
|
504
504
|
// register protocol with topology
|
|
505
505
|
// Topology callbacks called on connection manager changes
|
|
@@ -1549,7 +1549,7 @@ export class GossipSub extends TypedEventEmitter<GossipSubEvents> implements Typ
|
|
|
1549
1549
|
// we don't GRAFT to/from direct peers; complain loudly if this happens
|
|
1550
1550
|
if (this.direct.has(id)) {
|
|
1551
1551
|
this.log('GRAFT: ignoring request from direct peer %s', id)
|
|
1552
|
-
// this is possibly a bug from a non-
|
|
1552
|
+
// this is possibly a bug from a non-reciprocal configuration; send a PRUNE
|
|
1553
1553
|
prune.push(topicID)
|
|
1554
1554
|
// but don't px
|
|
1555
1555
|
doPX = false
|
|
@@ -2590,7 +2590,7 @@ export class GossipSub extends TypedEventEmitter<GossipSubEvents> implements Typ
|
|
|
2590
2590
|
let peerMessageIDs = messageIDs
|
|
2591
2591
|
if (messageIDs.length > constants.GossipsubMaxIHaveLength) {
|
|
2592
2592
|
// shuffle and slice message IDs per peer so that we emit a different set for each peer
|
|
2593
|
-
// we have enough
|
|
2593
|
+
// we have enough redundancy in the system that this will significantly increase the message
|
|
2594
2594
|
// coverage when we do truncate
|
|
2595
2595
|
peerMessageIDs = shuffle(peerMessageIDs.slice()).slice(0, constants.GossipsubMaxIHaveLength)
|
|
2596
2596
|
}
|
|
@@ -2710,7 +2710,7 @@ export class GossipSub extends TypedEventEmitter<GossipSubEvents> implements Typ
|
|
|
2710
2710
|
// Clear previous timeout before overwriting `status.heartbeatTimeout`, it should be completed tho.
|
|
2711
2711
|
clearTimeout(this.status.heartbeatTimeout)
|
|
2712
2712
|
|
|
2713
|
-
// NodeJS setInterval function is
|
|
2713
|
+
// NodeJS setInterval function is inexact, calls drift by a few milliseconds on each call.
|
|
2714
2714
|
// To run the heartbeat precisely setTimeout() must be used recomputing the delay on every loop.
|
|
2715
2715
|
let msToNextHeartbeat =
|
|
2716
2716
|
this.opts.heartbeatInterval - ((Date.now() - this.status.hearbeatStartMs) % this.opts.heartbeatInterval)
|
|
@@ -2734,7 +2734,7 @@ export class GossipSub extends TypedEventEmitter<GossipSubEvents> implements Typ
|
|
|
2734
2734
|
|
|
2735
2735
|
this.heartbeatTicks++
|
|
2736
2736
|
|
|
2737
|
-
// cache scores
|
|
2737
|
+
// cache scores through the heartbeat
|
|
2738
2738
|
const scores = new Map<string, number>()
|
|
2739
2739
|
const getScore = (id: string): number => {
|
|
2740
2740
|
let s = scores.get(id)
|
|
@@ -2792,7 +2792,7 @@ export class GossipSub extends TypedEventEmitter<GossipSubEvents> implements Typ
|
|
|
2792
2792
|
* Instead of calling getRandomGossipPeers multiple times to:
|
|
2793
2793
|
* + get more mesh peers
|
|
2794
2794
|
* + more outbound peers
|
|
2795
|
-
* +
|
|
2795
|
+
* + opportunistic grafting
|
|
2796
2796
|
* + emitGossip
|
|
2797
2797
|
*
|
|
2798
2798
|
* We want to loop through the topic peers only a single time and prepare gossip peers for all topics to improve the performance
|
|
@@ -2991,8 +2991,8 @@ export class GossipSub extends TypedEventEmitter<GossipSubEvents> implements Typ
|
|
|
2991
2991
|
|
|
2992
2992
|
// expire fanout for topics we haven't published to in a while
|
|
2993
2993
|
const now = Date.now()
|
|
2994
|
-
this.fanoutLastpub.forEach((
|
|
2995
|
-
if (
|
|
2994
|
+
this.fanoutLastpub.forEach((lastPub, topic) => {
|
|
2995
|
+
if (lastPub + fanoutTTL < now) {
|
|
2996
2996
|
this.fanout.delete(topic)
|
|
2997
2997
|
this.fanoutLastpub.delete(topic)
|
|
2998
2998
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* Gossipsub is an implementation of pubsub based on meshsub and floodsub.
|
|
5
|
+
*
|
|
6
|
+
* You can read the specification [here](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub).
|
|
7
|
+
*
|
|
8
|
+
* `@libp2p/gossipsub` currently implements [version 1.1](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md) of the spec.
|
|
9
|
+
*
|
|
10
|
+
* Formerly published as [`@chainsafe/libp2p-gossipsub`](https://www.npmjs.com/package/@chainsafe/libp2p-gossipsub).
|
|
11
|
+
*
|
|
12
|
+
* @example Configuring libp2p to use gossipsub
|
|
13
|
+
*
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { identify } from '@libp2p/identify'
|
|
16
|
+
* import { createLibp2p } from 'libp2p'
|
|
17
|
+
* import { gossipsub } from '@libp2p/gossipsub'
|
|
18
|
+
*
|
|
19
|
+
* const node = await createLibp2p({
|
|
20
|
+
* services: {
|
|
21
|
+
* identify: identify(),
|
|
22
|
+
* pubsub: gossipsub()
|
|
23
|
+
* }
|
|
24
|
+
* //... other options
|
|
25
|
+
* })
|
|
26
|
+
* await node.start()
|
|
27
|
+
*
|
|
28
|
+
* node.services.pubsub.addEventListener('message', (evt) => {
|
|
29
|
+
* console.log(`${evt.detail.topic}:`, new TextDecoder().decode(evt.detail.data))
|
|
30
|
+
* })
|
|
31
|
+
*
|
|
32
|
+
* node.services.pubsub.subscribe('fruit')
|
|
33
|
+
*
|
|
34
|
+
* node.services.pubsub.publish('fruit', new TextEncoder().encode('banana'))
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
|
|
1
38
|
import * as constants from './constants.ts'
|
|
2
39
|
import { GossipSub as GossipSubClass } from './gossipsub.ts'
|
|
3
40
|
import { MessageCache } from './message-cache.ts'
|
package/src/message/rpc.proto
CHANGED
package/src/metrics.ts
CHANGED
|
@@ -29,7 +29,7 @@ export interface PeerScoreParams {
|
|
|
29
29
|
* is the square of the difference, ie (PeersInSameIP - IPColocationThreshold)^2.
|
|
30
30
|
* If the number of peers in the same IP is less than the threshold, then the value is 0.
|
|
31
31
|
* The weight of the parameter MUST be negative, unless you want to disable for testing.
|
|
32
|
-
* Note: In order to simulate many IPs in a
|
|
32
|
+
* Note: In order to simulate many IPs in a manageable manner when testing, you can set the weight to 0
|
|
33
33
|
* thus disabling the IP colocation penalty.
|
|
34
34
|
*/
|
|
35
35
|
IPColocationFactorWeight: number
|
|
@@ -266,7 +266,7 @@ export function validateTopicScoreParams (p: TopicScoreParams): void {
|
|
|
266
266
|
|
|
267
267
|
// check P2
|
|
268
268
|
if (p.firstMessageDeliveriesWeight < 0) {
|
|
269
|
-
throw new InvalidPeerScoreParamsError('
|
|
269
|
+
throw new InvalidPeerScoreParamsError('invalid FirstMessageDeliveriesWeight; must be positive (or 0 to disable)')
|
|
270
270
|
}
|
|
271
271
|
if (
|
|
272
272
|
p.firstMessageDeliveriesWeight !== 0 &&
|
|
@@ -6,7 +6,7 @@ import { InvalidPeerScoreThresholdsError } from '../errors.ts'
|
|
|
6
6
|
|
|
7
7
|
export interface PeerScoreThresholds {
|
|
8
8
|
/**
|
|
9
|
-
* gossipThreshold is the score threshold below which gossip propagation is
|
|
9
|
+
* gossipThreshold is the score threshold below which gossip propagation is suppressed;
|
|
10
10
|
* should be negative.
|
|
11
11
|
*/
|
|
12
12
|
gossipThreshold: number
|
|
@@ -18,7 +18,7 @@ export interface PeerScoreThresholds {
|
|
|
18
18
|
publishThreshold: number
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
* graylistThreshold is the score threshold below which message processing is
|
|
21
|
+
* graylistThreshold is the score threshold below which message processing is suppressed altogether,
|
|
22
22
|
* implementing an effective graylist according to peer score; should be negative and <= PublisThreshold.
|
|
23
23
|
*/
|
|
24
24
|
graylistThreshold: number
|
package/src/score/peer-score.ts
CHANGED
|
@@ -11,7 +11,7 @@ import type { ComponentLogger, Logger } from '@libp2p/interface'
|
|
|
11
11
|
|
|
12
12
|
interface PeerScoreOpts {
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Milliseconds to cache computed score per peer
|
|
15
15
|
*/
|
|
16
16
|
scoreCacheValidityMs: number
|
|
17
17
|
|
|
@@ -21,7 +21,7 @@ interface PeerScoreOpts {
|
|
|
21
21
|
interface ScoreCacheEntry {
|
|
22
22
|
/** The cached score */
|
|
23
23
|
score: number
|
|
24
|
-
/** Unix timestamp in
|
|
24
|
+
/** Unix timestamp in milliseconds, the time after which the cached score for a peer is no longer valid */
|
|
25
25
|
cacheUntil: number
|
|
26
26
|
}
|
|
27
27
|
|
package/src/tracer.ts
CHANGED
|
@@ -131,7 +131,7 @@ export class IWantTracer {
|
|
|
131
131
|
this.trackMessage(msgIdStr)
|
|
132
132
|
|
|
133
133
|
// A message got rejected, so we can stop tracking promises and let the score penalty apply.
|
|
134
|
-
// With the
|
|
134
|
+
// With the exception of obvious invalid messages
|
|
135
135
|
switch (reason) {
|
|
136
136
|
case RejectReason.Error:
|
|
137
137
|
return
|
|
@@ -101,13 +101,13 @@ export async function validateToRawMessage (
|
|
|
101
101
|
msg: RPC.Message
|
|
102
102
|
): Promise<ValidationResult> {
|
|
103
103
|
// If strict-sign, verify all
|
|
104
|
-
// If anonymous (no-sign), ensure no
|
|
104
|
+
// If anonymous (no-sign), ensure no signature, key, from or seqno is present
|
|
105
105
|
|
|
106
106
|
switch (signaturePolicy) {
|
|
107
107
|
case StrictNoSign:
|
|
108
108
|
if (msg.signature != null) { return { valid: false, error: ValidateError.SignaturePresent } }
|
|
109
109
|
if (msg.seqno != null) { return { valid: false, error: ValidateError.SeqnoPresent } }
|
|
110
|
-
if (msg.key != null) { return { valid: false, error: ValidateError.FromPresent } }
|
|
110
|
+
if (msg.from != null || msg.key != null) { return { valid: false, error: ValidateError.FromPresent } }
|
|
111
111
|
|
|
112
112
|
return { valid: true, message: { type: 'unsigned', topic: msg.topic, data: msg.data ?? new Uint8Array(0) } }
|
|
113
113
|
|