@optimystic/db-p2p 0.2.3 → 0.7.0

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 (139) hide show
  1. package/dist/src/cluster/block-transfer-service.d.ts +66 -0
  2. package/dist/src/cluster/block-transfer-service.d.ts.map +1 -0
  3. package/dist/src/cluster/block-transfer-service.js +166 -0
  4. package/dist/src/cluster/block-transfer-service.js.map +1 -0
  5. package/dist/src/cluster/block-transfer.d.ts +65 -0
  6. package/dist/src/cluster/block-transfer.d.ts.map +1 -0
  7. package/dist/src/cluster/block-transfer.js +208 -0
  8. package/dist/src/cluster/block-transfer.js.map +1 -0
  9. package/dist/src/cluster/cluster-repo.d.ts +23 -4
  10. package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
  11. package/dist/src/cluster/cluster-repo.js +119 -39
  12. package/dist/src/cluster/cluster-repo.js.map +1 -1
  13. package/dist/src/cluster/rebalance-monitor.d.ts +64 -0
  14. package/dist/src/cluster/rebalance-monitor.d.ts.map +1 -0
  15. package/dist/src/cluster/rebalance-monitor.js +157 -0
  16. package/dist/src/cluster/rebalance-monitor.js.map +1 -0
  17. package/dist/src/cluster/service.js +1 -1
  18. package/dist/src/cluster/service.js.map +1 -1
  19. package/dist/src/dispute/arbitrator-selection.d.ts +10 -0
  20. package/dist/src/dispute/arbitrator-selection.d.ts.map +1 -0
  21. package/dist/src/dispute/arbitrator-selection.js +22 -0
  22. package/dist/src/dispute/arbitrator-selection.js.map +1 -0
  23. package/dist/src/dispute/client.d.ts +17 -0
  24. package/dist/src/dispute/client.d.ts.map +1 -0
  25. package/dist/src/dispute/client.js +28 -0
  26. package/dist/src/dispute/client.js.map +1 -0
  27. package/dist/src/dispute/dispute-service.d.ts +83 -0
  28. package/dist/src/dispute/dispute-service.d.ts.map +1 -0
  29. package/dist/src/dispute/dispute-service.js +368 -0
  30. package/dist/src/dispute/dispute-service.js.map +1 -0
  31. package/dist/src/dispute/engine-health-monitor.d.ts +22 -0
  32. package/dist/src/dispute/engine-health-monitor.d.ts.map +1 -0
  33. package/dist/src/dispute/engine-health-monitor.js +75 -0
  34. package/dist/src/dispute/engine-health-monitor.js.map +1 -0
  35. package/dist/src/dispute/index.d.ts +7 -0
  36. package/dist/src/dispute/index.d.ts.map +1 -0
  37. package/dist/src/dispute/index.js +7 -0
  38. package/dist/src/dispute/index.js.map +1 -0
  39. package/dist/src/dispute/service.d.ts +41 -0
  40. package/dist/src/dispute/service.d.ts.map +1 -0
  41. package/dist/src/dispute/service.js +82 -0
  42. package/dist/src/dispute/service.js.map +1 -0
  43. package/dist/src/dispute/types.d.ts +106 -0
  44. package/dist/src/dispute/types.d.ts.map +1 -0
  45. package/dist/src/dispute/types.js +7 -0
  46. package/dist/src/dispute/types.js.map +1 -0
  47. package/dist/src/index.d.ts +5 -0
  48. package/dist/src/index.d.ts.map +1 -1
  49. package/dist/src/index.js +5 -0
  50. package/dist/src/index.js.map +1 -1
  51. package/dist/src/libp2p-key-network.d.ts +23 -2
  52. package/dist/src/libp2p-key-network.d.ts.map +1 -1
  53. package/dist/src/libp2p-key-network.js +100 -15
  54. package/dist/src/libp2p-key-network.js.map +1 -1
  55. package/dist/src/libp2p-node-base.d.ts +6 -0
  56. package/dist/src/libp2p-node-base.d.ts.map +1 -1
  57. package/dist/src/libp2p-node-base.js +67 -13
  58. package/dist/src/libp2p-node-base.js.map +1 -1
  59. package/dist/src/logger.d.ts +1 -0
  60. package/dist/src/logger.d.ts.map +1 -1
  61. package/dist/src/logger.js +2 -0
  62. package/dist/src/logger.js.map +1 -1
  63. package/dist/src/network/network-manager-service.d.ts +15 -4
  64. package/dist/src/network/network-manager-service.d.ts.map +1 -1
  65. package/dist/src/network/network-manager-service.js +33 -20
  66. package/dist/src/network/network-manager-service.js.map +1 -1
  67. package/dist/src/protocol-client.d.ts +1 -0
  68. package/dist/src/protocol-client.d.ts.map +1 -1
  69. package/dist/src/protocol-client.js +23 -2
  70. package/dist/src/protocol-client.js.map +1 -1
  71. package/dist/src/repo/client.d.ts +1 -0
  72. package/dist/src/repo/client.d.ts.map +1 -1
  73. package/dist/src/repo/client.js +18 -1
  74. package/dist/src/repo/client.js.map +1 -1
  75. package/dist/src/repo/cluster-coordinator.d.ts +3 -1
  76. package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
  77. package/dist/src/repo/cluster-coordinator.js +42 -2
  78. package/dist/src/repo/cluster-coordinator.js.map +1 -1
  79. package/dist/src/repo/coordinator-repo.d.ts +20 -4
  80. package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
  81. package/dist/src/repo/coordinator-repo.js +67 -11
  82. package/dist/src/repo/coordinator-repo.js.map +1 -1
  83. package/dist/src/repo/service.d.ts +18 -2
  84. package/dist/src/repo/service.d.ts.map +1 -1
  85. package/dist/src/repo/service.js +88 -91
  86. package/dist/src/repo/service.js.map +1 -1
  87. package/dist/src/reputation/index.d.ts +3 -0
  88. package/dist/src/reputation/index.d.ts.map +1 -0
  89. package/dist/src/reputation/index.js +3 -0
  90. package/dist/src/reputation/index.js.map +1 -0
  91. package/dist/src/reputation/peer-reputation.d.ts +23 -0
  92. package/dist/src/reputation/peer-reputation.d.ts.map +1 -0
  93. package/dist/src/reputation/peer-reputation.js +121 -0
  94. package/dist/src/reputation/peer-reputation.js.map +1 -0
  95. package/dist/src/reputation/types.d.ts +89 -0
  96. package/dist/src/reputation/types.d.ts.map +1 -0
  97. package/dist/src/reputation/types.js +42 -0
  98. package/dist/src/reputation/types.js.map +1 -0
  99. package/dist/src/storage/arachnode-fret-adapter.d.ts +5 -0
  100. package/dist/src/storage/arachnode-fret-adapter.d.ts.map +1 -1
  101. package/dist/src/storage/arachnode-fret-adapter.js +10 -0
  102. package/dist/src/storage/arachnode-fret-adapter.js.map +1 -1
  103. package/dist/src/storage/block-storage.d.ts.map +1 -1
  104. package/dist/src/storage/block-storage.js +5 -0
  105. package/dist/src/storage/block-storage.js.map +1 -1
  106. package/dist/src/storage/storage-repo.d.ts.map +1 -1
  107. package/dist/src/storage/storage-repo.js +8 -0
  108. package/dist/src/storage/storage-repo.js.map +1 -1
  109. package/package.json +11 -10
  110. package/src/cluster/block-transfer-service.ts +231 -0
  111. package/src/cluster/block-transfer.ts +265 -0
  112. package/src/cluster/cluster-repo.ts +148 -42
  113. package/src/cluster/rebalance-monitor.ts +223 -0
  114. package/src/dispute/arbitrator-selection.ts +28 -0
  115. package/src/dispute/client.ts +41 -0
  116. package/src/dispute/dispute-service.ts +456 -0
  117. package/src/dispute/engine-health-monitor.ts +86 -0
  118. package/src/dispute/index.ts +17 -0
  119. package/src/dispute/service.ts +119 -0
  120. package/src/dispute/types.ts +114 -0
  121. package/src/index.ts +5 -0
  122. package/src/libp2p-key-network.ts +120 -22
  123. package/src/libp2p-node-base.ts +78 -14
  124. package/src/logger.ts +2 -1
  125. package/src/network/network-manager-service.ts +47 -16
  126. package/src/protocol-client.ts +29 -7
  127. package/src/repo/client.ts +20 -6
  128. package/src/repo/cluster-coordinator.ts +43 -2
  129. package/src/repo/coordinator-repo.ts +77 -14
  130. package/src/repo/redirect.ts +0 -2
  131. package/src/repo/service.ts +95 -87
  132. package/src/reputation/index.ts +12 -0
  133. package/src/reputation/peer-reputation.ts +147 -0
  134. package/src/reputation/types.ts +117 -0
  135. package/src/storage/arachnode-fret-adapter.ts +11 -0
  136. package/src/storage/block-storage.ts +6 -0
  137. package/src/storage/storage-repo.ts +9 -0
  138. package/dist/index.min.js +0 -53
  139. package/dist/index.min.js.map +0 -7
