@libp2p/gossipsub 16.1.1 → 17.0.0-0967e75f5
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/dist/index.min.js +2 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/constants.d.ts +13 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +13 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/gossipsub.d.ts +3 -0
- package/dist/src/gossipsub.d.ts.map +1 -1
- package/dist/src/gossipsub.js +33 -5
- package/dist/src/gossipsub.js.map +1 -1
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/package.json +9 -9
- package/src/constants.ts +15 -0
- package/src/gossipsub.ts +37 -6
- package/src/index.ts +12 -0
- package/dist/typedoc-urls.json +0 -195
package/dist/src/constants.d.ts
CHANGED
|
@@ -214,4 +214,17 @@ export declare const DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS = 1000;
|
|
|
214
214
|
export declare const BACKOFF_SLACK = 1;
|
|
215
215
|
export declare const GossipsubIdontwantMinDataSize = 512;
|
|
216
216
|
export declare const GossipsubIdontwantMaxMessages = 512;
|
|
217
|
+
/**
|
|
218
|
+
* The default per-peer memory budget for tracking a peer's topic subscriptions,
|
|
219
|
+
* bounding per-peer memory in the topics map. Each topic costs its string
|
|
220
|
+
* length plus GossipsubTopicEntryOverhead, so this bounds topic count as well
|
|
221
|
+
* as bytes (~1000 topics at the 1 MiB default).
|
|
222
|
+
*/
|
|
223
|
+
export declare const GossipsubMaxTopicBytesPerPeer: number;
|
|
224
|
+
/**
|
|
225
|
+
* Approximate fixed heap cost of one topics-map entry (the Map slot, the Set,
|
|
226
|
+
* and the subscriber's peer id), charged per subscription on top of the topic
|
|
227
|
+
* string length so the per-peer budget bounds topic count as well as bytes.
|
|
228
|
+
*/
|
|
229
|
+
export declare const GossipsubTopicEntryOverhead = 1024;
|
|
217
230
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,OAAO,CAAA;AAC1B,eAAO,MAAM,MAAM,QAAc,CAAA;AAIjC,eAAO,MAAM,UAAU,oBAAoB,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,cAAc,mBAAmB,CAAA;AAE9C;;;;GAIG;AACH,eAAO,MAAM,cAAc,mBAAmB,CAAA;AAE9C;;;;GAIG;AACH,eAAO,MAAM,cAAc,mBAAmB,CAAA;AAI9C;;;;GAIG;AACH,eAAO,MAAM,UAAU,IAAI,CAAA;AAE3B;;;;GAIG;AACH,eAAO,MAAM,YAAY,IAAI,CAAA;AAE7B;;;GAGG;AACH,eAAO,MAAM,YAAY,KAAK,CAAA;AAE9B;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAA;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,IAAI,CAAA;AAI9B;;;GAGG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,IAAI,CAAA;AAE/B;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,OAAO,CAAA;AAEzC;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAA;AAI9C;;;GAGG;AACH,eAAO,MAAM,8BAA8B,MAAM,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,0BAA0B,OAAS,CAAA;AAEhD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAS,CAAA;AAExC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAA;AAE3C;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAc,CAAA;AAEtD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAA;AAE5C;;GAEG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC;;GAEG;AACH,eAAO,MAAM,8BAA8B,MAAM,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAc,CAAA;AAErD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAA;AAE9C;;GAEG;AACH,eAAO,MAAM,kCAAkC,OAAS,CAAA;AAExD;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,gCAAgC,IAAI,CAAA;AAEjD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAc,CAAA;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAA;AAE3C;;GAEG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAE3C;;GAEG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAE3C;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAAa,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAa,CAAA;AAE1C,eAAO,MAAM,iBAAiB,QAAa,CAAA;AAE3C,eAAO,MAAM,0BAA0B,+BAA+B,CAAA;AACtE,eAAO,MAAM,0BAA0B,+BAA+B,CAAA;AAEtE;;;GAGG;AACH,eAAO,MAAM,qCAAqC,IAAI,CAAA;AAEtD;;;GAGG;AACH,eAAO,MAAM,kCAAkC,MAAM,CAAA;AAErD;;;GAGG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAA;AAErD;;GAEG;AACH,eAAO,MAAM,8CAA8C,OAAO,CAAA;AAElE,2DAA2D;AAC3D,eAAO,MAAM,aAAa,IAAI,CAAA;AAE9B,eAAO,MAAM,6BAA6B,MAAM,CAAA;AAChD,eAAO,MAAM,6BAA6B,MAAM,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/src/constants.js
CHANGED
|
@@ -218,4 +218,17 @@ export const DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS = 1000;
|
|
|
218
218
|
export const BACKOFF_SLACK = 1;
|
|
219
219
|
export const GossipsubIdontwantMinDataSize = 512;
|
|
220
220
|
export const GossipsubIdontwantMaxMessages = 512;
|
|
221
|
+
/**
|
|
222
|
+
* The default per-peer memory budget for tracking a peer's topic subscriptions,
|
|
223
|
+
* bounding per-peer memory in the topics map. Each topic costs its string
|
|
224
|
+
* length plus GossipsubTopicEntryOverhead, so this bounds topic count as well
|
|
225
|
+
* as bytes (~1000 topics at the 1 MiB default).
|
|
226
|
+
*/
|
|
227
|
+
export const GossipsubMaxTopicBytesPerPeer = 1024 * 1024;
|
|
228
|
+
/**
|
|
229
|
+
* Approximate fixed heap cost of one topics-map entry (the Map slot, the Set,
|
|
230
|
+
* and the subscriber's peer id), charged per subscription on top of the topic
|
|
231
|
+
* string length so the per-peer budget bounds topic count as well as bytes.
|
|
232
|
+
*/
|
|
233
|
+
export const GossipsubTopicEntryOverhead = 1024;
|
|
221
234
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/src/gossipsub.d.ts
CHANGED
|
@@ -144,6 +144,9 @@ export declare class GossipSub extends TypedEventEmitter<GossipSubEvents> implem
|
|
|
144
144
|
private readonly maxOutboundStreams?;
|
|
145
145
|
private readonly runOnLimitedConnection?;
|
|
146
146
|
private readonly allowedTopics;
|
|
147
|
+
private readonly maxTopicBytesPerPeer;
|
|
148
|
+
/** Running total of subscribed-topic bytes per peer, to bound the topics map */
|
|
149
|
+
private readonly peerTopicBytes;
|
|
147
150
|
private heartbeatTimer;
|
|
148
151
|
constructor(components: GossipSubComponents, options?: Partial<GossipsubOpts>);
|
|
149
152
|
readonly [Symbol.toStringTag] = "@libp2p/gossipsub";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gossipsub.d.ts","sourceRoot":"","sources":["../../src/gossipsub.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"gossipsub.d.ts","sourceRoot":"","sources":["../../src/gossipsub.ts"],"names":[],"mappings":"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"}
|
package/dist/src/gossipsub.js
CHANGED
|
@@ -163,6 +163,9 @@ export class GossipSub extends TypedEventEmitter {
|
|
|
163
163
|
maxOutboundStreams;
|
|
164
164
|
runOnLimitedConnection;
|
|
165
165
|
allowedTopics;
|
|
166
|
+
maxTopicBytesPerPeer;
|
|
167
|
+
/** Running total of subscribed-topic bytes per peer, to bound the topics map */
|
|
168
|
+
peerTopicBytes = new Map();
|
|
166
169
|
heartbeatTimer = null;
|
|
167
170
|
constructor(components, options = {}) {
|
|
168
171
|
super();
|
|
@@ -272,6 +275,7 @@ export class GossipSub extends TypedEventEmitter {
|
|
|
272
275
|
this.maxOutboundStreams = options.maxOutboundStreams;
|
|
273
276
|
this.runOnLimitedConnection = options.runOnLimitedConnection;
|
|
274
277
|
this.allowedTopics = (opts.allowedTopics != null) ? new Set(opts.allowedTopics) : null;
|
|
278
|
+
this.maxTopicBytesPerPeer = opts.maxTopicBytesPerPeer ?? constants.GossipsubMaxTopicBytesPerPeer;
|
|
275
279
|
}
|
|
276
280
|
[Symbol.toStringTag] = '@libp2p/gossipsub';
|
|
277
281
|
[serviceCapabilities] = [
|
|
@@ -403,6 +407,7 @@ export class GossipSub extends TypedEventEmitter {
|
|
|
403
407
|
this.peers.clear();
|
|
404
408
|
this.subscriptions.clear();
|
|
405
409
|
this.topics.clear();
|
|
410
|
+
this.peerTopicBytes.clear();
|
|
406
411
|
// Gossipsub
|
|
407
412
|
if (this.heartbeatTimer != null) {
|
|
408
413
|
this.heartbeatTimer.cancel();
|
|
@@ -586,6 +591,7 @@ export class GossipSub extends TypedEventEmitter {
|
|
|
586
591
|
this.topics.delete(topic);
|
|
587
592
|
}
|
|
588
593
|
}
|
|
594
|
+
this.peerTopicBytes.delete(id);
|
|
589
595
|
// Remove this peer from the mesh
|
|
590
596
|
for (const [topicStr, peers] of this.mesh) {
|
|
591
597
|
if (peers.delete(id)) {
|
|
@@ -759,7 +765,10 @@ export class GossipSub extends TypedEventEmitter {
|
|
|
759
765
|
// TODO: Should apply behaviour penalties?
|
|
760
766
|
return;
|
|
761
767
|
}
|
|
762
|
-
this.handleReceivedSubscription(from, topic, subscribe)
|
|
768
|
+
if (!this.handleReceivedSubscription(from, topic, subscribe)) {
|
|
769
|
+
// over the per-peer topic-byte budget, so ignore this subscription
|
|
770
|
+
return;
|
|
771
|
+
}
|
|
763
772
|
// graft the peer into the mesh now rather than waiting for the next
|
|
764
773
|
// heartbeat, so a message published right after subscribing is not dropped
|
|
765
774
|
if (subscribe && this.graftOnSubscribe(fromStr, topic)) {
|
|
@@ -804,23 +813,42 @@ export class GossipSub extends TypedEventEmitter {
|
|
|
804
813
|
*/
|
|
805
814
|
handleReceivedSubscription(from, topic, subscribe) {
|
|
806
815
|
this.log('subscription update from %p topic %s', from, topic);
|
|
816
|
+
const fromStr = from.toString();
|
|
807
817
|
let topicSet = this.topics.get(topic);
|
|
818
|
+
// charge each topic its string length plus a fixed per-entry overhead, so
|
|
819
|
+
// the budget bounds both topic bytes and topic count (a peer cannot occupy
|
|
820
|
+
// more than roughly budget / overhead entries regardless of topic length)
|
|
821
|
+
const cost = topic.length + constants.GossipsubTopicEntryOverhead;
|
|
808
822
|
if (subscribe) {
|
|
823
|
+
// a repeat SUBSCRIBE to a topic the peer already has is a no-op
|
|
824
|
+
if (topicSet?.has(fromStr) === true) {
|
|
825
|
+
return true;
|
|
826
|
+
}
|
|
827
|
+
// bound the memory a single peer may occupy in the topics map
|
|
828
|
+
const used = this.peerTopicBytes.get(fromStr) ?? 0;
|
|
829
|
+
if (used + cost > this.maxTopicBytesPerPeer) {
|
|
830
|
+
// over budget, so ignore this subscription; the peer keeps what it has
|
|
831
|
+
this.log('ignoring subscription from %p topic %s, over per-peer topic budget', from, topic);
|
|
832
|
+
return false;
|
|
833
|
+
}
|
|
834
|
+
this.peerTopicBytes.set(fromStr, used + cost);
|
|
809
835
|
if (topicSet == null) {
|
|
810
836
|
topicSet = new Set();
|
|
811
837
|
this.topics.set(topic, topicSet);
|
|
812
838
|
}
|
|
813
839
|
// subscribe peer to new topic
|
|
814
|
-
topicSet.add(
|
|
840
|
+
topicSet.add(fromStr);
|
|
815
841
|
}
|
|
816
|
-
else if (topicSet
|
|
817
|
-
// unsubscribe from existing topic
|
|
818
|
-
topicSet.delete(
|
|
842
|
+
else if (topicSet?.has(fromStr) === true) {
|
|
843
|
+
// unsubscribe from existing topic and refund its cost
|
|
844
|
+
topicSet.delete(fromStr);
|
|
845
|
+
this.peerTopicBytes.set(fromStr, Math.max(0, (this.peerTopicBytes.get(fromStr) ?? 0) - cost));
|
|
819
846
|
if (topicSet.size === 0) {
|
|
820
847
|
this.topics.delete(topic);
|
|
821
848
|
}
|
|
822
849
|
}
|
|
823
850
|
// TODO: rust-libp2p has A LOT more logic here
|
|
851
|
+
return true;
|
|
824
852
|
}
|
|
825
853
|
/**
|
|
826
854
|
* Handles a newly received message from an RPC.
|