@peerbit/shared-log 13.2.29 → 13.2.31

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.
@@ -49,6 +49,50 @@ export declare class StoppedReplicating extends TransportMessage {
49
49
  export declare class ReplicationPingMessage extends TransportMessage {
50
50
  constructor();
51
51
  }
52
+ /**
53
+ * Decode-first replication-info V2 messages. This rollout only registers and
54
+ * advertises the final wire schemas; it never sends or applies these messages.
55
+ * A later negotiated phase must bind the signed transport session and an
56
+ * outstanding receiver challenge before any V2 payload is used.
57
+ */
58
+ export declare class FullReplicationInfoV2Message extends TransportMessage {
59
+ receiverChallenge: Uint8Array;
60
+ senderEpoch: Uint8Array;
61
+ sequence: bigint;
62
+ segments: ReplicationRangeMessage<any>[];
63
+ constructor(properties: {
64
+ receiverChallenge: Uint8Array;
65
+ senderEpoch: Uint8Array;
66
+ sequence: bigint;
67
+ segments: ReplicationRangeMessage<any>[];
68
+ });
69
+ }
70
+ export declare class AddedReplicationInfoV2Message extends TransportMessage {
71
+ receiverChallenge: Uint8Array;
72
+ senderEpoch: Uint8Array;
73
+ sequence: bigint;
74
+ segments: ReplicationRangeMessage<any>[];
75
+ constructor(properties: {
76
+ receiverChallenge: Uint8Array;
77
+ senderEpoch: Uint8Array;
78
+ sequence: bigint;
79
+ segments: ReplicationRangeMessage<any>[];
80
+ });
81
+ }
82
+ export declare class StoppedReplicationInfoV2Message extends TransportMessage {
83
+ receiverChallenge: Uint8Array;
84
+ senderEpoch: Uint8Array;
85
+ sequence: bigint;
86
+ segmentIds: Uint8Array[];
87
+ constructor(properties: {
88
+ receiverChallenge: Uint8Array;
89
+ senderEpoch: Uint8Array;
90
+ sequence: bigint;
91
+ segmentIds: Uint8Array[];
92
+ });
93
+ }
94
+ export type ReplicationInfoV2Message = FullReplicationInfoV2Message | AddedReplicationInfoV2Message | StoppedReplicationInfoV2Message;
95
+ export declare const isReplicationInfoV2Message: (message: TransportMessage) => message is ReplicationInfoV2Message;
52
96
  export declare const encodeReplicas: (minReplicas: MinReplicas) => Uint8Array;
53
97
  export declare class ReplicationError extends Error {
54
98
  constructor(message: string);
@@ -1 +1 @@
1
- {"version":3,"file":"replication.d.ts","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAEN,KAAK,yBAAyB,EAC9B,uBAAuB,EAEvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAQ,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,GAAG,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAExE,UAAU,SAAS;IAClB,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrC,gBAAgB,EAAE,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;CACpE;AAED,qBAAa,WAAW;IACvB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM;CAGhC;AAED,qBACa,gBAAiB,SAAQ,WAAW;IAEhD,MAAM,EAAE,MAAM,CAAC;gBAEH,KAAK,EAAE,MAAM;IAKzB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;CAGjC;AAED,qBACa,6BAA8B,SAAQ,gBAAgB;;CAIlE;AAGD,qBACa,mBAAoB,SAAQ,gBAAgB;IAExD,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;gBAEhB,UAAU,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAA;KAAE;IAKvD,wBAAwB,IAAI,6BAA6B;CAgBzD;AAED,qBACa,6BAA8B,SAAQ,gBAAgB;IAElE,QAAQ,EAAE,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE7B,UAAU,EAAE;QAAE,QAAQ,EAAE,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAA;KAAE;CAIpE;AAED,qBACa,8BAA+B,SAAQ,gBAAgB;IAEnE,QAAQ,EAAE,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE7B,UAAU,EAAE;QAAE,QAAQ,EAAE,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAA;KAAE;CAIpE;AAED,qBACa,kBAAmB,SAAQ,gBAAgB;IAEvD,UAAU,EAAE,UAAU,EAAE,CAAC;gBAEb,UAAU,EAAE;QAAE,UAAU,EAAE,UAAU,EAAE,CAAA;KAAE;CAIpD;AAED,qBACa,sBAAuB,SAAQ,gBAAgB;;CAO3D;AAiBD,eAAO,MAAM,cAAc,GAAI,aAAa,WAAW,KAAG,UAEzD,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAG3B;AACD,eAAO,MAAM,cAAc,GAAI,OAAO;IACrC,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;CAC5B,KAAG,WAKH,CAAC;AAEF,eAAO,MAAM,WAAW,GACvB,KAAK,SAAS,EACd,SACG;IAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,UAAU,CAAA;KAAE,CAAA;CAAE,EAAE,GACjC,gBAAgB,CAAC;IAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,UAAU,CAAA;KAAE,CAAA;CAAE,CAAC,WAUpD,CAAC"}
1
+ {"version":3,"file":"replication.d.ts","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
32
32
  }
33
33
  return useValue ? value : void 0;
34
34
  };
35
- import { deserialize, field, option, serialize, variant, vec, } from "@dao-xyz/borsh";
35
+ import { deserialize, field, fixedArray, option, serialize, variant, vec, } from "@dao-xyz/borsh";
36
36
  import { randomBytes } from "@peerbit/crypto";
37
37
  import {} from "@peerbit/indexer-interface";
38
38
  import { TransportMessage } from "./message.js";
@@ -259,6 +259,168 @@ let ReplicationPingMessage = (() => {
259
259
  return ReplicationPingMessage = _classThis;
260
260
  })();
261
261
  export { ReplicationPingMessage };
262
+ /**
263
+ * Decode-first replication-info V2 messages. This rollout only registers and
264
+ * advertises the final wire schemas; it never sends or applies these messages.
265
+ * A later negotiated phase must bind the signed transport session and an
266
+ * outstanding receiver challenge before any V2 payload is used.
267
+ */
268
+ let FullReplicationInfoV2Message = (() => {
269
+ let _classDecorators = [variant([1, 6])];
270
+ let _classDescriptor;
271
+ let _classExtraInitializers = [];
272
+ let _classThis;
273
+ let _classSuper = TransportMessage;
274
+ let _receiverChallenge_decorators;
275
+ let _receiverChallenge_initializers = [];
276
+ let _receiverChallenge_extraInitializers = [];
277
+ let _senderEpoch_decorators;
278
+ let _senderEpoch_initializers = [];
279
+ let _senderEpoch_extraInitializers = [];
280
+ let _sequence_decorators;
281
+ let _sequence_initializers = [];
282
+ let _sequence_extraInitializers = [];
283
+ let _segments_decorators;
284
+ let _segments_initializers = [];
285
+ let _segments_extraInitializers = [];
286
+ var FullReplicationInfoV2Message = class extends _classSuper {
287
+ static { _classThis = this; }
288
+ static {
289
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
290
+ _receiverChallenge_decorators = [field({ type: fixedArray("u8", 32) })];
291
+ _senderEpoch_decorators = [field({ type: fixedArray("u8", 32) })];
292
+ _sequence_decorators = [field({ type: "u64" })];
293
+ _segments_decorators = [field({ type: vec(ReplicationRangeMessage) })];
294
+ __esDecorate(null, null, _receiverChallenge_decorators, { kind: "field", name: "receiverChallenge", static: false, private: false, access: { has: obj => "receiverChallenge" in obj, get: obj => obj.receiverChallenge, set: (obj, value) => { obj.receiverChallenge = value; } }, metadata: _metadata }, _receiverChallenge_initializers, _receiverChallenge_extraInitializers);
295
+ __esDecorate(null, null, _senderEpoch_decorators, { kind: "field", name: "senderEpoch", static: false, private: false, access: { has: obj => "senderEpoch" in obj, get: obj => obj.senderEpoch, set: (obj, value) => { obj.senderEpoch = value; } }, metadata: _metadata }, _senderEpoch_initializers, _senderEpoch_extraInitializers);
296
+ __esDecorate(null, null, _sequence_decorators, { kind: "field", name: "sequence", static: false, private: false, access: { has: obj => "sequence" in obj, get: obj => obj.sequence, set: (obj, value) => { obj.sequence = value; } }, metadata: _metadata }, _sequence_initializers, _sequence_extraInitializers);
297
+ __esDecorate(null, null, _segments_decorators, { kind: "field", name: "segments", static: false, private: false, access: { has: obj => "segments" in obj, get: obj => obj.segments, set: (obj, value) => { obj.segments = value; } }, metadata: _metadata }, _segments_initializers, _segments_extraInitializers);
298
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
299
+ FullReplicationInfoV2Message = _classThis = _classDescriptor.value;
300
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
301
+ __runInitializers(_classThis, _classExtraInitializers);
302
+ }
303
+ receiverChallenge = __runInitializers(this, _receiverChallenge_initializers, void 0);
304
+ senderEpoch = (__runInitializers(this, _receiverChallenge_extraInitializers), __runInitializers(this, _senderEpoch_initializers, void 0));
305
+ sequence = (__runInitializers(this, _senderEpoch_extraInitializers), __runInitializers(this, _sequence_initializers, void 0));
306
+ segments = (__runInitializers(this, _sequence_extraInitializers), __runInitializers(this, _segments_initializers, void 0));
307
+ constructor(properties) {
308
+ super();
309
+ __runInitializers(this, _segments_extraInitializers);
310
+ this.receiverChallenge = properties.receiverChallenge;
311
+ this.senderEpoch = properties.senderEpoch;
312
+ this.sequence = properties.sequence;
313
+ this.segments = properties.segments;
314
+ }
315
+ };
316
+ return FullReplicationInfoV2Message = _classThis;
317
+ })();
318
+ export { FullReplicationInfoV2Message };
319
+ let AddedReplicationInfoV2Message = (() => {
320
+ let _classDecorators = [variant([1, 7])];
321
+ let _classDescriptor;
322
+ let _classExtraInitializers = [];
323
+ let _classThis;
324
+ let _classSuper = TransportMessage;
325
+ let _receiverChallenge_decorators;
326
+ let _receiverChallenge_initializers = [];
327
+ let _receiverChallenge_extraInitializers = [];
328
+ let _senderEpoch_decorators;
329
+ let _senderEpoch_initializers = [];
330
+ let _senderEpoch_extraInitializers = [];
331
+ let _sequence_decorators;
332
+ let _sequence_initializers = [];
333
+ let _sequence_extraInitializers = [];
334
+ let _segments_decorators;
335
+ let _segments_initializers = [];
336
+ let _segments_extraInitializers = [];
337
+ var AddedReplicationInfoV2Message = class extends _classSuper {
338
+ static { _classThis = this; }
339
+ static {
340
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
341
+ _receiverChallenge_decorators = [field({ type: fixedArray("u8", 32) })];
342
+ _senderEpoch_decorators = [field({ type: fixedArray("u8", 32) })];
343
+ _sequence_decorators = [field({ type: "u64" })];
344
+ _segments_decorators = [field({ type: vec(ReplicationRangeMessage) })];
345
+ __esDecorate(null, null, _receiverChallenge_decorators, { kind: "field", name: "receiverChallenge", static: false, private: false, access: { has: obj => "receiverChallenge" in obj, get: obj => obj.receiverChallenge, set: (obj, value) => { obj.receiverChallenge = value; } }, metadata: _metadata }, _receiverChallenge_initializers, _receiverChallenge_extraInitializers);
346
+ __esDecorate(null, null, _senderEpoch_decorators, { kind: "field", name: "senderEpoch", static: false, private: false, access: { has: obj => "senderEpoch" in obj, get: obj => obj.senderEpoch, set: (obj, value) => { obj.senderEpoch = value; } }, metadata: _metadata }, _senderEpoch_initializers, _senderEpoch_extraInitializers);
347
+ __esDecorate(null, null, _sequence_decorators, { kind: "field", name: "sequence", static: false, private: false, access: { has: obj => "sequence" in obj, get: obj => obj.sequence, set: (obj, value) => { obj.sequence = value; } }, metadata: _metadata }, _sequence_initializers, _sequence_extraInitializers);
348
+ __esDecorate(null, null, _segments_decorators, { kind: "field", name: "segments", static: false, private: false, access: { has: obj => "segments" in obj, get: obj => obj.segments, set: (obj, value) => { obj.segments = value; } }, metadata: _metadata }, _segments_initializers, _segments_extraInitializers);
349
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
350
+ AddedReplicationInfoV2Message = _classThis = _classDescriptor.value;
351
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
352
+ __runInitializers(_classThis, _classExtraInitializers);
353
+ }
354
+ receiverChallenge = __runInitializers(this, _receiverChallenge_initializers, void 0);
355
+ senderEpoch = (__runInitializers(this, _receiverChallenge_extraInitializers), __runInitializers(this, _senderEpoch_initializers, void 0));
356
+ sequence = (__runInitializers(this, _senderEpoch_extraInitializers), __runInitializers(this, _sequence_initializers, void 0));
357
+ segments = (__runInitializers(this, _sequence_extraInitializers), __runInitializers(this, _segments_initializers, void 0));
358
+ constructor(properties) {
359
+ super();
360
+ __runInitializers(this, _segments_extraInitializers);
361
+ this.receiverChallenge = properties.receiverChallenge;
362
+ this.senderEpoch = properties.senderEpoch;
363
+ this.sequence = properties.sequence;
364
+ this.segments = properties.segments;
365
+ }
366
+ };
367
+ return AddedReplicationInfoV2Message = _classThis;
368
+ })();
369
+ export { AddedReplicationInfoV2Message };
370
+ let StoppedReplicationInfoV2Message = (() => {
371
+ let _classDecorators = [variant([1, 8])];
372
+ let _classDescriptor;
373
+ let _classExtraInitializers = [];
374
+ let _classThis;
375
+ let _classSuper = TransportMessage;
376
+ let _receiverChallenge_decorators;
377
+ let _receiverChallenge_initializers = [];
378
+ let _receiverChallenge_extraInitializers = [];
379
+ let _senderEpoch_decorators;
380
+ let _senderEpoch_initializers = [];
381
+ let _senderEpoch_extraInitializers = [];
382
+ let _sequence_decorators;
383
+ let _sequence_initializers = [];
384
+ let _sequence_extraInitializers = [];
385
+ let _segmentIds_decorators;
386
+ let _segmentIds_initializers = [];
387
+ let _segmentIds_extraInitializers = [];
388
+ var StoppedReplicationInfoV2Message = class extends _classSuper {
389
+ static { _classThis = this; }
390
+ static {
391
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
392
+ _receiverChallenge_decorators = [field({ type: fixedArray("u8", 32) })];
393
+ _senderEpoch_decorators = [field({ type: fixedArray("u8", 32) })];
394
+ _sequence_decorators = [field({ type: "u64" })];
395
+ _segmentIds_decorators = [field({ type: vec(Uint8Array) })];
396
+ __esDecorate(null, null, _receiverChallenge_decorators, { kind: "field", name: "receiverChallenge", static: false, private: false, access: { has: obj => "receiverChallenge" in obj, get: obj => obj.receiverChallenge, set: (obj, value) => { obj.receiverChallenge = value; } }, metadata: _metadata }, _receiverChallenge_initializers, _receiverChallenge_extraInitializers);
397
+ __esDecorate(null, null, _senderEpoch_decorators, { kind: "field", name: "senderEpoch", static: false, private: false, access: { has: obj => "senderEpoch" in obj, get: obj => obj.senderEpoch, set: (obj, value) => { obj.senderEpoch = value; } }, metadata: _metadata }, _senderEpoch_initializers, _senderEpoch_extraInitializers);
398
+ __esDecorate(null, null, _sequence_decorators, { kind: "field", name: "sequence", static: false, private: false, access: { has: obj => "sequence" in obj, get: obj => obj.sequence, set: (obj, value) => { obj.sequence = value; } }, metadata: _metadata }, _sequence_initializers, _sequence_extraInitializers);
399
+ __esDecorate(null, null, _segmentIds_decorators, { kind: "field", name: "segmentIds", static: false, private: false, access: { has: obj => "segmentIds" in obj, get: obj => obj.segmentIds, set: (obj, value) => { obj.segmentIds = value; } }, metadata: _metadata }, _segmentIds_initializers, _segmentIds_extraInitializers);
400
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
401
+ StoppedReplicationInfoV2Message = _classThis = _classDescriptor.value;
402
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
403
+ __runInitializers(_classThis, _classExtraInitializers);
404
+ }
405
+ receiverChallenge = __runInitializers(this, _receiverChallenge_initializers, void 0);
406
+ senderEpoch = (__runInitializers(this, _receiverChallenge_extraInitializers), __runInitializers(this, _senderEpoch_initializers, void 0));
407
+ sequence = (__runInitializers(this, _senderEpoch_extraInitializers), __runInitializers(this, _sequence_initializers, void 0));
408
+ segmentIds = (__runInitializers(this, _sequence_extraInitializers), __runInitializers(this, _segmentIds_initializers, void 0));
409
+ constructor(properties) {
410
+ super();
411
+ __runInitializers(this, _segmentIds_extraInitializers);
412
+ this.receiverChallenge = properties.receiverChallenge;
413
+ this.senderEpoch = properties.senderEpoch;
414
+ this.sequence = properties.sequence;
415
+ this.segmentIds = properties.segmentIds;
416
+ }
417
+ };
418
+ return StoppedReplicationInfoV2Message = _classThis;
419
+ })();
420
+ export { StoppedReplicationInfoV2Message };
421
+ export const isReplicationInfoV2Message = (message) => message instanceof FullReplicationInfoV2Message ||
422
+ message instanceof AddedReplicationInfoV2Message ||
423
+ message instanceof StoppedReplicationInfoV2Message;
262
424
  /*
263
425
  @variant(1)
264
426
  export class RelativeMinReplicas extends MinReplicas {
@@ -1 +1 @@
1
- {"version":3,"file":"replication.js","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replication.js","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/shared-log",
3
- "version": "13.2.29",
3
+ "version": "13.2.31",
4
4
  "description": "Shared log",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -62,27 +62,27 @@
62
62
  "pidusage": "^4.0.1",
63
63
  "pino": "^9.4.0",
64
64
  "uint8arrays": "^5.1.0",
65
- "@peerbit/any-store": "2.2.14",
66
65
  "@peerbit/blocks": "4.2.10",
67
66
  "@peerbit/blocks-interface": "2.1.5",
67
+ "@peerbit/any-store": "2.2.14",
68
68
  "@peerbit/cache": "3.1.1",
69
69
  "@peerbit/crypto": "3.1.5",
70
70
  "@peerbit/diagnostics": "0.0.1",
71
+ "@peerbit/indexer-interface": "3.0.9",
72
+ "@peerbit/logger": "2.0.1",
71
73
  "@peerbit/indexer-sqlite3": "3.0.14",
72
74
  "@peerbit/log": "6.2.16",
73
- "@peerbit/logger": "2.0.1",
74
- "@peerbit/program": "6.0.48",
75
- "@peerbit/indexer-interface": "3.0.9",
76
75
  "@peerbit/pubsub": "5.4.0",
77
- "@peerbit/riblt": "1.2.0",
76
+ "@peerbit/program": "6.0.48",
78
77
  "@peerbit/pubsub-interface": "5.2.0",
78
+ "@peerbit/riblt": "1.2.0",
79
79
  "@peerbit/rpc": "6.1.16",
80
- "@peerbit/time": "3.0.1",
81
- "@peerbit/stream-interface": "6.0.15"
80
+ "@peerbit/stream-interface": "6.0.15",
81
+ "@peerbit/time": "3.0.1"
82
82
  },
83
83
  "optionalDependencies": {
84
- "@peerbit/shared-log-rust": "0.1.4",
85
- "@peerbit/native-backbone": "0.2.5"
84
+ "@peerbit/native-backbone": "0.2.5",
85
+ "@peerbit/shared-log-rust": "0.1.4"
86
86
  },
87
87
  "devDependencies": {
88
88
  "@types/libsodium-wrappers": "^0.7.14",
@@ -112,6 +112,9 @@
112
112
  "benchmark:network-preset-e2e": "node --loader ts-node/esm ./benchmark/network-preset-e2e.ts",
113
113
  "benchmark:receive-prune": "node --loader ts-node/esm ./benchmark/receive-prune.ts",
114
114
  "benchmark:sync-catchup": "node --loader ts-node/esm ./benchmark/sync-catchup.ts",
115
+ "benchmark:sync-peer-state": "node --loader ts-node/esm ./benchmark/sync-peer-state.ts",
116
+ "benchmark:sync-peer-state:compare": "node ./benchmark/sync-peer-state-compare.mjs",
117
+ "benchmark:sync-peer-state:compare:test": "node --test ./benchmark/sync-peer-state-compare.test.mjs",
115
118
  "benchmark:sync-phase-profile": "node --loader ts-node/esm ./benchmark/sync-phase-profile.ts",
116
119
  "test": "aegir test --target node",
117
120
  "test:shared-log-rust-core": "npm run build && PEERBIT_SHARED_LOG_RUST_CORE=1 aegir test -t node --grep '^(?!u32-simple replication degree commit options control per commmit put before join converges under deterministic pubsub chaos$)(?!.*(does not fetch missing entries from remotes|will prune once reaching max replicas|repairs when joiner request responses are dropped|time out when pending IHave are never resolved|does not confirm checked prune from a shallow-only entry|replication degree update ))(append delivery options |join |replicate |(u32-simple|u64-iblt) (replication references |replication replication (one way|two way) |redundancy only sends entries once|canReplicate |replication degree |start/stop replicate on connect|sync ))' -- --forbid-pending",
@@ -348,11 +348,18 @@ export const EXCHANGE_HEADS_REPAIR_HINT = 1;
348
348
  */
349
349
  export const SYNC_CAPABILITY_RAW_EXCHANGE_HEADS = 1;
350
350
 
351
+ /**
352
+ * Capability bit: the peer can decode the challenge-bound replication-info V2
353
+ * variants [1, 6], [1, 7] and [1, 8]. This is decode support only and never
354
+ * authorizes a sender to transmit V2. Use requires a separate receiver-led
355
+ * negotiation that is intentionally outside this rollout.
356
+ */
357
+ export const SYNC_CAPABILITY_REPLICATION_INFO_V2_DECODE = 1 << 1;
358
+
351
359
  /**
352
360
  * One-shot capability advertisement, sent to a peer when it (or we) subscribe
353
- * to the program topic and `sync.rawExchangeHeads` is enabled. Peers that do
354
- * not know this message drop it as an unknown variant; peers that never
355
- * advertise keep receiving the plain `ExchangeHeadsMessage` path.
361
+ * to the program topic. Peers that do not know this message drop it as an
362
+ * unknown variant. Each feature still requires its explicit bit.
356
363
  */
357
364
  @variant([0, 10])
358
365
  export class SyncCapabilitiesMessage extends TransportMessage {
package/src/index.ts CHANGED
@@ -154,6 +154,7 @@ import {
154
154
  ResponseIPrune,
155
155
  ResponseIPruneV2,
156
156
  SYNC_CAPABILITY_RAW_EXCHANGE_HEADS,
157
+ SYNC_CAPABILITY_REPLICATION_INFO_V2_DECODE,
157
158
  StashBackedRawExchangeHeadsMessage,
158
159
  SyncCapabilitiesMessage,
159
160
  collectRawExchangeHeadSendPlan,
@@ -261,6 +262,7 @@ import {
261
262
  StoppedReplicating,
262
263
  decodeReplicas,
263
264
  encodeReplicas,
265
+ isReplicationInfoV2Message,
264
266
  maxReplicas,
265
267
  } from "./replication.js";
266
268
  import { ReplicatorLivenessMonitor } from "./replicator-liveness.js";
@@ -17124,6 +17126,13 @@ export class SharedLog<
17124
17126
  msg: TransportMessage,
17125
17127
  context: RequestContext,
17126
17128
  ): Promise<void> {
17129
+ // Decode-first only: capability advertisement is not permission to use
17130
+ // V2. Drop every unsolicited V2 envelope before even entering the shared
17131
+ // receive envelope, so durable poison checks, leases, liveness, ordering
17132
+ // watermarks, replication ranges and cleanup side effects cannot observe it.
17133
+ if (isReplicationInfoV2Message(msg)) {
17134
+ return;
17135
+ }
17127
17136
  const stashBackedRawMessage = isStashBackedRawExchangeHeadsMessage(msg)
17128
17137
  ? msg
17129
17138
  : undefined;
@@ -22708,27 +22717,30 @@ export class SharedLog<
22708
22717
  this._liveness.markReplicatorActivity(peerHash);
22709
22718
  this._peerSessions.markOpen(peerHash, expectedSubscriptionEpoch);
22710
22719
 
22711
- if (this._logProperties?.sync?.rawExchangeHeads === true) {
22712
- // One-shot capability advertisement so live append gossip can pick
22713
- // the raw exchange-heads path for this peer without a per-request
22714
- // round trip. Peers that do not know the message drop it.
22715
- this.rpc
22716
- .send(
22717
- new SyncCapabilitiesMessage({
22718
- capabilities: SYNC_CAPABILITY_RAW_EXCHANGE_HEADS,
22719
- }),
22720
- {
22721
- mode: new SilentDelivery({ redundancy: 1, to: [publicKey] }),
22722
- signal: replicationLifecycleController.signal,
22723
- },
22724
- )
22725
- .catch((error) =>
22726
- this.handleReplicationLifecycleSendError(
22727
- error,
22728
- replicationLifecycleController,
22729
- ),
22730
- );
22731
- }
22720
+ // Decode support is advertised independently from use permission. Every
22721
+ // replication-info send below and in the announcement coordinator remains
22722
+ // on the legacy wire format until a later receiver-led negotiation exists.
22723
+ const receiveCapabilities =
22724
+ SYNC_CAPABILITY_REPLICATION_INFO_V2_DECODE |
22725
+ (this._logProperties?.sync?.rawExchangeHeads === true
22726
+ ? SYNC_CAPABILITY_RAW_EXCHANGE_HEADS
22727
+ : 0);
22728
+ this.rpc
22729
+ .send(
22730
+ new SyncCapabilitiesMessage({
22731
+ capabilities: receiveCapabilities,
22732
+ }),
22733
+ {
22734
+ mode: new SilentDelivery({ redundancy: 1, to: [publicKey] }),
22735
+ signal: replicationLifecycleController.signal,
22736
+ },
22737
+ )
22738
+ .catch((error) =>
22739
+ this.handleReplicationLifecycleSendError(
22740
+ error,
22741
+ replicationLifecycleController,
22742
+ ),
22743
+ );
22732
22744
 
22733
22745
  let replicationSegments: ReplicationRangeIndexable<R>[];
22734
22746
  try {
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  deserialize,
3
3
  field,
4
+ fixedArray,
4
5
  option,
5
6
  serialize,
6
7
  variant,
@@ -124,6 +125,108 @@ export class ReplicationPingMessage extends TransportMessage {
124
125
  }
125
126
  }
126
127
 
128
+ /**
129
+ * Decode-first replication-info V2 messages. This rollout only registers and
130
+ * advertises the final wire schemas; it never sends or applies these messages.
131
+ * A later negotiated phase must bind the signed transport session and an
132
+ * outstanding receiver challenge before any V2 payload is used.
133
+ */
134
+ @variant([1, 6])
135
+ export class FullReplicationInfoV2Message extends TransportMessage {
136
+ @field({ type: fixedArray("u8", 32) })
137
+ receiverChallenge: Uint8Array;
138
+
139
+ @field({ type: fixedArray("u8", 32) })
140
+ senderEpoch: Uint8Array;
141
+
142
+ @field({ type: "u64" })
143
+ sequence: bigint;
144
+
145
+ @field({ type: vec(ReplicationRangeMessage) })
146
+ segments: ReplicationRangeMessage<any>[];
147
+
148
+ constructor(properties: {
149
+ receiverChallenge: Uint8Array;
150
+ senderEpoch: Uint8Array;
151
+ sequence: bigint;
152
+ segments: ReplicationRangeMessage<any>[];
153
+ }) {
154
+ super();
155
+ this.receiverChallenge = properties.receiverChallenge;
156
+ this.senderEpoch = properties.senderEpoch;
157
+ this.sequence = properties.sequence;
158
+ this.segments = properties.segments;
159
+ }
160
+ }
161
+
162
+ @variant([1, 7])
163
+ export class AddedReplicationInfoV2Message extends TransportMessage {
164
+ @field({ type: fixedArray("u8", 32) })
165
+ receiverChallenge: Uint8Array;
166
+
167
+ @field({ type: fixedArray("u8", 32) })
168
+ senderEpoch: Uint8Array;
169
+
170
+ @field({ type: "u64" })
171
+ sequence: bigint;
172
+
173
+ @field({ type: vec(ReplicationRangeMessage) })
174
+ segments: ReplicationRangeMessage<any>[];
175
+
176
+ constructor(properties: {
177
+ receiverChallenge: Uint8Array;
178
+ senderEpoch: Uint8Array;
179
+ sequence: bigint;
180
+ segments: ReplicationRangeMessage<any>[];
181
+ }) {
182
+ super();
183
+ this.receiverChallenge = properties.receiverChallenge;
184
+ this.senderEpoch = properties.senderEpoch;
185
+ this.sequence = properties.sequence;
186
+ this.segments = properties.segments;
187
+ }
188
+ }
189
+
190
+ @variant([1, 8])
191
+ export class StoppedReplicationInfoV2Message extends TransportMessage {
192
+ @field({ type: fixedArray("u8", 32) })
193
+ receiverChallenge: Uint8Array;
194
+
195
+ @field({ type: fixedArray("u8", 32) })
196
+ senderEpoch: Uint8Array;
197
+
198
+ @field({ type: "u64" })
199
+ sequence: bigint;
200
+
201
+ @field({ type: vec(Uint8Array) })
202
+ segmentIds: Uint8Array[];
203
+
204
+ constructor(properties: {
205
+ receiverChallenge: Uint8Array;
206
+ senderEpoch: Uint8Array;
207
+ sequence: bigint;
208
+ segmentIds: Uint8Array[];
209
+ }) {
210
+ super();
211
+ this.receiverChallenge = properties.receiverChallenge;
212
+ this.senderEpoch = properties.senderEpoch;
213
+ this.sequence = properties.sequence;
214
+ this.segmentIds = properties.segmentIds;
215
+ }
216
+ }
217
+
218
+ export type ReplicationInfoV2Message =
219
+ | FullReplicationInfoV2Message
220
+ | AddedReplicationInfoV2Message
221
+ | StoppedReplicationInfoV2Message;
222
+
223
+ export const isReplicationInfoV2Message = (
224
+ message: TransportMessage,
225
+ ): message is ReplicationInfoV2Message =>
226
+ message instanceof FullReplicationInfoV2Message ||
227
+ message instanceof AddedReplicationInfoV2Message ||
228
+ message instanceof StoppedReplicationInfoV2Message;
229
+
127
230
  /*
128
231
  @variant(1)
129
232
  export class RelativeMinReplicas extends MinReplicas {