@libp2p/gossipsub 14.1.1-6059227cb

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.
Files changed (160) hide show
  1. package/README.md +85 -0
  2. package/dist/index.min.js +19 -0
  3. package/dist/index.min.js.map +7 -0
  4. package/dist/src/config.d.ts +32 -0
  5. package/dist/src/config.d.ts.map +1 -0
  6. package/dist/src/config.js +2 -0
  7. package/dist/src/config.js.map +1 -0
  8. package/dist/src/constants.d.ts +213 -0
  9. package/dist/src/constants.d.ts.map +1 -0
  10. package/dist/src/constants.js +217 -0
  11. package/dist/src/constants.js.map +1 -0
  12. package/dist/src/errors.d.ts +9 -0
  13. package/dist/src/errors.d.ts.map +1 -0
  14. package/dist/src/errors.js +15 -0
  15. package/dist/src/errors.js.map +1 -0
  16. package/dist/src/gossipsub.d.ts +419 -0
  17. package/dist/src/gossipsub.d.ts.map +1 -0
  18. package/dist/src/gossipsub.js +2520 -0
  19. package/dist/src/gossipsub.js.map +1 -0
  20. package/dist/src/index.d.ts +344 -0
  21. package/dist/src/index.d.ts.map +1 -0
  22. package/dist/src/index.js +43 -0
  23. package/dist/src/index.js.map +1 -0
  24. package/dist/src/message/decodeRpc.d.ts +11 -0
  25. package/dist/src/message/decodeRpc.d.ts.map +1 -0
  26. package/dist/src/message/decodeRpc.js +10 -0
  27. package/dist/src/message/decodeRpc.js.map +1 -0
  28. package/dist/src/message/index.d.ts +2 -0
  29. package/dist/src/message/index.d.ts.map +1 -0
  30. package/dist/src/message/index.js +2 -0
  31. package/dist/src/message/index.js.map +1 -0
  32. package/dist/src/message/rpc.d.ts +99 -0
  33. package/dist/src/message/rpc.d.ts.map +1 -0
  34. package/dist/src/message/rpc.js +663 -0
  35. package/dist/src/message/rpc.js.map +1 -0
  36. package/dist/src/message-cache.d.ts +80 -0
  37. package/dist/src/message-cache.d.ts.map +1 -0
  38. package/dist/src/message-cache.js +144 -0
  39. package/dist/src/message-cache.js.map +1 -0
  40. package/dist/src/metrics.d.ts +467 -0
  41. package/dist/src/metrics.d.ts.map +1 -0
  42. package/dist/src/metrics.js +896 -0
  43. package/dist/src/metrics.js.map +1 -0
  44. package/dist/src/score/compute-score.d.ts +4 -0
  45. package/dist/src/score/compute-score.d.ts.map +1 -0
  46. package/dist/src/score/compute-score.js +75 -0
  47. package/dist/src/score/compute-score.js.map +1 -0
  48. package/dist/src/score/index.d.ts +4 -0
  49. package/dist/src/score/index.d.ts.map +1 -0
  50. package/dist/src/score/index.js +4 -0
  51. package/dist/src/score/index.js.map +1 -0
  52. package/dist/src/score/message-deliveries.d.ts +45 -0
  53. package/dist/src/score/message-deliveries.d.ts.map +1 -0
  54. package/dist/src/score/message-deliveries.js +75 -0
  55. package/dist/src/score/message-deliveries.js.map +1 -0
  56. package/dist/src/score/peer-score-params.d.ts +125 -0
  57. package/dist/src/score/peer-score-params.d.ts.map +1 -0
  58. package/dist/src/score/peer-score-params.js +159 -0
  59. package/dist/src/score/peer-score-params.js.map +1 -0
  60. package/dist/src/score/peer-score-thresholds.d.ts +31 -0
  61. package/dist/src/score/peer-score-thresholds.d.ts.map +1 -0
  62. package/dist/src/score/peer-score-thresholds.js +32 -0
  63. package/dist/src/score/peer-score-thresholds.js.map +1 -0
  64. package/dist/src/score/peer-score.d.ts +119 -0
  65. package/dist/src/score/peer-score.d.ts.map +1 -0
  66. package/dist/src/score/peer-score.js +459 -0
  67. package/dist/src/score/peer-score.js.map +1 -0
  68. package/dist/src/score/peer-stats.d.ts +32 -0
  69. package/dist/src/score/peer-stats.d.ts.map +1 -0
  70. package/dist/src/score/peer-stats.js +2 -0
  71. package/dist/src/score/peer-stats.js.map +1 -0
  72. package/dist/src/score/scoreMetrics.d.ts +23 -0
  73. package/dist/src/score/scoreMetrics.d.ts.map +1 -0
  74. package/dist/src/score/scoreMetrics.js +155 -0
  75. package/dist/src/score/scoreMetrics.js.map +1 -0
  76. package/dist/src/stream.d.ts +30 -0
  77. package/dist/src/stream.d.ts.map +1 -0
  78. package/dist/src/stream.js +55 -0
  79. package/dist/src/stream.js.map +1 -0
  80. package/dist/src/tracer.d.ts +53 -0
  81. package/dist/src/tracer.d.ts.map +1 -0
  82. package/dist/src/tracer.js +155 -0
  83. package/dist/src/tracer.js.map +1 -0
  84. package/dist/src/types.d.ts +148 -0
  85. package/dist/src/types.d.ts.map +1 -0
  86. package/dist/src/types.js +90 -0
  87. package/dist/src/types.js.map +1 -0
  88. package/dist/src/utils/buildRawMessage.d.ts +20 -0
  89. package/dist/src/utils/buildRawMessage.d.ts.map +1 -0
  90. package/dist/src/utils/buildRawMessage.js +151 -0
  91. package/dist/src/utils/buildRawMessage.js.map +1 -0
  92. package/dist/src/utils/create-gossip-rpc.d.ts +7 -0
  93. package/dist/src/utils/create-gossip-rpc.d.ts.map +1 -0
  94. package/dist/src/utils/create-gossip-rpc.js +31 -0
  95. package/dist/src/utils/create-gossip-rpc.js.map +1 -0
  96. package/dist/src/utils/index.d.ts +4 -0
  97. package/dist/src/utils/index.d.ts.map +1 -0
  98. package/dist/src/utils/index.js +4 -0
  99. package/dist/src/utils/index.js.map +1 -0
  100. package/dist/src/utils/messageIdToString.d.ts +5 -0
  101. package/dist/src/utils/messageIdToString.d.ts.map +1 -0
  102. package/dist/src/utils/messageIdToString.js +8 -0
  103. package/dist/src/utils/messageIdToString.js.map +1 -0
  104. package/dist/src/utils/msgIdFn.d.ts +10 -0
  105. package/dist/src/utils/msgIdFn.d.ts.map +1 -0
  106. package/dist/src/utils/msgIdFn.js +23 -0
  107. package/dist/src/utils/msgIdFn.js.map +1 -0
  108. package/dist/src/utils/multiaddr.d.ts +3 -0
  109. package/dist/src/utils/multiaddr.d.ts.map +1 -0
  110. package/dist/src/utils/multiaddr.js +15 -0
  111. package/dist/src/utils/multiaddr.js.map +1 -0
  112. package/dist/src/utils/publishConfig.d.ts +8 -0
  113. package/dist/src/utils/publishConfig.d.ts.map +1 -0
  114. package/dist/src/utils/publishConfig.js +25 -0
  115. package/dist/src/utils/publishConfig.js.map +1 -0
  116. package/dist/src/utils/set.d.ts +14 -0
  117. package/dist/src/utils/set.d.ts.map +1 -0
  118. package/dist/src/utils/set.js +41 -0
  119. package/dist/src/utils/set.js.map +1 -0
  120. package/dist/src/utils/shuffle.d.ts +7 -0
  121. package/dist/src/utils/shuffle.d.ts.map +1 -0
  122. package/dist/src/utils/shuffle.js +21 -0
  123. package/dist/src/utils/shuffle.js.map +1 -0
  124. package/dist/src/utils/time-cache.d.ts +22 -0
  125. package/dist/src/utils/time-cache.d.ts.map +1 -0
  126. package/dist/src/utils/time-cache.js +54 -0
  127. package/dist/src/utils/time-cache.js.map +1 -0
  128. package/package.json +142 -0
  129. package/src/config.ts +31 -0
  130. package/src/constants.ts +261 -0
  131. package/src/errors.ts +17 -0
  132. package/src/gossipsub.ts +3061 -0
  133. package/src/index.ts +404 -0
  134. package/src/message/decodeRpc.ts +19 -0
  135. package/src/message/index.ts +1 -0
  136. package/src/message/rpc.proto +58 -0
  137. package/src/message/rpc.ts +848 -0
  138. package/src/message-cache.ts +196 -0
  139. package/src/metrics.ts +1014 -0
  140. package/src/score/compute-score.ts +98 -0
  141. package/src/score/index.ts +3 -0
  142. package/src/score/message-deliveries.ts +95 -0
  143. package/src/score/peer-score-params.ts +316 -0
  144. package/src/score/peer-score-thresholds.ts +70 -0
  145. package/src/score/peer-score.ts +565 -0
  146. package/src/score/peer-stats.ts +33 -0
  147. package/src/score/scoreMetrics.ts +215 -0
  148. package/src/stream.ts +79 -0
  149. package/src/tracer.ts +177 -0
  150. package/src/types.ts +178 -0
  151. package/src/utils/buildRawMessage.ts +174 -0
  152. package/src/utils/create-gossip-rpc.ts +34 -0
  153. package/src/utils/index.ts +3 -0
  154. package/src/utils/messageIdToString.ts +8 -0
  155. package/src/utils/msgIdFn.ts +24 -0
  156. package/src/utils/multiaddr.ts +19 -0
  157. package/src/utils/publishConfig.ts +33 -0
  158. package/src/utils/set.ts +43 -0
  159. package/src/utils/shuffle.ts +21 -0
  160. package/src/utils/time-cache.ts +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PeerScoreParams } from './peer-score-params.js';