@@ -1,10 +1,12 @@
1
1
  import { blockIdsForTransforms } from "@optimystic/db-core";
2
2
  import { ClusterClient } from "./client.js";
3
3
  import { peerIdFromString } from "@libp2p/peer-id";
4
+ import { publicKeyFromRaw } from "@libp2p/crypto/keys";
4
5
  import { sha256 } from "multiformats/hashes/sha2";
5
6
  import { base58btc } from "multiformats/bases/base58";
6
- import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
7
+ import { toString as uint8ArrayToString, fromString as uint8ArrayFromString } from 'uint8arrays';
7
8
  import { createLogger } from '../logger.js';
9
+ import { PenaltyReason } from "../reputation/types.js";
8
10
  const log = createLogger('cluster-member');
9
11
  /** State of a transaction in the cluster */
10
12
  var TransactionPhase;
@@ -17,7 +19,7 @@ var TransactionPhase;
17
19
  TransactionPhase[TransactionPhase["Propagating"] = 5] = "Propagating"; // Transaction is being propagated
18
20
  })(TransactionPhase || (TransactionPhase = {}));
19
21
  export function clusterMember(components) {
20
- return new ClusterMember(components.storageRepo, components.peerNetwork, components.peerId, components.protocolPrefix, components.partitionDetector, components.fretService, components.validator);
22
+ return new ClusterMember(components.storageRepo, components.peerNetwork, components.peerId, components.privateKey, components.protocolPrefix, components.partitionDetector, components.fretService, components.validator, components.reputation, components.consensusConfig);
21
23
  }
