@streamr/dht 100.0.0-testnet-two.0 → 100.0.0-testnet-two.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.
Files changed (189) hide show
  1. package/dist/package.json +66 -0
  2. package/dist/src/connection/ConnectionLockHandler.d.ts +11 -11
  3. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  4. package/dist/src/connection/ConnectionLockRpcLocal.d.ts +3 -3
  5. package/dist/src/connection/ConnectionManager.js +3 -3
  6. package/dist/src/connection/ConnectionManager.js.map +1 -1
  7. package/dist/src/connection/Handshaker.d.ts +1 -1
  8. package/dist/src/connection/Handshaker.js +14 -5
  9. package/dist/src/connection/Handshaker.js.map +1 -1
  10. package/dist/src/connection/ManagedConnection.d.ts +3 -3
  11. package/dist/src/connection/ManagedConnection.js +3 -3
  12. package/dist/src/connection/ManagedConnection.js.map +1 -1
  13. package/dist/src/connection/simulator/Simulator.js.map +1 -1
  14. package/dist/src/connection/simulator/SimulatorConnector.js.map +1 -1
  15. package/dist/src/connection/webrtc/WebrtcConnector.js +1 -1
  16. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  17. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +2 -2
  18. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +11 -3
  19. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
  20. package/dist/src/connection/websocket/WebsocketConnector.js +18 -8
  21. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
  22. package/dist/src/dht/DhtNode.d.ts +9 -8
  23. package/dist/src/dht/DhtNode.js +23 -18
  24. package/dist/src/dht/DhtNode.js.map +1 -1
  25. package/dist/src/dht/DhtNodeRpcLocal.d.ts +4 -3
  26. package/dist/src/dht/DhtNodeRpcLocal.js +3 -2
  27. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  28. package/dist/src/dht/DhtNodeRpcRemote.d.ts +6 -5
  29. package/dist/src/dht/DhtNodeRpcRemote.js +10 -11
  30. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
  31. package/dist/src/dht/ExternalApiRpcLocal.d.ts +3 -3
  32. package/dist/src/dht/ExternalApiRpcLocal.js +3 -2
  33. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
  34. package/dist/src/dht/ExternalApiRpcRemote.d.ts +3 -2
  35. package/dist/src/dht/ExternalApiRpcRemote.js +3 -2
  36. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  37. package/dist/src/dht/PeerManager.d.ts +9 -9
  38. package/dist/src/dht/PeerManager.js +12 -12
  39. package/dist/src/dht/PeerManager.js.map +1 -1
  40. package/dist/src/dht/contact/Contact.d.ts +2 -2
  41. package/dist/src/dht/contact/ContactList.d.ts +7 -7
  42. package/dist/src/dht/contact/ContactList.js.map +1 -1
  43. package/dist/src/dht/contact/RandomContactList.d.ts +4 -4
  44. package/dist/src/dht/contact/RandomContactList.js +2 -3
  45. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  46. package/dist/src/dht/contact/RpcRemote.d.ts +1 -4
  47. package/dist/src/dht/contact/RpcRemote.js +1 -5
  48. package/dist/src/dht/contact/RpcRemote.js.map +1 -1
  49. package/dist/src/dht/contact/SortedContactList.d.ts +13 -13
  50. package/dist/src/dht/contact/SortedContactList.js +5 -5
  51. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  52. package/dist/src/dht/discovery/DiscoverySession.d.ts +3 -2
  53. package/dist/src/dht/discovery/DiscoverySession.js +9 -12
  54. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  55. package/dist/src/dht/discovery/PeerDiscovery.d.ts +3 -1
  56. package/dist/src/dht/discovery/PeerDiscovery.js +16 -9
  57. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  58. package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +3 -3
  59. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +12 -11
  60. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +1 -1
  61. package/dist/src/dht/recursive-operation/RecursiveOperationSession.d.ts +2 -1
  62. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +6 -6
  63. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +1 -1
  64. package/dist/src/dht/routing/Router.d.ts +2 -2
  65. package/dist/src/dht/routing/Router.js +2 -2
  66. package/dist/src/dht/routing/Router.js.map +1 -1
  67. package/dist/src/dht/routing/RouterRpcLocal.js +3 -3
  68. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
  69. package/dist/src/dht/routing/RoutingSession.d.ts +3 -3
  70. package/dist/src/dht/routing/RoutingSession.js +4 -4
  71. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  72. package/dist/src/dht/store/LocalDataStore.d.ts +6 -8
  73. package/dist/src/dht/store/LocalDataStore.js +18 -24
  74. package/dist/src/dht/store/LocalDataStore.js.map +1 -1
  75. package/dist/src/dht/store/StoreManager.d.ts +3 -3
  76. package/dist/src/dht/store/StoreManager.js +20 -21
  77. package/dist/src/dht/store/StoreManager.js.map +1 -1
  78. package/dist/src/dht/store/StoreRpcLocal.d.ts +2 -1
  79. package/dist/src/dht/store/StoreRpcLocal.js +10 -8
  80. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  81. package/dist/src/exports.d.ts +2 -0
  82. package/dist/src/exports.js +6 -1
  83. package/dist/src/exports.js.map +1 -1
  84. package/dist/src/helpers/AddressTools.js +2 -0
  85. package/dist/src/helpers/AddressTools.js.map +1 -1
  86. package/dist/src/helpers/PeerID.d.ts +2 -2
  87. package/dist/src/helpers/PeerID.js +3 -3
  88. package/dist/src/helpers/PeerID.js.map +1 -1
  89. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +2 -2
  90. package/dist/src/helpers/peerIdFromPeerDescriptor.js +2 -1
  91. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  92. package/dist/src/helpers/versionCompatibility.d.ts +2 -0
  93. package/dist/src/helpers/versionCompatibility.js +18 -0
  94. package/dist/src/helpers/versionCompatibility.js.map +1 -0
  95. package/dist/src/identifiers.d.ts +6 -0
  96. package/dist/src/identifiers.js +23 -0
  97. package/dist/src/identifiers.js.map +1 -0
  98. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +13 -5
  99. package/dist/src/proto/packages/dht/protos/DhtRpc.js +9 -5
  100. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  101. package/package.json +5 -5
  102. package/protos/DhtRpc.proto +3 -1
  103. package/src/connection/ConnectionLockHandler.ts +15 -15
  104. package/src/connection/ConnectionLockRpcLocal.ts +3 -3
  105. package/src/connection/ConnectionManager.ts +4 -7
  106. package/src/connection/Handshaker.ts +21 -6
  107. package/src/connection/ManagedConnection.ts +10 -6
  108. package/src/connection/simulator/Simulator.ts +2 -2
  109. package/src/connection/simulator/SimulatorConnector.ts +2 -2
  110. package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -4
  111. package/src/connection/webrtc/WebrtcConnector.ts +2 -3
  112. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +11 -5
  113. package/src/connection/websocket/WebsocketConnector.ts +19 -11
  114. package/src/dht/DhtNode.ts +33 -31
  115. package/src/dht/DhtNodeRpcLocal.ts +4 -4
  116. package/src/dht/DhtNodeRpcRemote.ts +15 -17
  117. package/src/dht/ExternalApiRpcLocal.ts +15 -6
  118. package/src/dht/ExternalApiRpcRemote.ts +5 -4
  119. package/src/dht/PeerManager.ts +20 -20
  120. package/src/dht/contact/Contact.ts +2 -2
  121. package/src/dht/contact/ContactList.ts +7 -7
  122. package/src/dht/contact/RandomContactList.ts +6 -6
  123. package/src/dht/contact/RpcRemote.ts +0 -8
  124. package/src/dht/contact/SortedContactList.ts +22 -22
  125. package/src/dht/discovery/DiscoverySession.ts +16 -16
  126. package/src/dht/discovery/PeerDiscovery.ts +32 -11
  127. package/src/dht/recursive-operation/RecursiveOperationManager.ts +14 -14
  128. package/src/dht/recursive-operation/RecursiveOperationSession.ts +11 -11
  129. package/src/dht/routing/Router.ts +5 -5
  130. package/src/dht/routing/RouterRpcLocal.ts +3 -3
  131. package/src/dht/routing/RoutingSession.ts +6 -8
  132. package/src/dht/store/LocalDataStore.ts +25 -33
  133. package/src/dht/store/StoreManager.ts +25 -29
  134. package/src/dht/store/StoreRpcLocal.ts +11 -9
  135. package/src/exports.ts +2 -0
  136. package/src/helpers/AddressTools.ts +2 -0
  137. package/src/helpers/PeerID.ts +4 -4
  138. package/src/helpers/peerIdFromPeerDescriptor.ts +4 -4
  139. package/src/helpers/versionCompatibility.ts +13 -0
  140. package/src/identifiers.ts +20 -0
  141. package/src/proto/packages/dht/protos/DhtRpc.ts +18 -10
  142. package/test/RandomGraphSimulation.ts +3 -2
  143. package/test/benchmark/Find.test.ts +4 -3
  144. package/test/benchmark/KademliaCorrectness.test.ts +4 -4
  145. package/test/benchmark/SortedContactListBenchmark.test.ts +15 -14
  146. package/test/benchmark/kademlia-simulation/Contact.ts +7 -8
  147. package/test/benchmark/kademlia-simulation/KademliaSimulation.ts +2 -2
  148. package/test/benchmark/kademlia-simulation/SimulationNode.ts +10 -11
  149. package/test/data/generateGroundTruthData.ts +5 -4
  150. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +2 -2
  151. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +1 -1
  152. package/test/end-to-end/memory-leak.test.ts +3 -2
  153. package/test/integration/ConnectionManager.test.ts +3 -3
  154. package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -1
  155. package/test/integration/DhtNodeExternalAPI.test.ts +7 -7
  156. package/test/integration/DhtNodeRpcRemote.test.ts +3 -2
  157. package/test/integration/Find.test.ts +3 -3
  158. package/test/integration/Layer1-scale.test.ts +3 -3
  159. package/test/integration/Mock-Layer1-Layer0.test.ts +6 -5
  160. package/test/integration/ReplicateData.test.ts +25 -23
  161. package/test/integration/RouteMessage.test.ts +9 -10
  162. package/test/integration/RouterRpcRemote.test.ts +1 -1
  163. package/test/integration/ScaleDownDht.test.ts +4 -4
  164. package/test/integration/SimultaneousConnections.test.ts +7 -14
  165. package/test/integration/Store.test.ts +17 -7
  166. package/test/integration/StoreAndDelete.test.ts +11 -10
  167. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -6
  168. package/test/integration/StoreRpcRemote.test.ts +3 -5
  169. package/test/unit/AddressTools.test.ts +4 -0
  170. package/test/unit/LocalDataStore.test.ts +37 -29
  171. package/test/unit/PeerManager.test.ts +7 -8
  172. package/test/unit/RandomContactList.test.ts +3 -3
  173. package/test/unit/RecursiveOperationManager.test.ts +2 -1
  174. package/test/unit/RecursiveOperationSession.test.ts +2 -3
  175. package/test/unit/Router.test.ts +2 -2
  176. package/test/unit/RoutingSession.test.ts +2 -2
  177. package/test/unit/SortedContactList.test.ts +6 -6
  178. package/test/unit/StoreManager.test.ts +26 -23
  179. package/test/unit/versionCompatibility.test.ts +16 -0
  180. package/test/utils/customMatchers.ts +3 -2
  181. package/test/utils/mock/mockDataEntry.ts +8 -6
  182. package/test/utils/utils.ts +4 -4
  183. package/tsconfig.browser.json +2 -1
  184. package/tsconfig.jest.json +2 -1
  185. package/tsconfig.node.json +2 -1
  186. package/dist/src/helpers/nodeId.d.ts +0 -6
  187. package/dist/src/helpers/nodeId.js +0 -31
  188. package/dist/src/helpers/nodeId.js.map +0 -1
  189. package/src/helpers/nodeId.ts +0 -28