2
+ import type { PeerStats } from './peer-stats.js';
3
+ export declare function computeScore(peer: string, pstats: PeerStats, params: PeerScoreParams, peerIPs: Map<string, Set<string>>): number;
4
+ //# sourceMappingURL=compute-score.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-score.d.ts","sourceRoot":"","sources":["../../../src/score/compute-score.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAChC,MAAM,CAyFR"}
@@ -0,0 +1,75 @@
1
+ export function computeScore(peer, pstats, params, peerIPs) {
2
+ let score = 0;
3
+ // topic stores
4
+ Object.entries(pstats.topics).forEach(([topic, tstats]) => {
5
+ // the topic parameters
6
+ const topicParams = params.topics[topic];
7
+ if (topicParams === undefined) {
8
+ // we are not scoring this topic
9
+ return;
10
+ }
11
+ let topicScore = 0;
12
+ // P1: time in Mesh
13
+ if (tstats.inMesh) {
14
+ let p1 = tstats.meshTime / topicParams.timeInMeshQuantum;
15
+ if (p1 > topicParams.timeInMeshCap) {
16
+ p1 = topicParams.timeInMeshCap;
17
+ }
18
+ topicScore += p1 * topicParams.timeInMeshWeight;
19
+ }
20
+ // P2: first message deliveries
21
+ let p2 = tstats.firstMessageDeliveries;
22
+ if (p2 > topicParams.firstMessageDeliveriesCap) {
23
+ p2 = topicParams.firstMessageDeliveriesCap;
24
+ }
25
+ topicScore += p2 * topicParams.firstMessageDeliveriesWeight;
26
+ // P3: mesh message deliveries
27
+ if (tstats.meshMessageDeliveriesActive &&
28
+ tstats.meshMessageDeliveries < topicParams.meshMessageDeliveriesThreshold) {
29
+ const deficit = topicParams.meshMessageDeliveriesThreshold - tstats.meshMessageDeliveries;
30
+ const p3 = deficit * deficit;
31
+ topicScore += p3 * topicParams.meshMessageDeliveriesWeight;
32
+ }
33
+ // P3b:
34
+ // NOTE: the weight of P3b is negative (validated in validateTopicScoreParams) so this detracts
35
+ const p3b = tstats.meshFailurePenalty;
36
+ topicScore += p3b * topicParams.meshFailurePenaltyWeight;
37
+ // P4: invalid messages
38
+ // NOTE: the weight of P4 is negative (validated in validateTopicScoreParams) so this detracts
39
+ const p4 = tstats.invalidMessageDeliveries * tstats.invalidMessageDeliveries;
40
+ topicScore += p4 * topicParams.invalidMessageDeliveriesWeight;
41
+ // update score, mixing with topic weight
42
+ score += topicScore * topicParams.topicWeight;
43
+ });
44
+ // apply the topic score cap, if any
45
+ if (params.topicScoreCap > 0 && score > params.topicScoreCap) {
46
+ score = params.topicScoreCap;
47
+ }
48
+ // P5: application-specific score
49
+ const p5 = params.appSpecificScore(peer);
50
+ score += p5 * params.appSpecificWeight;
51
+ // P6: IP colocation factor
52
+ pstats.knownIPs.forEach((ip) => {
53
+ if (params.IPColocationFactorWhitelist.has(ip)) {
54
+ return;
55
+ }
56
+ // P6 has a cliff (IPColocationFactorThreshold)
57
+ // It's only applied if at least that many peers are connected to us from that source IP addr.
58
+ // It is quadratic, and the weight is negative (validated in validatePeerScoreParams)
59
+ const peersInIP = peerIPs.get(ip);
60
+ const numPeersInIP = (peersInIP != null) ? peersInIP.size : 0;
61
+ if (numPeersInIP > params.IPColocationFactorThreshold) {
62
+ const surplus = numPeersInIP - params.IPColocationFactorThreshold;
63
+ const p6 = surplus * surplus;
64
+ score += p6 * params.IPColocationFactorWeight;
65
+ }
66
+ });
67
+ // P7: behavioural pattern penalty
68
+ if (pstats.behaviourPenalty > params.behaviourPenaltyThreshold) {
69
+ const excess = pstats.behaviourPenalty - params.behaviourPenaltyThreshold;
70
+ const p7 = excess * excess;
71
+ score += p7 * params.behaviourPenaltyWeight;
72
+ }
73
+ return score;
74
+ }
75
+ //# sourceMappingURL=compute-score.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-score.js","sourceRoot":"","sources":["../../../src/score/compute-score.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './peer-score-params.js';
2
+ export * from './peer-score-thresholds.js';
3
+ export * from './peer-score.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/score/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './peer-score-params.js';
2
+ export * from './peer-score-thresholds.js';
3
+ export * from './peer-score.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/score/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,45 @@
1
+ import Denque from 'denque';
2
+ export declare enum DeliveryRecordStatus {
3
+ /**
4
+ * we don't know (yet) if the message is valid
5
+ */
6
+ unknown = 0,
7
+ /**
8
+ * we know the message is valid
9
+ */
10
+ valid = 1,
11
+ /**
12
+ * we know the message is invalid
13
+ */
14
+ invalid = 2,
15
+ /**
16
+ * we were instructed by the validator to ignore the message
17
+ */
18
+ ignored = 3
19
+ }
20
+ export interface DeliveryRecord {
21
+ status: DeliveryRecordStatus;
22
+ firstSeenTsMs: number;
23
+ validated: number;
24
+ peers: Set<string>;
25
+ }
26
+ interface DeliveryQueueEntry {
27
+ msgId: string;
28
+ expire: number;
29
+ }
30
+ /**
31
+ * Map of canonical message ID to DeliveryRecord
32
+ *
33
+ * Maintains an internal queue for efficient gc of old messages
34
+ */
35
+ export declare class MessageDeliveries {
36
+ private readonly records;
37
+ queue: Denque<DeliveryQueueEntry>;
38
+ constructor();
39
+ getRecord(msgIdStr: string): DeliveryRecord | undefined;
40
+ ensureRecord(msgIdStr: string): DeliveryRecord;
41
+ gc(): void;
42
+ clear(): void;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=message-deliveries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-deliveries.d.ts","sourceRoot":"","sources":["../../../src/score/message-deliveries.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAG3B,oBAAY,oBAAoB;IAC9B;;OAEG;IACH,OAAO,IAAA;IACP;;OAEG;IACH,KAAK,IAAA;IACL;;OAEG;IACH,OAAO,IAAA;IACP;;OAEG;IACH,OAAO,IAAA;CACR;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,oBAAoB,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACnB;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAC9C,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAA;;IAOxC,SAAS,CAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIxD,YAAY,CAAE,QAAQ,EAAE,MAAM,GAAG,cAAc;IA0B/C,EAAE,IAAK,IAAI;IAYX,KAAK,IAAK,IAAI;CAIf"}
@@ -0,0 +1,75 @@
1
+ import Denque from 'denque';
2
+ import { TimeCacheDuration } from '../constants.js';
3
+ export var DeliveryRecordStatus;
4
+ (function (DeliveryRecordStatus) {
5
+ /**
6
+ * we don't know (yet) if the message is valid
7
+ */
8
+ DeliveryRecordStatus[DeliveryRecordStatus["unknown"] = 0] = "unknown";
9
+ /**
10
+ * we know the message is valid
11
+ */
12
+ DeliveryRecordStatus[DeliveryRecordStatus["valid"] = 1] = "valid";
13
+ /**
14
+ * we know the message is invalid
15
+ */
16
+ DeliveryRecordStatus[DeliveryRecordStatus["invalid"] = 2] = "invalid";
17
+ /**
18
+ * we were instructed by the validator to ignore the message
19
+ */
20
+ DeliveryRecordStatus[DeliveryRecordStatus["ignored"] = 3] = "ignored";
21
+ })(DeliveryRecordStatus || (DeliveryRecordStatus = {}));
22
+ /**
23
+ * Map of canonical message ID to DeliveryRecord
24
+ *
25
+ * Maintains an internal queue for efficient gc of old messages
26
+ */
27
+ export class MessageDeliveries {
28
+ records;
29
+ queue;
30
+ constructor() {
31
+ this.records = new Map();
32
+ this.queue = new Denque();
33
+ }
34
+ getRecord(msgIdStr) {
35
+ return this.records.get(msgIdStr);
36
+ }
37
+ ensureRecord(msgIdStr) {
38
+ let drec = this.records.get(msgIdStr);
39
+ if (drec != null) {
40
+ return drec;
41
+ }
42
+ // record doesn't exist yet
43
+ // create record
44
+ drec = {
45
+ status: DeliveryRecordStatus.unknown,
46
+ firstSeenTsMs: Date.now(),
47
+ validated: 0,
48
+ peers: new Set()
49
+ };
50
+ this.records.set(msgIdStr, drec);
51
+ // and add msgId to the queue
52
+ const entry = {
53
+ msgId: msgIdStr,
54
+ expire: Date.now() + TimeCacheDuration
55
+ };
56
+ this.queue.push(entry);
57
+ return drec;
58
+ }
59
+ gc() {
60
+ const now = Date.now();
61
+ // queue is sorted by expiry time
62
+ // remove expired messages, remove from queue until first un-expired message found
63
+ let head = this.queue.peekFront();
64
+ while ((head != null) && head.expire < now) {
65
+ this.records.delete(head.msgId);
66
+ this.queue.shift();
67
+ head = this.queue.peekFront();
68
+ }
69
+ }
70
+ clear() {
71
+ this.records.clear();
72
+ this.queue.clear();
73
+ }
74
+ }
75
+ //# sourceMappingURL=message-deliveries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-deliveries.js","sourceRoot":"","sources":["../../../src/score/message-deliveries.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,MAAM,CAAN,IAAY,oBAiBX;AAjBD,WAAY,oBAAoB;IAC9B;;OAEG;IACH,qEAAO,CAAA;IACP;;OAEG;IACH,iEAAK,CAAA;IACL;;OAEG;IACH,qEAAO,CAAA;IACP;;OAEG;IACH,qEAAO,CAAA;AACT,CAAC,EAjBW,oBAAoB,KAApB,oBAAoB,QAiB/B;AAcD;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACX,OAAO,CAA6B;IAC9C,KAAK,CAA4B;IAExC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED,SAAS,CAAE,QAAgB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED,YAAY,CAAE,QAAgB;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,2BAA2B;QAC3B,gBAAgB;QAChB,IAAI,GAAG;YACL,MAAM,EAAE,oBAAoB,CAAC,OAAO;YACpC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;YACzB,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,IAAI,GAAG,EAAE;SACjB,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAEhC,6BAA6B;QAC7B,MAAM,KAAK,GAAuB;YAChC,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB;SACvC,CAAA;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,EAAE;QACA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,iCAAiC;QACjC,kFAAkF;QAClF,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;QACjC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YAClB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,125 @@
1
+ export interface PeerScoreParams {
2
+ /**
3
+ * Score parameters per topic.
4
+ */
5
+ topics: Record<string, TopicScoreParams>;
6
+ /**
7
+ * Aggregate topic score cap; this limits the total contribution of topics towards a positive
8
+ * score. It must be positive (or 0 for no cap).
9
+ */
10
+ topicScoreCap: number;
11
+ /**
12
+ * P5: Application-specific peer scoring
13
+ */
14
+ appSpecificScore(p: string): number;
15
+ appSpecificWeight: number;
16
+ /**
17
+ * P6: IP-colocation factor.
18
+ * The parameter has an associated counter which counts the number of peers with the same IP.
19
+ * If the number of peers in the same IP exceeds IPColocationFactorThreshold, then the value
20
+ * is the square of the difference, ie (PeersInSameIP - IPColocationThreshold)^2.
21
+ * If the number of peers in the same IP is less than the threshold, then the value is 0.
22
+ * The weight of the parameter MUST be negative, unless you want to disable for testing.
23
+ * Note: In order to simulate many IPs in a managable manner when testing, you can set the weight to 0
24
+ * thus disabling the IP colocation penalty.
25
+ */
26
+ IPColocationFactorWeight: number;
27
+ IPColocationFactorThreshold: number;
28
+ IPColocationFactorWhitelist: Set<string>;
29
+ /**
30
+ * P7: behavioural pattern penalties.
31
+ * This parameter has an associated counter which tracks misbehaviour as detected by the
32
+ * router. The router currently applies penalties for the following behaviors:
33
+ * - attempting to re-graft before the prune backoff time has elapsed.
34
+ * - not following up in IWANT requests for messages advertised with IHAVE.
35
+ *
36
+ * The value of the parameter is the square of the counter, which decays with BehaviourPenaltyDecay.
37
+ * The weight of the parameter MUST be negative (or zero to disable).
38
+ */
39
+ behaviourPenaltyWeight: number;
40
+ behaviourPenaltyThreshold: number;
41
+ behaviourPenaltyDecay: number;
42
+ /**
43
+ * the decay interval for parameter counters.
44
+ */
45
+ decayInterval: number;
46
+ /**
47
+ * counter value below which it is considered 0.
48
+ */
49
+ decayToZero: number;
50
+ /**
51
+ * time to remember counters for a disconnected peer.
52
+ */
53
+ retainScore: number;
54
+ }
55
+ export interface TopicScoreParams {
56
+ /**
57
+ * The weight of the topic.
58
+ */
59
+ topicWeight: number;
60
+ /**
61
+ * P1: time in the mesh
62
+ * This is the time the peer has ben grafted in the mesh.
63
+ * The value of the parameter is the time/TimeInMeshQuantum, capped by TimeInMeshCap
64
+ * The weight of the parameter MUST be positive (or zero to disable).
65
+ */
66
+ timeInMeshWeight: number;
67
+ timeInMeshQuantum: number;
68
+ timeInMeshCap: number;
69
+ /**
70
+ * P2: first message deliveries
71
+ * This is the number of message deliveries in the topic.
72
+ * The value of the parameter is a counter, decaying with FirstMessageDeliveriesDecay, and capped
73
+ * by FirstMessageDeliveriesCap.
74
+ * The weight of the parameter MUST be positive (or zero to disable).
75
+ */
76
+ firstMessageDeliveriesWeight: number;
77
+ firstMessageDeliveriesDecay: number;
78
+ firstMessageDeliveriesCap: number;
79
+ /**
80
+ * P3: mesh message deliveries
81
+ * This is the number of message deliveries in the mesh, within the MeshMessageDeliveriesWindow of
82
+ * message validation; deliveries during validation also count and are retroactively applied
83
+ * when validation succeeds.
84
+ * This window accounts for the minimum time before a hostile mesh peer trying to game the score
85
+ * could replay back a valid message we just sent them.
86
+ * It effectively tracks first and near-first deliveries, ie a message seen from a mesh peer
87
+ * before we have forwarded it to them.
88
+ * The parameter has an associated counter, decaying with MeshMessageDeliveriesDecay.
89
+ * If the counter exceeds the threshold, its value is 0.
90
+ * If the counter is below the MeshMessageDeliveriesThreshold, the value is the square of
91
+ * the deficit, ie (MessageDeliveriesThreshold - counter)^2
92
+ * The penalty is only activated after MeshMessageDeliveriesActivation time in the mesh.
93
+ * The weight of the parameter MUST be negative (or zero to disable).
94
+ */
95
+ meshMessageDeliveriesWeight: number;
96
+ meshMessageDeliveriesDecay: number;
97
+ meshMessageDeliveriesCap: number;
98
+ meshMessageDeliveriesThreshold: number;
99
+ meshMessageDeliveriesWindow: number;
100
+ meshMessageDeliveriesActivation: number;
101
+ /**
102
+ * P3b: sticky mesh propagation failures
103
+ * This is a sticky penalty that applies when a peer gets pruned from the mesh with an active
104
+ * mesh message delivery penalty.
105
+ * The weight of the parameter MUST be negative (or zero to disable)
106
+ */
107
+ meshFailurePenaltyWeight: number;
108
+ meshFailurePenaltyDecay: number;
109
+ /**
110
+ * P4: invalid messages
111
+ * This is the number of invalid messages in the topic.
112
+ * The value of the parameter is the square of the counter, decaying with
113
+ * InvalidMessageDeliveriesDecay.
114
+ * The weight of the parameter MUST be negative (or zero to disable).
115
+ */
116
+ invalidMessageDeliveriesWeight: number;
117
+ invalidMessageDeliveriesDecay: number;
118
+ }
119
+ export declare const defaultPeerScoreParams: PeerScoreParams;
120
+ export declare const defaultTopicScoreParams: TopicScoreParams;
121
+ export declare function createPeerScoreParams(p?: Partial<PeerScoreParams>): PeerScoreParams;
122
+ export declare function createTopicScoreParams(p?: Partial<TopicScoreParams>): TopicScoreParams;
123
+ export declare function validatePeerScoreParams(p: PeerScoreParams): void;
124
+ export declare function validateTopicScoreParams(p: TopicScoreParams): void;
125
+ //# sourceMappingURL=peer-score-params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-score-params.d.ts","sourceRoot":"","sources":["../../../src/score/peer-score-params.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAExC;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACnC,iBAAiB,EAAE,MAAM,CAAA;IAEzB;;;;;;;;;OASG;IACH,wBAAwB,EAAE,MAAM,CAAA;IAChC,2BAA2B,EAAE,MAAM,CAAA;IACnC,2BAA2B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAExC;;;;;;;;;OASG;IACH,sBAAsB,EAAE,MAAM,CAAA;IAC9B,yBAAyB,EAAE,MAAM,CAAA;IACjC,qBAAqB,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IAErB;;;;;;OAMG;IACH,4BAA4B,EAAE,MAAM,CAAA;IACpC,2BAA2B,EAAE,MAAM,CAAA;IACnC,yBAAyB,EAAE,MAAM,CAAA;IAEjC;;;;;;;;;;;;;;;OAeG;IACH,2BAA2B,EAAE,MAAM,CAAA;IACnC,0BAA0B,EAAE,MAAM,CAAA;IAClC,wBAAwB,EAAE,MAAM,CAAA;IAChC,8BAA8B,EAAE,MAAM,CAAA;IACtC,2BAA2B,EAAE,MAAM,CAAA;IACnC,+BAA+B,EAAE,MAAM,CAAA;IAEvC;;;;;OAKG;IACH,wBAAwB,EAAE,MAAM,CAAA;IAChC,uBAAuB,EAAE,MAAM,CAAA;IAE/B;;;;;;OAMG;IACH,8BAA8B,EAAE,MAAM,CAAA;IACtC,6BAA6B,EAAE,MAAM,CAAA;CACtC;AAED,eAAO,MAAM,sBAAsB,EAAE,eAcpC,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,gBAsBrC,CAAA;AAED,wBAAgB,qBAAqB,CAAE,CAAC,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,eAAe,CAWxF;AAED,wBAAgB,sBAAsB,CAAE,CAAC,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,gBAAgB,CAK3F;AAGD,wBAAgB,uBAAuB,CAAE,CAAC,EAAE,eAAe,GAAG,IAAI,CA4CjE;AAGD,wBAAgB,wBAAwB,CAAE,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAqEnE"}
@@ -0,0 +1,159 @@
1
+ import { InvalidPeerScoreParamsError } from '../errors.js';
2
+ export const defaultPeerScoreParams = {
3
+ topics: {},
4
+ topicScoreCap: 10.0,
5
+ appSpecificScore: () => 0.0,
6
+ appSpecificWeight: 10.0,
7
+ IPColocationFactorWeight: -5.0,
8
+ IPColocationFactorThreshold: 10.0,
9
+ IPColocationFactorWhitelist: new Set(),
10
+ behaviourPenaltyWeight: -10.0,
11
+ behaviourPenaltyThreshold: 0.0,
12
+ behaviourPenaltyDecay: 0.2,
13
+ decayInterval: 1000.0,
14
+ decayToZero: 0.1,
15
+ retainScore: 3600 * 1000
16
+ };
17
+ export const defaultTopicScoreParams = {
18
+ topicWeight: 0.5,
19
+ timeInMeshWeight: 1,
20
+ timeInMeshQuantum: 1,
21
+ timeInMeshCap: 3600,
22
+ firstMessageDeliveriesWeight: 1,
23
+ firstMessageDeliveriesDecay: 0.5,
24
+ firstMessageDeliveriesCap: 2000,
25
+ meshMessageDeliveriesWeight: -1,
26
+ meshMessageDeliveriesDecay: 0.5,
27
+ meshMessageDeliveriesCap: 100,
28
+ meshMessageDeliveriesThreshold: 20,
29
+ meshMessageDeliveriesWindow: 10,
30
+ meshMessageDeliveriesActivation: 5000,
31
+ meshFailurePenaltyWeight: -1,
32
+ meshFailurePenaltyDecay: 0.5,
33
+ invalidMessageDeliveriesWeight: -1,
34
+ invalidMessageDeliveriesDecay: 0.3
35
+ };
36
+ export function createPeerScoreParams(p = {}) {
37
+ return {
38
+ ...defaultPeerScoreParams,
39
+ ...p,
40
+ topics: (p.topics != null)
41
+ ? Object.entries(p.topics).reduce((topics, [topic, topicScoreParams]) => {
42
+ topics[topic] = createTopicScoreParams(topicScoreParams);
43
+ return topics;
44
+ }, {})
45
+ : {}
46
+ };
47
+ }
48
+ export function createTopicScoreParams(p = {}) {
49
+ return {
50
+ ...defaultTopicScoreParams,
51
+ ...p
52
+ };
53
+ }
54
+ // peer score parameter validation
55
+ export function validatePeerScoreParams(p) {
56
+ for (const [topic, params] of Object.entries(p.topics)) {
57
+ try {
58
+ validateTopicScoreParams(params);
59
+ }
60
+ catch (e) {
61
+ throw new InvalidPeerScoreParamsError(`invalid score parameters for topic ${topic}: ${e.message}`);
62
+ }
63
+ }
64
+ // check that the topic score is 0 or something positive
65
+ if (p.topicScoreCap < 0) {
66
+ throw new InvalidPeerScoreParamsError('invalid topic score cap; must be positive (or 0 for no cap)');
67
+ }
68
+ // check that we have an app specific score; the weight can be anything (but expected positive)
69
+ if (p.appSpecificScore === null || p.appSpecificScore === undefined) {
70
+ throw new InvalidPeerScoreParamsError('missing application specific score function');
71
+ }
72
+ // check the IP colocation factor
73
+ if (p.IPColocationFactorWeight > 0) {
74
+ throw new InvalidPeerScoreParamsError('invalid IPColocationFactorWeight; must be negative (or 0 to disable)');
75
+ }
76
+ if (p.IPColocationFactorWeight !== 0 && p.IPColocationFactorThreshold < 1) {
77
+ throw new InvalidPeerScoreParamsError('invalid IPColocationFactorThreshold; must be at least 1');
78
+ }
79
+ // check the behaviour penalty
80
+ if (p.behaviourPenaltyWeight > 0) {
81
+ throw new InvalidPeerScoreParamsError('invalid BehaviourPenaltyWeight; must be negative (or 0 to disable)');
82
+ }
83
+ if (p.behaviourPenaltyWeight !== 0 && (p.behaviourPenaltyDecay <= 0 || p.behaviourPenaltyDecay >= 1)) {
84
+ throw new InvalidPeerScoreParamsError('invalid BehaviourPenaltyDecay; must be between 0 and 1');
85
+ }
86
+ // check the decay parameters
87
+ if (p.decayInterval < 1000) {
88
+ throw new InvalidPeerScoreParamsError('invalid DecayInterval; must be at least 1s');
89
+ }
90
+ if (p.decayToZero <= 0 || p.decayToZero >= 1) {
91
+ throw new InvalidPeerScoreParamsError('invalid DecayToZero; must be between 0 and 1');
92
+ }
93
+ // no need to check the score retention; a value of 0 means that we don't retain scores
94
+ }
95
+ // eslint-disable-next-line complexity
96
+ export function validateTopicScoreParams(p) {
97
+ // make sure we have a sane topic weight
98
+ if (p.topicWeight < 0) {
99
+ throw new InvalidPeerScoreParamsError('invalid topic weight; must be >= 0');
100
+ }
101
+ // check P1
102
+ if (p.timeInMeshQuantum === 0) {
103
+ throw new InvalidPeerScoreParamsError('invalid TimeInMeshQuantum; must be non zero');
104
+ }
105
+ if (p.timeInMeshWeight < 0) {
106
+ throw new InvalidPeerScoreParamsError('invalid TimeInMeshWeight; must be positive (or 0 to disable)');
107
+ }
108
+ if (p.timeInMeshWeight !== 0 && p.timeInMeshQuantum <= 0) {
109
+ throw new InvalidPeerScoreParamsError('invalid TimeInMeshQuantum; must be positive');
110
+ }
111
+ if (p.timeInMeshWeight !== 0 && p.timeInMeshCap <= 0) {
112
+ throw new InvalidPeerScoreParamsError('invalid TimeInMeshCap; must be positive');
113
+ }
114
+ // check P2
115
+ if (p.firstMessageDeliveriesWeight < 0) {
116
+ throw new InvalidPeerScoreParamsError('invallid FirstMessageDeliveriesWeight; must be positive (or 0 to disable)');
117
+ }
118
+ if (p.firstMessageDeliveriesWeight !== 0 &&
119
+ (p.firstMessageDeliveriesDecay <= 0 || p.firstMessageDeliveriesDecay >= 1)) {
120
+ throw new InvalidPeerScoreParamsError('invalid FirstMessageDeliveriesDecay; must be between 0 and 1');
121
+ }
122
+ if (p.firstMessageDeliveriesWeight !== 0 && p.firstMessageDeliveriesCap <= 0) {
123
+ throw new InvalidPeerScoreParamsError('invalid FirstMessageDeliveriesCap; must be positive');
124
+ }
125
+ // check P3
126
+ if (p.meshMessageDeliveriesWeight > 0) {
127
+ throw new InvalidPeerScoreParamsError('invalid MeshMessageDeliveriesWeight; must be negative (or 0 to disable)');
128
+ }
129
+ if (p.meshMessageDeliveriesWeight !== 0 && (p.meshMessageDeliveriesDecay <= 0 || p.meshMessageDeliveriesDecay >= 1)) {
130
+ throw new InvalidPeerScoreParamsError('invalid MeshMessageDeliveriesDecay; must be between 0 and 1');
131
+ }
132
+ if (p.meshMessageDeliveriesWeight !== 0 && p.meshMessageDeliveriesCap <= 0) {
133
+ throw new InvalidPeerScoreParamsError('invalid MeshMessageDeliveriesCap; must be positive');
134
+ }
135
+ if (p.meshMessageDeliveriesWeight !== 0 && p.meshMessageDeliveriesThreshold <= 0) {
136
+ throw new InvalidPeerScoreParamsError('invalid MeshMessageDeliveriesThreshold; must be positive');
137
+ }
138
+ if (p.meshMessageDeliveriesWindow < 0) {
139
+ throw new InvalidPeerScoreParamsError('invalid MeshMessageDeliveriesWindow; must be non-negative');
140
+ }
141
+ if (p.meshMessageDeliveriesWeight !== 0 && p.meshMessageDeliveriesActivation < 1000) {
142
+ throw new InvalidPeerScoreParamsError('invalid MeshMessageDeliveriesActivation; must be at least 1s');
143
+ }
144
+ // check P3b
145
+ if (p.meshFailurePenaltyWeight > 0) {
146
+ throw new InvalidPeerScoreParamsError('invalid MeshFailurePenaltyWeight; must be negative (or 0 to disable)');
147
+ }
148
+ if (p.meshFailurePenaltyWeight !== 0 && (p.meshFailurePenaltyDecay <= 0 || p.meshFailurePenaltyDecay >= 1)) {
149
+ throw new InvalidPeerScoreParamsError('invalid MeshFailurePenaltyDecay; must be between 0 and 1');
150
+ }
151
+ // check P4
152
+ if (p.invalidMessageDeliveriesWeight > 0) {
153
+ throw new InvalidPeerScoreParamsError('invalid InvalidMessageDeliveriesWeight; must be negative (or 0 to disable)');
154
+ }
155
+ if (p.invalidMessageDeliveriesDecay <= 0 || p.invalidMessageDeliveriesDecay >= 1) {
156
+ throw new InvalidPeerScoreParamsError('invalid InvalidMessageDeliveriesDecay; must be between 0 and 1');
157
+ }
158
+ }
159
+ //# sourceMappingURL=peer-score-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-score-params.js","sourceRoot":"","sources":["../../../src/score/peer-score-params.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export interface PeerScoreThresholds {
2
+ /**
3
+ * gossipThreshold is the score threshold below which gossip propagation is supressed;
4
+ * should be negative.
5
+ */
6
+ gossipThreshold: number;
7
+ /**
8
+ * publishThreshold is the score threshold below which we shouldn't publish when using flood
9
+ * publishing (also applies to fanout and floodsub peers); should be negative and <= GossipThreshold.
10
+ */
11
+ publishThreshold: number;
12
+ /**
13
+ * graylistThreshold is the score threshold below which message processing is supressed altogether,
14
+ * implementing an effective graylist according to peer score; should be negative and <= PublisThreshold.
15
+ */
16
+ graylistThreshold: number;
17
+ /**
18
+ * acceptPXThreshold is the score threshold below which PX will be ignored; this should be positive
19
+ * and limited to scores attainable by bootstrappers and other trusted nodes.
20
+ */
21
+ acceptPXThreshold: number;
22
+ /**
23
+ * opportunisticGraftThreshold is the median mesh score threshold before triggering opportunistic
24
+ * grafting; this should have a small positive value.
25
+ */
26
+ opportunisticGraftThreshold: number;
27
+ }
28
+ export declare const defaultPeerScoreThresholds: PeerScoreThresholds;
29
+ export declare function createPeerScoreThresholds(p?: Partial<PeerScoreThresholds>): PeerScoreThresholds;
30
+ export declare function validatePeerScoreThresholds(p: PeerScoreThresholds): void;
31
+ //# sourceMappingURL=peer-score-thresholds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-score-thresholds.d.ts","sourceRoot":"","sources":["../../../src/score/peer-score-thresholds.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAA;IAEvB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAA;IAExB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,2BAA2B,EAAE,MAAM,CAAA;CACpC;AAED,eAAO,MAAM,0BAA0B,EAAE,mBAMxC,CAAA;AAED,wBAAgB,yBAAyB,CAAE,CAAC,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAAG,mBAAmB,CAKpG;AAED,wBAAgB,2BAA2B,CAAE,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAgBzE"}