22
24
  // How long to keep executed transaction records (10 minutes)
23
25
  const ExecutedTransactionTtlMs = 10 * 60 * 1000;
@@ -29,10 +31,12 @@ export class ClusterMember {
29
31
  storageRepo;
30
32
  peerNetwork;
31
33
  peerId;
34
+ privateKey;
32
35
  protocolPrefix;
33
36
  partitionDetector;
34
37
  fretService;
35
38
  validator;
39
+ reputation;
36
40
  // Track active transactions by their message hash
37
41
  activeTransactions = new Map();
38
42
  // Track executed consensus transactions to prevent duplicate execution (messageHash -> executedAt timestamp)
@@ -41,18 +45,25 @@ export class ClusterMember {
41
45
  cleanupQueue = [];
42
46
  // Serialize concurrent updates for the same transaction
43
47
  pendingUpdates = new Map();
44
- constructor(storageRepo, peerNetwork, peerId, protocolPrefix, partitionDetector, fretService, validator) {
48
+ // Temporarily set during validateSignatures so verifySignature can access the record
49
+ currentValidationRecord;
50
+ /** Effective super-majority threshold. Defaults to 1.0 (unanimity) for backward compatibility. */
51
+ superMajorityThreshold;
52
+ constructor(storageRepo, peerNetwork, peerId, privateKey, protocolPrefix, partitionDetector, fretService, validator, reputation, consensusConfig) {
45
53
  this.storageRepo = storageRepo;
46
54
  this.peerNetwork = peerNetwork;
47
55
  this.peerId = peerId;
56
+ this.privateKey = privateKey;
48
57
  this.protocolPrefix = protocolPrefix;
49
58
  this.partitionDetector = partitionDetector;
50
59
  this.fretService = fretService;
51
60
  this.validator = validator;
52
- // Periodically clean up expired transactions
53
- setInterval(() => this.queueExpiredTransactions(), 60000);
61
+ this.reputation = reputation;
62
+ this.superMajorityThreshold = consensusConfig?.superMajorityThreshold ?? 1.0;
63
+ // Periodically clean up expired transactions (.unref() so tests/short-lived processes can exit)
64
+ setInterval(() => this.queueExpiredTransactions(), 60000).unref();
54
65
  // Process cleanup queue
55
- setInterval(() => this.processCleanupQueue(), 1000);
66
+ setInterval(() => this.processCleanupQueue(), 1000).unref();
56
67
  }
57
68
  /**
58
69
  * Checks if a transaction's operations were already executed during consensus.
@@ -85,7 +96,7 @@ export class ClusterMember {
85
96
  // Remove from pending updates after a short delay to allow concurrent calls to see it
86
97
  setTimeout(() => {
87
98
  this.pendingUpdates.delete(record.messageHash);
88
- }, 100);
99
+ }, 100).unref();
89
100
  }
90
101
  }
91
102
  async processUpdate(record) {
@@ -243,7 +254,8 @@ export class ClusterMember {
243
254
  return currentRecord;
244
255
  }
245
256
  /**
246
- * Merges two records, validating that non-signature fields match
257
+ * Merges two records, validating that non-signature fields match.
258
+ * Detects equivocation (same peer changing vote type) and applies penalties.
247
259
  */
248
260
  async mergeRecords(existing, incoming) {
249
261
  log('cluster-member:merge-records', {
@@ -263,13 +275,47 @@ export class ClusterMember {
263
275
  if (JSON.stringify(existing.peers) !== JSON.stringify(incoming.peers)) {
264
276
  throw new Error('Peers mismatch');
265
277
  }
266
- // Merge signatures, keeping the most recent valid ones
278
+ // Merge signatures with equivocation detection
279
+ const mergedPromises = this.detectEquivocation(existing.promises, incoming.promises, 'promise', existing.messageHash);
280
+ const mergedCommits = this.detectEquivocation(existing.commits, incoming.commits, 'commit', existing.messageHash);
267
281
  return {
268
282
  ...existing,
269
- promises: { ...existing.promises, ...incoming.promises },
270
- commits: { ...existing.commits, ...incoming.commits }
283
+ promises: mergedPromises,
284
+ commits: mergedCommits
271
285
  };
272
286
  }
287
+ /**
288
+ * Compares existing vs incoming signatures for the same peers.
289
+ * If a peer's vote type changed (approve↔reject), that's equivocation:
290
+ * report a penalty and keep the first-seen signature.
291
+ * New peers are accepted normally.
292
+ */
293
+ detectEquivocation(existing, incoming, phase, messageHash) {
294
+ const merged = { ...existing };
295
+ for (const [peerId, incomingSig] of Object.entries(incoming)) {
296
+ const existingSig = existing[peerId];
297
+ if (existingSig) {
298
+ if (existingSig.type !== incomingSig.type) {
299
+ // Equivocation detected: peer changed their vote type
300
+ log('cluster-member:equivocation-detected', {
301
+ peerId,
302
+ phase,
303
+ messageHash,
304
+ existingType: existingSig.type,
305
+ incomingType: incomingSig.type
306
+ });
307
+ this.reputation?.reportPeer(peerId, PenaltyReason.Equivocation, `${phase}:${messageHash}:${existingSig.type}->${incomingSig.type}`);
308
+ // Keep first-seen signature — do not let the peer flip their vote
309
+ }
310
+ // Same type: keep existing (no-op, already in merged)
311
+ }
312
+ else {
313
+ // New peer — accept normally
314
+ merged[peerId] = incomingSig;
315
+ }
316
+ }
317
+ return merged;
318
+ }
273
319
  async validateRecord(record) {
274
320
  // Validate message hash matches the message content
275
321
  const expectedHash = await this.computeMessageHash(record.message);
@@ -293,20 +339,28 @@ export class ClusterMember {
293
339
  return base58btc.encode(hashBytes.digest);
294
340
  }
295
341
  async validateSignatures(record) {
296
- // Validate promise signatures
297
- const promiseHash = await this.computePromiseHash(record);
298
- for (const [peerId, signature] of Object.entries(record.promises)) {
299
- if (!await this.verifySignature(peerId, promiseHash, signature)) {
300
- throw new Error(`Invalid promise signature from ${peerId}`);
342
+ this.currentValidationRecord = record;
343
+ try {
344
+ // Validate promise signatures
345
+ const promiseHash = await this.computePromiseHash(record);
346
+ for (const [peerId, signature] of Object.entries(record.promises)) {
347
+ if (!await this.verifySignature(peerId, promiseHash, signature)) {
348
+ this.reputation?.reportPeer(peerId, PenaltyReason.InvalidSignature, `promise:${record.messageHash}`);
349
+ throw new Error(`Invalid promise signature from ${peerId}`);
350
+ }
301
351
  }
302
- }
303
- // Validate commit signatures
304
- const commitHash = await this.computeCommitHash(record);
305
- for (const [peerId, signature] of Object.entries(record.commits)) {
306
- if (!await this.verifySignature(peerId, commitHash, signature)) {
307
- throw new Error(`Invalid commit signature from ${peerId}`);
352
+ // Validate commit signatures
353
+ const commitHash = await this.computeCommitHash(record);
354
+ for (const [peerId, signature] of Object.entries(record.commits)) {
355
+ if (!await this.verifySignature(peerId, commitHash, signature)) {
356
+ this.reputation?.reportPeer(peerId, PenaltyReason.InvalidSignature, `commit:${record.messageHash}`);
357
+ throw new Error(`Invalid commit signature from ${peerId}`);
358
+ }
308
359
  }
309
360
  }
361
+ finally {
362
+ this.currentValidationRecord = undefined;
363
+ }
310
364
  }
311
365
  async computePromiseHash(record) {
312
366
  const msgBytes = new TextEncoder().encode(record.messageHash + JSON.stringify(record.message));
@@ -318,33 +372,50 @@ export class ClusterMember {
318
372
  const hashBytes = await sha256.digest(msgBytes);
319
373
  return uint8ArrayToString(hashBytes.digest, 'base64url');
320
374
  }
375
+ computeSigningPayload(hash, type, rejectReason) {
376
+ const payload = hash + ':' + type + (rejectReason ? ':' + rejectReason : '');
377
+ return new TextEncoder().encode(payload);
378
+ }
379
+ async signVote(hash, type, rejectReason) {
380
+ const payload = this.computeSigningPayload(hash, type, rejectReason);
381
+ const sigBytes = await this.privateKey.sign(payload);
382
+ return uint8ArrayToString(sigBytes, 'base64url');
383
+ }
321
384
  async verifySignature(peerId, hash, signature) {
322
- // TODO: Implement actual signature verification
323
- return true;
385
+ const peerInfo = this.currentValidationRecord?.peers[peerId];
386
+ if (!peerInfo?.publicKey?.length) {
387
+ throw new Error(`No public key for peer ${peerId}`);
388
+ }
389
+ const pubKey = publicKeyFromRaw(peerInfo.publicKey);
390
+ const payload = this.computeSigningPayload(hash, signature.type, signature.rejectReason);
391
+ const sigBytes = uint8ArrayFromString(signature.signature, 'base64url');
392
+ return pubKey.verify(payload, sigBytes);
324
393
  }
325
394
  async getTransactionPhase(record) {
326
395
  const peerCount = Object.keys(record.peers).length;
327
396
  const promiseCount = Object.keys(record.promises).length;
328
- const commitCount = Object.keys(record.commits).length;
329
397
  const ourId = this.peerId.toString();
330
- // Check for rejections
398
+ const superMajority = Math.ceil(peerCount * this.superMajorityThreshold);
399
+ const maxAllowedRejections = peerCount - superMajority;
400
+ // Check for rejections — rejected if too many rejections to ever reach super-majority
331
401
  const rejectedPromises = Object.values(record.promises).filter(s => s.type === 'reject');
332
402
  const rejectedCommits = Object.values(record.commits).filter(s => s.type === 'reject');
333
- if (rejectedPromises.length > 0 || this.hasMajority(rejectedCommits.length, peerCount)) {
403
+ if (rejectedPromises.length > maxAllowedRejections || this.hasMajority(rejectedCommits.length, peerCount)) {
334
404
  return TransactionPhase.Rejected;
335
405
  }
336
406
  // Check if we need to promise
337
407
  if (!record.promises[ourId] && !this.hasConflict(record)) {
338
408
  return TransactionPhase.OurPromiseNeeded;
339
409
  }
410
+ // Check if we have enough approved promises to proceed to commit
411
+ const approvedPromises = Object.values(record.promises).filter(s => s.type === 'approve');
412
+ if (approvedPromises.length >= superMajority && !record.commits[ourId]) {
413
+ return TransactionPhase.OurCommitNeeded;
414
+ }
340
415
  // Check if still collecting promises
341
- if (promiseCount < peerCount) {
416
+ if (promiseCount < peerCount && approvedPromises.length < superMajority) {
342
417
  return TransactionPhase.Promising;
343
418
  }
344
- // Check if we need to commit
345
- if (promiseCount === peerCount && !record.commits[ourId]) {
346
- return TransactionPhase.OurCommitNeeded;
347
- }
348
419
  // Check for consensus
349
420
  const approvedCommits = Object.values(record.commits).filter(s => s.type === 'approve');
350
421
  if (this.hasMajority(approvedCommits.length, peerCount)) {
@@ -358,9 +429,13 @@ export class ClusterMember {
358
429
  async handlePromiseNeeded(record) {
359
430
  // Validate pend operations if we have a validator
360
431
  const validationResult = await this.validatePendOperations(record);
432
+ const promiseHash = await this.computePromiseHash(record);
433
+ const type = validationResult.valid ? 'approve' : 'reject';
434
+ const rejectReason = validationResult.valid ? undefined : validationResult.reason;
435
+ const sig = await this.signVote(promiseHash, type, rejectReason);
361
436
  const signature = validationResult.valid
362
- ? { type: 'approve', signature: 'approved' }
363
- : { type: 'reject', signature: 'rejected', rejectReason: validationResult.reason };
437
+ ? { type: 'approve', signature: sig }
438
+ : { type: 'reject', signature: sig, rejectReason };
364
439
  if (!validationResult.valid) {
365
440
  log('cluster-member:validation-rejected', {
366
441
  messageHash: record.messageHash,
@@ -419,9 +494,11 @@ export class ClusterMember {
419
494
  if (this.hasLocalCommit(record)) {
420
495
  return record;
421
496
  }
497
+ const commitHash = await this.computeCommitHash(record);
498
+ const sig = await this.signVote(commitHash, 'approve');
422
499
  const signature = {
423
500
  type: 'approve',
424
- signature: 'committed' // TODO: Actually sign the commit hash
501
+ signature: sig
425
502
  };
426
503
  return {
427
504
  ...record,
@@ -507,8 +584,8 @@ export class ClusterMember {
507
584
  return {};
508
585
  }
509
586
  return {
510
- promiseTimeout: setTimeout(() => this.handleExpiration(record.messageHash), record.message.expiration - Date.now()),
511
- resolutionTimeout: setTimeout(() => this.resolveWithPeers(record.messageHash), record.message.expiration + 5000 - Date.now())
587
+ promiseTimeout: setTimeout(() => this.handleExpiration(record.messageHash), record.message.expiration - Date.now()).unref(),
588
+ resolutionTimeout: setTimeout(() => this.resolveWithPeers(record.messageHash), record.message.expiration + 5000 - Date.now()).unref()
512
589
  };
513
590
  }
514
591
  hasConflict(record) {
@@ -655,10 +732,13 @@ export class ClusterMember {
655
732
  if (!state)
656
733
  return;
657
734
  if (!state.record.promises[this.peerId.toString()]) {
735
+ const rejectReason = 'Transaction expired';
736
+ const promiseHash = await this.computePromiseHash(state.record);
737
+ const sig = await this.signVote(promiseHash, 'reject', rejectReason);
658
738
  const signature = {
659
739
  type: 'reject',
660
- signature: 'rejected',
661
- rejectReason: 'Transaction expired'
740
+ signature: sig,
741
+ rejectReason
662
742
  };
663
743
  const updatedRecord = {
664
744
  ...state.record,
@@ -1 +1 @@
1
- {"version":3,"file":"cluster-repo.js","sourceRoot":"","sources":["../../../src/cluster/cluster-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cluster-repo.js","sourceRoot":"","sources":["../../../src/cluster/cluster-repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { Startable, Libp2p } from '@libp2p/interface';
2
+ import type { FretService } from 'p2p-fret';
3
+ import type { PartitionDetector } from './partition-detector.js';
4
+ import type { ArachnodeFretAdapter, ArachnodeInfo } from '../storage/arachnode-fret-adapter.js';
5
+ export interface RebalanceEvent {
6
+ /** Block IDs this node has gained responsibility for */
7
+ gained: string[];
8
+ /** Block IDs this node has lost responsibility for */
9
+ lost: string[];
10
+ /** Peers that are now closer for the lost blocks: blockId → peerId[] */
11
+ newOwners: Map<string, string[]>;
12
+ /** Timestamp of the topology change that triggered this */
13
+ triggeredAt: number;
14
+ }
15
+ export interface RebalanceMonitorConfig {
16
+ /** Debounce window for topology changes (ms). Default: 5000 */
17
+ debounceMs?: number;
18
+ /** Maximum frequency of full rebalance scans (ms). Default: 60000 */
19
+ minRebalanceIntervalMs?: number;
20
+ /** Whether to suppress rebalancing during detected partitions. Default: true */
21
+ suppressDuringPartition?: boolean;
22
+ }
23
+ export interface RebalanceMonitorDeps {
24
+ libp2p: Libp2p;
25
+ fret: FretService;
26
+ partitionDetector: PartitionDetector;
27
+ fretAdapter: ArachnodeFretAdapter;
28
+ }
29
+ type RebalanceHandler = (event: RebalanceEvent) => void;
30
+ export declare class RebalanceMonitor implements Startable {
31
+ private readonly deps;
32
+ private running;
33
+ private readonly trackedBlocks;
34
+ private readonly responsibilitySnapshot;
35
+ private readonly handlers;
36
+ private debounceTimer;
37
+ private lastRebalanceAt;
38
+ private pendingTopologyChange;
39
+ private topologyChangeTimestamp;
40
+ private readonly debounceMs;
41
+ private readonly minRebalanceIntervalMs;
42
+ private readonly suppressDuringPartition;
43
+ private readonly onConnectionOpen;
44
+ private readonly onConnectionClose;
45
+ constructor(deps: RebalanceMonitorDeps, config?: RebalanceMonitorConfig);
46
+ start(): Promise<void>;
47
+ stop(): Promise<void>;
48
+ onRebalance(handler: RebalanceHandler): void;
49
+ trackBlock(blockId: string): void;
50
+ untrackBlock(blockId: string): void;
51
+ getTrackedBlockCount(): number;
52
+ checkNow(): Promise<RebalanceEvent | null>;
53
+ private handleTopologyChange;
54
+ private maybeRebalance;
55
+ private performRebalanceCheck;
56
+ private getCohortSize;
57
+ private emitEvent;
58
+ /**
59
+ * Update ArachnodeInfo status through the fret adapter.
60
+ */
61
+ setStatus(status: ArachnodeInfo['status']): void;
62
+ }
63
+ export {};
64
+ //# sourceMappingURL=rebalance-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rebalance-monitor.d.ts","sourceRoot":"","sources":["../../../src/cluster/rebalance-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAU,MAAM,mBAAmB,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AAM/F,MAAM,WAAW,cAAc;IAC9B,wDAAwD;IACxD,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,sDAAsD;IACtD,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,wEAAwE;IACxE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAChC,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACtC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,gFAAgF;IAChF,uBAAuB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,WAAW,CAAA;IACjB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,WAAW,EAAE,oBAAoB,CAAA;CACjC;AAED,KAAK,gBAAgB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;AAEvD,qBAAa,gBAAiB,YAAW,SAAS;IAkBhD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAjBtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,uBAAuB,CAAI;IAEnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAC/C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IAEjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IAC7C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAY;gBAG5B,IAAI,EAAE,oBAAoB,EAC3C,MAAM,GAAE,sBAA2B;IAU9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAI5C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKnC,oBAAoB,IAAI,MAAM;IAIxB,QAAQ,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAIhD,OAAO,CAAC,oBAAoB;YAmBd,cAAc;YAgBd,qBAAqB;IA+CnC,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI;CAGhD"}
@@ -0,0 +1,157 @@
1
+ import { hashKey } from 'p2p-fret';
2
+ import { createLogger } from '../logger.js';
3
+ const log = createLogger('rebalance-monitor');
4
+ const textEncoder = new TextEncoder();
5
+ export class RebalanceMonitor {
6
+ deps;
7
+ running = false;
8
+ trackedBlocks = new Set();
9
+ responsibilitySnapshot = new Map();
10
+ handlers = [];
11
+ debounceTimer = null;
12
+ lastRebalanceAt = 0;
13
+ pendingTopologyChange = false;
14
+ topologyChangeTimestamp = 0;
15
+ debounceMs;
16
+ minRebalanceIntervalMs;
17
+ suppressDuringPartition;
18
+ onConnectionOpen;
19
+ onConnectionClose;
20
+ constructor(deps, config = {}) {
21
+ this.deps = deps;
22
+ this.debounceMs = config.debounceMs ?? 5000;
23
+ this.minRebalanceIntervalMs = config.minRebalanceIntervalMs ?? 60000;
24
+ this.suppressDuringPartition = config.suppressDuringPartition ?? true;
25
+ this.onConnectionOpen = () => this.handleTopologyChange();
26
+ this.onConnectionClose = () => this.handleTopologyChange();
27
+ }
28
+ async start() {
29
+ if (this.running)
30
+ return;
31
+ this.running = true;
32
+ this.deps.libp2p.addEventListener('connection:open', this.onConnectionOpen);
33
+ this.deps.libp2p.addEventListener('connection:close', this.onConnectionClose);
34
+ log('started, tracking %d blocks', this.trackedBlocks.size);
35
+ }
36
+ async stop() {
37
+ if (!this.running)
38
+ return;
39
+ this.running = false;
40
+ this.deps.libp2p.removeEventListener('connection:open', this.onConnectionOpen);
41
+ this.deps.libp2p.removeEventListener('connection:close', this.onConnectionClose);
42
+ if (this.debounceTimer) {
43
+ clearTimeout(this.debounceTimer);
44
+ this.debounceTimer = null;
45
+ }
46
+ this.pendingTopologyChange = false;
47
+ log('stopped');
48
+ }
49
+ onRebalance(handler) {
50
+ this.handlers.push(handler);
51
+ }
52
+ trackBlock(blockId) {
53
+ this.trackedBlocks.add(blockId);
54
+ }
55
+ untrackBlock(blockId) {
56
+ this.trackedBlocks.delete(blockId);
57
+ this.responsibilitySnapshot.delete(blockId);
58
+ }
59
+ getTrackedBlockCount() {
60
+ return this.trackedBlocks.size;
61
+ }
62
+ async checkNow() {
63
+ return this.performRebalanceCheck(Date.now());
64
+ }
65
+ handleTopologyChange() {
66
+ if (!this.running)
67
+ return;
68
+ if (!this.pendingTopologyChange) {
69
+ this.topologyChangeTimestamp = Date.now();
70
+ }
71
+ this.pendingTopologyChange = true;
72
+ if (this.debounceTimer) {
73
+ clearTimeout(this.debounceTimer);
74
+ }
75
+ this.debounceTimer = setTimeout(() => {
76
+ this.debounceTimer = null;
77
+ this.pendingTopologyChange = false;
78
+ this.maybeRebalance();
79
+ }, this.debounceMs);
80
+ }
81
+ async maybeRebalance() {
82
+ if (!this.running)
83
+ return;
84
+ const now = Date.now();
85
+ const elapsed = now - this.lastRebalanceAt;
86
+ if (elapsed < this.minRebalanceIntervalMs) {
87
+ log('throttled, %dms since last rebalance', elapsed);
88
+ return;
89
+ }
90
+ const event = await this.performRebalanceCheck(this.topologyChangeTimestamp || now);
91
+ if (event) {
92
+ this.emitEvent(event);
93
+ }
94
+ }
95
+ async performRebalanceCheck(triggeredAt) {
96
+ if (this.suppressDuringPartition && this.deps.partitionDetector.detectPartition()) {
97
+ log('partition detected, suppressing rebalance');
98
+ return null;
99
+ }
100
+ if (this.trackedBlocks.size === 0) {
101
+ this.lastRebalanceAt = Date.now();
102
+ return null;
103
+ }
104
+ const selfId = this.deps.libp2p.peerId.toString();
105
+ const gained = [];
106
+ const lost = [];
107
+ const newOwners = new Map();
108
+ for (const blockId of this.trackedBlocks) {
109
+ const key = textEncoder.encode(blockId);
110
+ const coord = await hashKey(key);
111
+ // Get the current cohort — assembleCohort returns peer IDs sorted by distance
112
+ const cohort = this.deps.fret.assembleCohort(coord, this.getCohortSize());
113
+ const isResponsible = cohort.includes(selfId);
114
+ const wasResponsible = this.responsibilitySnapshot.get(blockId) ?? false;
115
+ if (isResponsible && !wasResponsible) {
116
+ gained.push(blockId);
117
+ }
118
+ else if (!isResponsible && wasResponsible) {
119
+ lost.push(blockId);
120
+ // The cohort members are the new owners
121
+ newOwners.set(blockId, cohort.filter(id => id !== selfId));
122
+ }
123
+ this.responsibilitySnapshot.set(blockId, isResponsible);
124
+ }
125
+ this.lastRebalanceAt = Date.now();
126
+ if (gained.length === 0 && lost.length === 0) {
127
+ return null;
128
+ }
129
+ log('rebalance check: gained=%d lost=%d', gained.length, lost.length);
130
+ return { gained, lost, newOwners, triggeredAt };
131
+ }
132
+ getCohortSize() {
133
+ const diag = this.deps.fret.getDiagnostics?.();
134
+ const estimate = diag?.estimate ?? diag?.n;
135
+ if (typeof estimate === 'number' && Number.isFinite(estimate) && estimate > 0) {
136
+ return Math.max(1, Math.min(3, Math.ceil(Math.sqrt(estimate))));
137
+ }
138
+ return 3;
139
+ }
140
+ emitEvent(event) {
141
+ for (const handler of this.handlers) {
142
+ try {
143
+ handler(event);
144
+ }
145
+ catch (err) {
146
+ log('handler error: %O', err);
147
+ }
148
+ }
149
+ }
150
+ /**
151
+ * Update ArachnodeInfo status through the fret adapter.
152
+ */
153
+ setStatus(status) {
154
+ this.deps.fretAdapter.setStatus(status);
155
+ }
156
+ }
157
+ //# sourceMappingURL=rebalance-monitor.js.map