@@ -183,10 +183,6 @@ export interface PingResponse {
183
183
  * @generated from protobuf message dht.LeaveNotice
184
184
  */
185
185
  export interface LeaveNotice {
186
- /**
187
- * @generated from protobuf field: string serviceId = 1;
188
- */
189
- serviceId: string;
190
186
  }
191
187
  /**
192
188
  * @generated from protobuf message dht.PeerDescriptor
@@ -326,6 +322,10 @@ export interface HandshakeRequest {
326
322
  * @generated from protobuf field: optional dht.PeerDescriptor targetPeerDescriptor = 2;
327
323
  */
328
324
  targetPeerDescriptor?: PeerDescriptor;
325
+ /**
326
+ * @generated from protobuf field: string version = 3;
327
+ */
328
+ version: string;
329
329
  }
330
330
  /**
331
331
  * @generated from protobuf message dht.HandshakeResponse
@@ -339,6 +339,10 @@ export interface HandshakeResponse {
339
339
  * @generated from protobuf field: optional dht.HandshakeError error = 2;
340
340
  */
341
341
  error?: HandshakeError;
342
+ /**
343
+ * @generated from protobuf field: string version = 3;
344
+ */
345
+ version: string;
342
346
  }
343
347
  /**
344
348
  * @generated from protobuf message dht.Message
@@ -605,7 +609,11 @@ export declare enum HandshakeError {
605
609
  /**
606
610
  * @generated from protobuf enum value: INVALID_TARGET_PEER_DESCRIPTOR = 1;
607
611
  */
608
- INVALID_TARGET_PEER_DESCRIPTOR = 1
612
+ INVALID_TARGET_PEER_DESCRIPTOR = 1,
613
+ /**
614
+ * @generated from protobuf enum value: UNSUPPORTED_VERSION = 2;
615
+ */
616
+ UNSUPPORTED_VERSION = 2
609
617
  }
610
618
  /**
611
619
  * @generated from protobuf enum dht.MessageType
@@ -98,6 +98,10 @@ var HandshakeError;
98
98
  * @generated from protobuf enum value: INVALID_TARGET_PEER_DESCRIPTOR = 1;
99
99
  */
100
100
  HandshakeError[HandshakeError["INVALID_TARGET_PEER_DESCRIPTOR"] = 1] = "INVALID_TARGET_PEER_DESCRIPTOR";
101
+ /**
102
+ * @generated from protobuf enum value: UNSUPPORTED_VERSION = 2;
103
+ */
104
+ HandshakeError[HandshakeError["UNSUPPORTED_VERSION"] = 2] = "UNSUPPORTED_VERSION";
101
105
  })(HandshakeError || (exports.HandshakeError = HandshakeError = {}));
102
106
  // Wraps all messages
103
107
  /**
@@ -307,9 +311,7 @@ exports.PingResponse = new PingResponse$Type();
307
311
  // @generated message type with reflection information, may provide speed optimized methods
308
312
  class LeaveNotice$Type extends runtime_1.MessageType {
309
313
  constructor() {
310
- super("dht.LeaveNotice", [
311
- { no: 1, name: "serviceId", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
312
- ]);
314
+ super("dht.LeaveNotice", []);
313
315
  }
314
316
  }
315
317
  /**
@@ -411,7 +413,8 @@ class HandshakeRequest$Type extends runtime_1.MessageType {
411
413
  constructor() {
412
414
  super("dht.HandshakeRequest", [
413
415
  { no: 1, name: "sourcePeerDescriptor", kind: "message", T: () => exports.PeerDescriptor },
414
- { no: 2, name: "targetPeerDescriptor", kind: "message", T: () => exports.PeerDescriptor }
416
+ { no: 2, name: "targetPeerDescriptor", kind: "message", T: () => exports.PeerDescriptor },
417
+ { no: 3, name: "version", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
415
418
  ]);
416
419
  }
417
420
  }
@@ -424,7 +427,8 @@ class HandshakeResponse$Type extends runtime_1.MessageType {
424
427
  constructor() {
425
428
  super("dht.HandshakeResponse", [
426
429
  { no: 1, name: "sourcePeerDescriptor", kind: "message", T: () => exports.PeerDescriptor },
427
- { no: 2, name: "error", kind: "enum", opt: true, T: () => ["dht.HandshakeError", HandshakeError] }
430
+ { no: 2, name: "error", kind: "enum", opt: true, T: () => ["dht.HandshakeError", HandshakeError] },
431
+ { no: 3, name: "version", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
428
432
  ]);
429
433
  }
430
434
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DhtRpc.js","sourceRoot":"","sources":["../../../../../../src/proto/packages/dht/protos/DhtRpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DhtRpc.js","sourceRoot":"","sources":["../../../../../../src/proto/packages/dht/protos/DhtRpc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamr/dht",
3
- "version": "100.0.0-testnet-two.0",
3
+ "version": "100.0.0-testnet-two.2",
4
4
  "description": "Streamr Network DHT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,9 +31,9 @@
31
31
  "dependencies": {
32
32
  "@protobuf-ts/runtime": "^2.8.2",
33
33
  "@protobuf-ts/runtime-rpc": "^2.8.2",
34
- "@streamr/autocertifier-client": "100.0.0-testnet-two.0",
35
- "@streamr/proto-rpc": "100.0.0-testnet-two.0",
36
- "@streamr/utils": "100.0.0-testnet-two.0",
34
+ "@streamr/autocertifier-client": "100.0.0-testnet-two.2",
35
+ "@streamr/proto-rpc": "100.0.0-testnet-two.2",
36
+ "@streamr/utils": "100.0.0-testnet-two.2",
37
37
  "eventemitter3": "^5.0.0",
38
38
  "heap": "^0.2.6",
39
39
  "ipaddr.js": "^2.0.1",
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "devDependencies": {
47
47
  "@streamr/browser-test-runner": "^0.0.1",
48
- "@streamr/test-utils": "100.0.0-testnet-two.0",
48
+ "@streamr/test-utils": "100.0.0-testnet-two.2",
49
49
  "@types/express": "^4.17.21",
50
50
  "@types/heap": "^0.2.34",
51
51
  "@types/k-bucket": "^5.0.1",
@@ -128,7 +128,6 @@ message PingResponse {
128
128
  }
129
129
 
130
130
  message LeaveNotice {
131
- string serviceId = 1;
132
131
  }
133
132
 
134
133
  message PeerDescriptor {
@@ -198,16 +197,19 @@ message ConnectivityResponse {
198
197
  message HandshakeRequest {
199
198
  PeerDescriptor sourcePeerDescriptor = 1;
200
199
  optional PeerDescriptor targetPeerDescriptor = 2;
200
+ string version = 3;
201
201
  }
202
202
 
203
203
  message HandshakeResponse {
204
204
  PeerDescriptor sourcePeerDescriptor = 1;
205
205
  optional HandshakeError error = 2;
206
+ string version = 3;
206
207
  }
207
208
 
208
209
  enum HandshakeError {
209
210
  DUPLICATE_CONNECTION = 0;
210
211
  INVALID_TARGET_PEER_DESCRIPTOR = 1;
212
+ UNSUPPORTED_VERSION = 2;
211
213
  }
212
214
 
213
215
  // Wraps all messages
@@ -1,17 +1,17 @@
1
1
  // Connection locks are independent of the existence of connections
2
2
  // that is why this class is needed
3
3
 
4
- import { NodeID } from '../helpers/nodeId'
4
+ import { DhtAddress } from '../identifiers'
5
5
 
6
6
  export type LockID = string
7
7
 
8
8
  export class ConnectionLockHandler {
9
9
 
10
- private localLocks: Map<NodeID, Set<LockID>> = new Map()
11
- private remoteLocks: Map<NodeID, Set<LockID>> = new Map()
10
+ private localLocks: Map<DhtAddress, Set<LockID>> = new Map()
11
+ private remoteLocks: Map<DhtAddress, Set<LockID>> = new Map()
12
12
  // TODO: remove weakLocks use localLocks instead. When opening weakLocks from the ConnectioManager,
13
13
  // simply do not send lock requests.
14
- private weakLocks: Set<NodeID> = new Set()
14
+ private weakLocks: Set<DhtAddress> = new Set()
15
15
 
16
16
  public getNumberOfLocalLockedConnections(): number {
17
17
  return this.localLocks.size
@@ -25,7 +25,7 @@ export class ConnectionLockHandler {
25
25
  return this.weakLocks.size
26
26
  }
27
27
 
28
- public isLocalLocked(id: NodeID, lockId?: LockID): boolean {
28
+ public isLocalLocked(id: DhtAddress, lockId?: LockID): boolean {
29
29
  if (lockId === undefined) {
30
30
  return this.localLocks.has(id)
31
31
  } else {
@@ -33,7 +33,7 @@ export class ConnectionLockHandler {
33
33
  }
34
34
  }
35
35
 
36
- public isRemoteLocked(id: NodeID, lockId?: LockID): boolean {
36
+ public isRemoteLocked(id: DhtAddress, lockId?: LockID): boolean {
37
37
  if (lockId === undefined) {
38
38
  return this.remoteLocks.has(id)
39
39
  } else {
@@ -45,33 +45,33 @@ export class ConnectionLockHandler {
45
45
  }
46
46
  }
47
47
 
48
- private isWeakLocked(id: NodeID): boolean {
48
+ private isWeakLocked(id: DhtAddress): boolean {
49
49
  return this.weakLocks.has(id)
50
50
  }
51
51
 
52
- public isLocked(id: NodeID): boolean {
52
+ public isLocked(id: DhtAddress): boolean {
53
53
  return (this.isLocalLocked(id) || this.isRemoteLocked(id) || this.isWeakLocked(id))
54
54
  }
55
55
 
56
- public addLocalLocked(id: NodeID, lockId: LockID): void {
56
+ public addLocalLocked(id: DhtAddress, lockId: LockID): void {
57
57
  if (!this.localLocks.has(id)) {
58
58
  this.localLocks.set(id, new Set())
59
59
  }
60
60
  this.localLocks.get(id)!.add(lockId)
61
61
  }
62
62
 
63
- public addRemoteLocked(id: NodeID, lockId: LockID): void {
63
+ public addRemoteLocked(id: DhtAddress, lockId: LockID): void {
64
64
  if (!this.remoteLocks.has(id)) {
65
65
  this.remoteLocks.set(id, new Set())
66
66
  }
67
67
  this.remoteLocks.get(id)!.add(lockId)
68
68
  }
69
69
 
70
- public addWeakLocked(id: NodeID): void {
70
+ public addWeakLocked(id: DhtAddress): void {
71
71
  this.weakLocks.add(id)
72
72
  }
73
73
 
74
- public removeLocalLocked(id: NodeID, lockId: LockID): void {
74
+ public removeLocalLocked(id: DhtAddress, lockId: LockID): void {
75
75
  if (this.localLocks.has(id)) {
76
76
  this.localLocks.get(id)?.delete(lockId)
77
77
  if (this.localLocks.get(id)?.size === 0) {
@@ -80,7 +80,7 @@ export class ConnectionLockHandler {
80
80
  }
81
81
  }
82
82
 
83
- public removeRemoteLocked(id: NodeID, lockId: LockID): void {
83
+ public removeRemoteLocked(id: DhtAddress, lockId: LockID): void {
84
84
  if (this.remoteLocks.has(id)) {
85
85
  this.remoteLocks.get(id)?.delete(lockId)
86
86
  if (this.remoteLocks.get(id)?.size === 0) {
@@ -89,11 +89,11 @@ export class ConnectionLockHandler {
89
89
  }
90
90
  }
91
91
 
92
- public removeWeakLocked(id: NodeID): void {
92
+ public removeWeakLocked(id: DhtAddress): void {
93
93
  this.weakLocks.delete(id)
94
94
  }
95
95
 
96
- public clearAllLocks(id: NodeID): void {
96
+ public clearAllLocks(id: DhtAddress): void {
97
97
  this.localLocks.delete(id)
98
98
  this.remoteLocks.delete(id)
99
99
  this.weakLocks.delete(id)
@@ -17,11 +17,11 @@ import { IConnectionLockRpc } from '../proto/packages/dht/protos/DhtRpc.server'
17
17
  import { DhtCallContext } from '../rpc-protocol/DhtCallContext'
18
18
  import { getNodeIdOrUnknownFromPeerDescriptor } from './ConnectionManager'
19
19
  import { LockID } from './ConnectionLockHandler'
20
- import { NodeID } from '../helpers/nodeId'
20
+ import { DhtAddress } from '../identifiers'
21
21
 
22
22
  interface ConnectionLockRpcLocalConfig {
23
- addRemoteLocked: (id: NodeID, lockId: LockID) => void
24
- removeRemoteLocked: (id: NodeID, lockId: LockID) => void
23
+ addRemoteLocked: (id: DhtAddress, lockId: LockID) => void
24
+ removeRemoteLocked: (id: DhtAddress, lockId: LockID) => void
25
25
  closeConnection: (peerDescriptor: PeerDescriptor, gracefulLeave: boolean, reason?: string) => void
26
26
  getLocalPeerDescriptor: () => PeerDescriptor
27
27
  }
@@ -31,7 +31,7 @@ import { ConnectionLockRpcRemote } from './ConnectionLockRpcRemote'
31
31
  import { WEBRTC_CLEANUP } from './webrtc/NodeWebrtcConnection'
32
32
  import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
33
33
  import { ConnectionLockRpcLocal } from './ConnectionLockRpcLocal'
34
- import { NodeID } from '../helpers/nodeId'
34
+ import { DhtAddress } from '../identifiers'
35
35
 
36
36
  export interface ConnectionManagerConfig {
37
37
  maxConnections?: number
@@ -106,7 +106,7 @@ export class ConnectionManager extends EventEmitter<TransportEvents> implements
106
106
  private readonly duplicateMessageDetector: DuplicateDetector = new DuplicateDetector(100000, 100)
107
107
  private readonly metrics: ConnectionManagerMetrics
108
108
  private locks = new ConnectionLockHandler()
109
- private connections: Map<NodeID, ManagedConnection> = new Map()
109
+ private connections: Map<DhtAddress, ManagedConnection> = new Map()
110
110
  private readonly connectorFacade: ConnectorFacade
111
111
  private rpcCommunicator?: RoutingRpcCommunicator
112
112
  private disconnectorIntervalRef?: NodeJS.Timeout
@@ -134,8 +134,8 @@ export class ConnectionManager extends EventEmitter<TransportEvents> implements
134
134
  rpcRequestTimeout: 10000 // TODO use config option or named constant?
135
135
  })
136
136
  const lockRpcLocal = new ConnectionLockRpcLocal({
137
- addRemoteLocked: (id: NodeID, lockId: LockID) => this.locks.addRemoteLocked(id, lockId),
138
- removeRemoteLocked: (id: NodeID, lockId: LockID) => this.locks.removeRemoteLocked(id, lockId),
137
+ addRemoteLocked: (id: DhtAddress, lockId: LockID) => this.locks.addRemoteLocked(id, lockId),
138
+ removeRemoteLocked: (id: DhtAddress, lockId: LockID) => this.locks.removeRemoteLocked(id, lockId),
139
139
  closeConnection: (peerDescriptor: PeerDescriptor, gracefulLeave: boolean, reason?: string) => {
140
140
  // TODO should we have some handling for this floating promise?
141
141
  this.closeConnection(peerDescriptor, gracefulLeave, reason)
@@ -462,7 +462,6 @@ export class ConnectionManager extends EventEmitter<TransportEvents> implements
462
462
  const rpcRemote = new ConnectionLockRpcRemote(
463
463
  this.getLocalPeerDescriptor(),
464
464
  targetDescriptor,
465
- 'DUMMY',
466
465
  this.rpcCommunicator!,
467
466
  ConnectionLockRpcClient
468
467
  )
@@ -481,7 +480,6 @@ export class ConnectionManager extends EventEmitter<TransportEvents> implements
481
480
  const rpcRemote = new ConnectionLockRpcRemote(
482
481
  this.getLocalPeerDescriptor(),
483
482
  targetDescriptor,
484
- 'DUMMY',
485
483
  this.rpcCommunicator!,
486
484
  ConnectionLockRpcClient
487
485
  )
@@ -547,7 +545,6 @@ export class ConnectionManager extends EventEmitter<TransportEvents> implements
547
545
  const rpcRemote = new ConnectionLockRpcRemote(
548
546
  this.getLocalPeerDescriptor(),
549
547
  targetDescriptor,
550
- 'DUMMY',
551
548
  this.rpcCommunicator!,
552
549
  ConnectionLockRpcClient
553
550
  )
@@ -3,11 +3,16 @@ import { EventEmitter } from 'eventemitter3'
3
3
  import { v4 } from 'uuid'
4
4
  import { Message, HandshakeRequest, HandshakeResponse, MessageType, PeerDescriptor, HandshakeError } from '../proto/packages/dht/protos/DhtRpc'
5
5
  import { IConnection } from './IConnection'
6
+ import { version } from '../../package.json'
7
+ import { isCompatibleVersion } from '../helpers/versionCompatibility'
8
+
9
+ // Used for backwards compatibility with older versions of the protocol that do not send version in handshakes
10
+ const BEFORE_TESTNET_TWO_VERSION = '100.0.0-before-testnet-two.0'
6
11
 
7
12
  const logger = new Logger(module)
8
13
 
9
14
  interface HandshakerEvents {
10
- handshakeRequest: (source: PeerDescriptor, target?: PeerDescriptor) => void
15
+ handshakeRequest: (source: PeerDescriptor, version: string, target?: PeerDescriptor) => void
11
16
  handshakeCompleted: (remote: PeerDescriptor) => void
12
17
  handshakeFailed: (error?: HandshakeError) => void
13
18
  }
@@ -34,13 +39,21 @@ export class Handshaker extends EventEmitter<HandshakerEvents> {
34
39
  if (message.body.oneofKind === 'handshakeRequest') {
35
40
  logger.trace('handshake request received')
36
41
  const handshake = message.body.handshakeRequest
37
- this.emit('handshakeRequest', handshake.sourcePeerDescriptor!, handshake.targetPeerDescriptor)
42
+ this.emit(
43
+ 'handshakeRequest',
44
+ handshake.sourcePeerDescriptor!,
45
+ handshake.version ?? BEFORE_TESTNET_TWO_VERSION,
46
+ handshake.targetPeerDescriptor
47
+ )
38
48
  }
39
49
  if (message.body.oneofKind === 'handshakeResponse') {
40
50
  logger.trace('handshake response received')
41
51
  const handshake = message.body.handshakeResponse
42
- if (handshake.error !== undefined) {
43
- this.emit('handshakeFailed', handshake.error)
52
+ const sourceVersion = handshake.version ?? BEFORE_TESTNET_TWO_VERSION
53
+ const error = !isCompatibleVersion(sourceVersion, version) ? HandshakeError.UNSUPPORTED_VERSION : undefined
54
+ ?? handshake.error
55
+ if (error !== undefined) {
56
+ this.emit('handshakeFailed', error)
44
57
  } else {
45
58
  this.emit('handshakeCompleted', handshake.sourcePeerDescriptor!)
46
59
  }
@@ -54,7 +67,8 @@ export class Handshaker extends EventEmitter<HandshakerEvents> {
54
67
  public sendHandshakeRequest(remotePeerDescriptor?: PeerDescriptor): void {
55
68
  const outgoingHandshake: HandshakeRequest = {
56
69
  sourcePeerDescriptor: this.localPeerDescriptor,
57
- targetPeerDescriptor: remotePeerDescriptor
70
+ targetPeerDescriptor: remotePeerDescriptor,
71
+ version
58
72
  }
59
73
  const msg: Message = {
60
74
  serviceId: Handshaker.HANDSHAKER_SERVICE_ID,
@@ -72,7 +86,8 @@ export class Handshaker extends EventEmitter<HandshakerEvents> {
72
86
  public sendHandshakeResponse(error?: HandshakeError): void {
73
87
  const outgoingHandshakeResponse: HandshakeResponse = {
74
88
  sourcePeerDescriptor: this.localPeerDescriptor,
75
- error
89
+ error,
90
+ version
76
91
  }
77
92
  const msg: Message = {
78
93
  serviceId: Handshaker.HANDSHAKER_SERVICE_ID,
@@ -6,11 +6,11 @@ import { Logger, runAndRaceEvents3, RunAndRaceEventsReturnType } from '@streamr/
6
6
  import EventEmitter from 'eventemitter3'
7
7
  import { getNodeIdFromPeerDescriptor } from '../helpers/peerIdFromPeerDescriptor'
8
8
  import { getNodeIdOrUnknownFromPeerDescriptor } from './ConnectionManager'
9
- import { NodeID } from '../helpers/nodeId'
9
+ import { DhtAddress } from '../identifiers'
10
10
 
11
11
  export interface ManagedConnectionEvents {
12
12
  managedData: (bytes: Uint8Array, remotePeerDescriptor: PeerDescriptor) => void
13
- handshakeRequest: (source: PeerDescriptor, target?: PeerDescriptor) => void
13
+ handshakeRequest: (source: PeerDescriptor, version: string, target?: PeerDescriptor) => void
14
14
  handshakeCompleted: (peerDescriptor: PeerDescriptor) => void
15
15
  handshakeFailed: () => void
16
16
  }
@@ -73,7 +73,7 @@ export class ManagedConnection extends EventEmitter<Events> {
73
73
  this.handshaker = new Handshaker(this.localPeerDescriptor, outgoingConnection)
74
74
 
75
75
  this.handshaker.once('handshakeFailed', (error) => {
76
- if (error === HandshakeError.INVALID_TARGET_PEER_DESCRIPTOR) {
76
+ if (error === HandshakeError.INVALID_TARGET_PEER_DESCRIPTOR || error === HandshakeError.UNSUPPORTED_VERSION) {
77
77
  // TODO should we have some handling for this floating promise?
78
78
  this.close(false)
79
79
  } else {
@@ -99,9 +99,13 @@ export class ManagedConnection extends EventEmitter<Events> {
99
99
  } else {
100
100
  if (incomingConnection) {
101
101
  this.handshaker = new Handshaker(this.localPeerDescriptor, incomingConnection)
102
- this.handshaker.on('handshakeRequest', (sourcePeerDescriptor: PeerDescriptor, targetPeerDescriptor?: PeerDescriptor) => {
102
+ this.handshaker.on('handshakeRequest', (
103
+ sourcePeerDescriptor: PeerDescriptor,
104
+ version: string,
105
+ targetPeerDescriptor?: PeerDescriptor
106
+ ) => {
103
107
  this.setRemotePeerDescriptor(sourcePeerDescriptor)
104
- this.emit('handshakeRequest', sourcePeerDescriptor, targetPeerDescriptor)
108
+ this.emit('handshakeRequest', sourcePeerDescriptor, version, targetPeerDescriptor)
105
109
  })
106
110
 
107
111
  incomingConnection.on('disconnected', this.onDisconnected)
@@ -152,7 +156,7 @@ export class ManagedConnection extends EventEmitter<Events> {
152
156
  return this
153
157
  }
154
158
 
155
- public getNodeId(): NodeID {
159
+ public getNodeId(): DhtAddress {
156
160
  return getNodeIdFromPeerDescriptor(this.remotePeerDescriptor!)
157
161
  }
158
162
 
@@ -10,7 +10,7 @@ import { getRegionDelayMatrix } from './pings'
10
10
  import { getNodeIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
11
11
  import Heap from 'heap'
12
12
  import { debugVars } from '../../helpers/debugHelpers'
13
- import { NodeID } from '../../helpers/nodeId'
13
+ import { DhtAddress } from '../../identifiers'
14
14
 
15
15
  const logger = new Logger(module)
16
16
 
@@ -92,7 +92,7 @@ class CloseOperation extends SimulatorOperation {
92
92
 
93
93
  export class Simulator extends EventEmitter<ConnectionSourceEvents> {
94
94
  private stopped = false
95
- private connectors: Map<NodeID, SimulatorConnector> = new Map()
95
+ private connectors: Map<DhtAddress, SimulatorConnector> = new Map()
96
96
  private latencyTable?: Array<Array<number>>
97
97
  private associations: Map<ConnectionID, Association> = new Map()
98
98
 
@@ -9,13 +9,13 @@ import { ManagedConnection } from '../ManagedConnection'
9
9
  import { Simulator } from './Simulator'
10
10
  import { SimulatorConnection } from './SimulatorConnection'
11
11
  import { getNodeIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
12
- import { NodeID } from '../../helpers/nodeId'
12
+ import { DhtAddress } from '../../identifiers'
13
13
 
14
14
  const logger = new Logger(module)
15
15
 
16
16
  export class SimulatorConnector {
17
17
 
18
- private connectingConnections: Map<NodeID, ManagedConnection> = new Map()
18
+ private connectingConnections: Map<DhtAddress, ManagedConnection> = new Map()
19
19
  private stopped = false
20
20
  private localPeerDescriptor: PeerDescriptor
21
21
  private simulator: Simulator
@@ -194,10 +194,6 @@ export class NodeWebrtcConnection extends EventEmitter<Events> implements IWebrt
194
194
  logger.warn(`dc.onError: ${err}`)
195
195
  }
196
196
 
197
- dataChannel.onbufferedamountlow = () => {
198
- //this.emitLowBackpressure()
199
- }
200
-
201
197
  dataChannel.onmessage = (msg) => {
202
198
  logger.trace('dc.onmessage')
203
199
  this.emit('data', new Uint8Array(msg.data))
@@ -21,7 +21,7 @@ import {
21
21
  import { PortRange } from '../ConnectionManager'
22
22
  import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
23
23
  import { WebrtcConnectorRpcLocal } from './WebrtcConnectorRpcLocal'
24
- import { NodeID } from '../../helpers/nodeId'
24
+ import { DhtAddress } from '../../identifiers'
25
25
 
26
26
  const logger = new Logger(module)
27
27
 
@@ -58,7 +58,7 @@ export class WebrtcConnector {
58
58
 
59
59
  private static readonly WEBRTC_CONNECTOR_SERVICE_ID = 'system/webrtc-connector'
60
60
  private readonly rpcCommunicator: ListeningRpcCommunicator
61
- private readonly ongoingConnectAttempts: Map<NodeID, ManagedWebrtcConnection> = new Map()
61
+ private readonly ongoingConnectAttempts: Map<DhtAddress, ManagedWebrtcConnection> = new Map()
62
62
  private localPeerDescriptor?: PeerDescriptor
63
63
  private stopped = false
64
64
  private config: WebrtcConnectorConfig
@@ -170,7 +170,6 @@ export class WebrtcConnector {
170
170
  const remoteConnector = new WebrtcConnectorRpcRemote(
171
171
  this.localPeerDescriptor!,
172
172
  targetPeerDescriptor,
173
- 'DUMMY',
174
173
  this.rpcCommunicator,
175
174
  WebrtcConnectorRpcClient
176
175
  )
@@ -4,6 +4,7 @@ import { getAddressFromIceCandidate, isPrivateIPv4 } from '../../helpers/Address
4
4
  import { getNodeIdFromPeerDescriptor } from '../../helpers/peerIdFromPeerDescriptor'
5
5
  import { Empty } from '../../proto/google/protobuf/empty'
6
6
  import {
7
+ HandshakeError,
7
8
  IceCandidate,
8
9
  PeerDescriptor,
9
10
  RtcAnswer,
@@ -17,7 +18,9 @@ import { ManagedConnection } from '../ManagedConnection'
17
18
  import { ManagedWebrtcConnection } from '../ManagedWebrtcConnection'
18
19
  import { NodeWebrtcConnection } from './NodeWebrtcConnection'
19
20
  import { WebrtcConnectorRpcRemote } from './WebrtcConnectorRpcRemote'
20
- import { NodeID } from '../../helpers/nodeId'
21
+ import { DhtAddress } from '../../identifiers'
22
+ import { version } from '../../../package.json'
23
+ import { isCompatibleVersion } from '../../helpers/versionCompatibility'
21
24
 
22
25
  const logger = new Logger(module)
23
26
 
@@ -25,7 +28,7 @@ interface WebrtcConnectorRpcLocalConfig {
25
28
  connect: (targetPeerDescriptor: PeerDescriptor) => ManagedConnection
26
29
  onNewConnection: (connection: ManagedConnection) => boolean
27
30
  // TODO pass accessor methods instead of passing a mutable entity
28
- ongoingConnectAttempts: Map<NodeID, ManagedWebrtcConnection>
31
+ ongoingConnectAttempts: Map<DhtAddress, ManagedWebrtcConnection>
29
32
  rpcCommunicator: ListeningRpcCommunicator
30
33
  getLocalPeerDescriptor: () => PeerDescriptor
31
34
  allowPrivateAddresses: boolean
@@ -65,7 +68,6 @@ export class WebrtcConnectorRpcLocal implements IWebrtcConnectorRpc {
65
68
  const remoteConnector = new WebrtcConnectorRpcRemote(
66
69
  this.config.getLocalPeerDescriptor(),
67
70
  remotePeer,
68
- 'DUMMY',
69
71
  this.config.rpcCommunicator,
70
72
  WebrtcConnectorRpcClient
71
73
  )
@@ -82,11 +84,15 @@ export class WebrtcConnectorRpcLocal implements IWebrtcConnectorRpc {
82
84
  connection!.setConnectionId(request.connectionId)
83
85
  connection!.setRemoteDescription(request.description, 'offer')
84
86
 
85
- managedConnection.on('handshakeRequest', () => {
87
+ managedConnection.on('handshakeRequest', (_sourceDescriptor: PeerDescriptor, sourceVersion: string) => {
86
88
  if (this.config.ongoingConnectAttempts.has(nodeId)) {
87
89
  this.config.ongoingConnectAttempts.delete(nodeId)
88
90
  }
89
- managedConnection!.acceptHandshake()
91
+ if (!isCompatibleVersion(sourceVersion, version)) {
92
+ managedConnection!.rejectHandshake(HandshakeError.UNSUPPORTED_VERSION)
93
+ } else {
94
+ managedConnection!.acceptHandshake()
95
+ }
90
96
  })
91
97
  return {}
92
98
  }