@optimystic/db-p2p 0.22.0 → 0.24.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.
- package/dist/src/cluster/client.d.ts +10 -0
- package/dist/src/cluster/client.d.ts.map +1 -1
- package/dist/src/cluster/client.js +30 -1
- package/dist/src/cluster/client.js.map +1 -1
- package/dist/src/cluster/cluster-repo.d.ts +39 -14
- package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
- package/dist/src/cluster/cluster-repo.js +226 -119
- package/dist/src/cluster/cluster-repo.js.map +1 -1
- package/dist/src/cluster/service.d.ts +32 -1
- package/dist/src/cluster/service.d.ts.map +1 -1
- package/dist/src/cluster/service.js +43 -2
- package/dist/src/cluster/service.js.map +1 -1
- package/dist/src/cohort-topic/stream-util.d.ts +22 -6
- package/dist/src/cohort-topic/stream-util.d.ts.map +1 -1
- package/dist/src/cohort-topic/stream-util.js +56 -10
- package/dist/src/cohort-topic/stream-util.js.map +1 -1
- package/dist/src/dispute/dispute-service.d.ts.map +1 -1
- package/dist/src/dispute/dispute-service.js +9 -3
- package/dist/src/dispute/dispute-service.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p-key-network.d.ts +88 -2
- package/dist/src/libp2p-key-network.d.ts.map +1 -1
- package/dist/src/libp2p-key-network.js +134 -28
- package/dist/src/libp2p-key-network.js.map +1 -1
- package/dist/src/libp2p-node-base.d.ts.map +1 -1
- package/dist/src/libp2p-node-base.js +25 -1
- package/dist/src/libp2p-node-base.js.map +1 -1
- package/dist/src/logger.d.ts +17 -1
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +19 -2
- package/dist/src/logger.js.map +1 -1
- package/dist/src/owned-block-seed.d.ts +6 -3
- package/dist/src/owned-block-seed.d.ts.map +1 -1
- package/dist/src/owned-block-seed.js +16 -3
- package/dist/src/owned-block-seed.js.map +1 -1
- package/dist/src/peer-address-book.d.ts +72 -0
- package/dist/src/peer-address-book.d.ts.map +1 -0
- package/dist/src/peer-address-book.js +123 -0
- package/dist/src/peer-address-book.js.map +1 -0
- package/dist/src/repo/client.d.ts.map +1 -1
- package/dist/src/repo/client.js +11 -2
- package/dist/src/repo/client.js.map +1 -1
- package/dist/src/repo/cluster-coordinator.d.ts +30 -0
- package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
- package/dist/src/repo/cluster-coordinator.js +95 -3
- package/dist/src/repo/cluster-coordinator.js.map +1 -1
- package/dist/src/repo/coordinator-repo.d.ts +62 -9
- package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
- package/dist/src/repo/coordinator-repo.js +242 -73
- package/dist/src/repo/coordinator-repo.js.map +1 -1
- package/dist/src/rn.d.ts +3 -0
- package/dist/src/rn.d.ts.map +1 -1
- package/dist/src/rn.js +3 -0
- package/dist/src/rn.js.map +1 -1
- package/dist/src/storage/cached-raw-storage.d.ts +83 -0
- package/dist/src/storage/cached-raw-storage.d.ts.map +1 -0
- package/dist/src/storage/cached-raw-storage.js +152 -0
- package/dist/src/storage/cached-raw-storage.js.map +1 -0
- package/dist/src/storage/cached-store-driver.d.ts +186 -0
- package/dist/src/storage/cached-store-driver.d.ts.map +1 -0
- package/dist/src/storage/cached-store-driver.js +775 -0
- package/dist/src/storage/cached-store-driver.js.map +1 -0
- package/dist/src/storage/i-raw-storage.d.ts +12 -5
- package/dist/src/storage/i-raw-storage.d.ts.map +1 -1
- package/dist/src/storage/shared-cache-pool.d.ts +234 -0
- package/dist/src/storage/shared-cache-pool.d.ts.map +1 -0
- package/dist/src/storage/shared-cache-pool.js +354 -0
- package/dist/src/storage/shared-cache-pool.js.map +1 -0
- package/dist/src/testing/raw-storage-conformance.d.ts +2 -1
- package/dist/src/testing/raw-storage-conformance.d.ts.map +1 -1
- package/dist/src/testing/raw-storage-conformance.js +35 -2
- package/dist/src/testing/raw-storage-conformance.js.map +1 -1
- package/package.json +3 -3
- package/readme.md +668 -668
- package/src/cluster/block-transfer.ts +424 -424
- package/src/cluster/client.ts +119 -88
- package/src/cluster/cluster-error.ts +64 -64
- package/src/cluster/cluster-policy.ts +203 -203
- package/src/cluster/cluster-repo.ts +242 -122
- package/src/cluster/cluster-size-coupling.ts +45 -45
- package/src/cluster/commit-cert.ts +139 -139
- package/src/cluster/i-transaction-state-store.ts +43 -43
- package/src/cluster/memory-transaction-state-store.ts +56 -56
- package/src/cluster/peer-key-binding.ts +37 -37
- package/src/cluster/persistent-transaction-state-store.ts +92 -92
- package/src/cluster/quorum-restore.ts +223 -223
- package/src/cluster/reconcile-block.ts +203 -203
- package/src/cluster/service.ts +293 -241
- package/src/cluster/supermajority-coupling.ts +37 -37
- package/src/cohort-topic/bootstrap-evidence-builder.ts +122 -122
- package/src/cohort-topic/bootstrap-evidence-verifiers.ts +132 -132
- package/src/cohort-topic/bootstrap-parent-reference.ts +159 -159
- package/src/cohort-topic/change-bridge.ts +109 -109
- package/src/cohort-topic/cohort-gossip-driver.ts +231 -231
- package/src/cohort-topic/cohort-gossip-transport.ts +84 -84
- package/src/cohort-topic/fret-trust-anchor.ts +153 -153
- package/src/cohort-topic/host.ts +2901 -2901
- package/src/cohort-topic/index.ts +13 -13
- package/src/cohort-topic/membership-publish-sink.ts +20 -20
- package/src/cohort-topic/membership-source.ts +68 -68
- package/src/cohort-topic/peer-codec.ts +31 -31
- package/src/cohort-topic/peer-sig.ts +86 -86
- package/src/cohort-topic/protocols.ts +71 -71
- package/src/cohort-topic/reactivity-membership-gate.ts +77 -77
- package/src/cohort-topic/size-estimator.ts +16 -16
- package/src/cohort-topic/stream-util.ts +135 -87
- package/src/cohort-topic/threshold-crypto.ts +239 -239
- package/src/cohort-topic/topic-router.ts +77 -77
- package/src/dispute/arbitrator-selection.ts +138 -138
- package/src/dispute/cascade.ts +524 -524
- package/src/dispute/dispute-service.ts +11 -5
- package/src/dispute/invalidation.ts +625 -625
- package/src/inbound-authorization.ts +190 -190
- package/src/index.ts +52 -49
- package/src/libp2p-key-network.ts +1120 -990
- package/src/libp2p-node-base.ts +1675 -1651
- package/src/libp2p-node-rn.ts +30 -30
- package/src/libp2p-node.ts +36 -36
- package/src/logger.ts +19 -2
- package/src/matchmaking/aggregate-counts.ts +104 -104
- package/src/matchmaking/index.ts +20 -20
- package/src/matchmaking/module.ts +363 -363
- package/src/matchmaking/protocols.ts +51 -51
- package/src/matchmaking/provider-manager.ts +95 -95
- package/src/matchmaking/query-handler.ts +88 -88
- package/src/matchmaking/query-transport.ts +492 -492
- package/src/matchmaking/seeker-manager.ts +64 -64
- package/src/matchmaking/seeker-walk-client.ts +293 -293
- package/src/matchmaking/traffic-validation.ts +195 -195
- package/src/optimystic-node.ts +36 -36
- package/src/owned-block-seed.ts +53 -40
- package/src/peer-address-book.ts +149 -0
- package/src/protocol-limits.ts +33 -33
- package/src/reactivity/forwarder-host.ts +438 -438
- package/src/reactivity/index.ts +19 -19
- package/src/reactivity/notify-transport.ts +144 -144
- package/src/reactivity/origination-manager.ts +192 -192
- package/src/reactivity/protocols.ts +61 -61
- package/src/reactivity/push-state-gossip.ts +291 -291
- package/src/reactivity/recover-transport.ts +408 -408
- package/src/reactivity/rotation-rereg-scheduler.ts +256 -256
- package/src/reactivity/subscriber-registry.ts +96 -96
- package/src/reactivity/subscription-manager.ts +450 -450
- package/src/reactivity/topic-bytes.ts +37 -37
- package/src/repo/client.ts +12 -2
- package/src/repo/cluster-coordinator.ts +99 -3
- package/src/repo/coordinator-repo.ts +281 -74
- package/src/repo/types.ts +7 -7
- package/src/rn.ts +39 -36
- package/src/rpc-deadline.ts +45 -45
- package/src/storage/arachnode-partition.ts +74 -74
- package/src/storage/cached-raw-storage.ts +180 -0
- package/src/storage/cached-store-driver.ts +859 -0
- package/src/storage/i-kv-store.ts +8 -8
- package/src/storage/i-raw-storage.ts +12 -5
- package/src/storage/kv-raw-storage.ts +135 -135
- package/src/storage/memory-kv-store.ts +28 -28
- package/src/storage/memory-storage.ts +25 -25
- package/src/storage/memory-store-driver.ts +157 -157
- package/src/storage/raw-store-codec.ts +42 -42
- package/src/storage/raw-store-driver.ts +80 -80
- package/src/storage/ring-selector.ts +317 -317
- package/src/storage/ring-shift-coordinator.ts +271 -271
- package/src/storage/shared-cache-pool.ts +452 -0
- package/src/storage/storage-repo.ts +1014 -1014
- package/src/testing/cohort-topic-mesh-harness.ts +663 -663
- package/src/testing/index.ts +8 -8
- package/src/testing/matchmaking-mesh-harness.ts +475 -475
- package/src/testing/raw-storage-conformance.ts +453 -417
- package/src/testing/reactivity-mesh-harness.ts +922 -922
- package/dist/src/storage/restoration-coordinator-v2.d.ts +0 -67
- package/dist/src/storage/restoration-coordinator-v2.d.ts.map +0 -1
- package/dist/src/storage/restoration-coordinator-v2.js +0 -172
- package/dist/src/storage/restoration-coordinator-v2.js.map +0 -1
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Matchmaking — seeker manager (db-p2p, wires to the cohort-topic substrate).
|
|
3
|
-
*
|
|
4
|
-
* Registers a db-core {@link MatchmakingSeeker} at cohort-topic tier **T2 (functional)** with a short
|
|
5
|
-
* TTL (`seeker_ttl`, default 10 s — `docs/matchmaking.md` §Seeker query). The seeker registers
|
|
6
|
-
* **briefly** so other seekers can find it (collective assembly) and the cohort sees active demand.
|
|
7
|
-
*
|
|
8
|
-
* By design this manager does **not** renew by default: the cohort-topic service does not auto-ping
|
|
9
|
-
* (renewal is caller-driven), so simply not calling renew lets the registration age out by TTL. This
|
|
10
|
-
* makes seeker TTL eviction directly observable — the property this ticket proves. The `QueryV1`
|
|
11
|
-
* issuance, filter evaluation, and hang-out decision (which would keep a hanging-out seeker's
|
|
12
|
-
* registration alive via renewals) land in `matchmaking-query-filter-hangout`.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { Tier, SEEKER_TTL_MS, type CohortTopicService, type MatchmakingSeeker, type RegistrationHandle } from "@optimystic/db-core";
|
|
16
|
-
|
|
17
|
-
/** Construction inputs for a {@link MatchmakingSeekerManager}. */
|
|
18
|
-
export interface MatchmakingSeekerManagerOptions {
|
|
19
|
-
/** Participant-facing cohort-topic substrate API. */
|
|
20
|
-
readonly service: CohortTopicService;
|
|
21
|
-
/** The seeker state/decision object this manager registers. */
|
|
22
|
-
readonly seeker: MatchmakingSeeker;
|
|
23
|
-
/** Seeker TTL (ms). Default {@link SEEKER_TTL_MS} (10 s). */
|
|
24
|
-
readonly ttlMs?: number;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/** Wires one matchmaking seeker's brief registration to the cohort-topic substrate at tier T2. */
|
|
28
|
-
export class MatchmakingSeekerManager {
|
|
29
|
-
private readonly service: CohortTopicService;
|
|
30
|
-
private readonly seeker: MatchmakingSeeker;
|
|
31
|
-
private readonly ttlMs: number;
|
|
32
|
-
private handle?: RegistrationHandle;
|
|
33
|
-
|
|
34
|
-
constructor(options: MatchmakingSeekerManagerOptions) {
|
|
35
|
-
this.service = options.service;
|
|
36
|
-
this.seeker = options.seeker;
|
|
37
|
-
this.ttlMs = options.ttlMs ?? SEEKER_TTL_MS;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** The live registration handle, or `undefined` before {@link register}. */
|
|
41
|
-
get registration(): RegistrationHandle | undefined {
|
|
42
|
-
return this.handle;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** Register the seeker briefly at tier T2 with the short seeker TTL; no renewal is started. */
|
|
46
|
-
async register(): Promise<RegistrationHandle> {
|
|
47
|
-
const appPayload = await this.seeker.appPayloadBytes();
|
|
48
|
-
this.handle = await this.service.register({
|
|
49
|
-
topicId: this.seeker.topicId,
|
|
50
|
-
tier: Tier.T2,
|
|
51
|
-
appPayload,
|
|
52
|
-
ttl: this.ttlMs,
|
|
53
|
-
});
|
|
54
|
-
return this.handle;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/** Drop the seeker registration: stop renewing and send a best-effort signed tombstone so the
|
|
58
|
-
* cohort frees the record immediately (TTL expiry is the fallback if the primary is unreachable). */
|
|
59
|
-
async withdraw(): Promise<void> {
|
|
60
|
-
if (this.handle !== undefined) {
|
|
61
|
-
await this.service.withdraw(this.handle);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Matchmaking — seeker manager (db-p2p, wires to the cohort-topic substrate).
|
|
3
|
+
*
|
|
4
|
+
* Registers a db-core {@link MatchmakingSeeker} at cohort-topic tier **T2 (functional)** with a short
|
|
5
|
+
* TTL (`seeker_ttl`, default 10 s — `docs/matchmaking.md` §Seeker query). The seeker registers
|
|
6
|
+
* **briefly** so other seekers can find it (collective assembly) and the cohort sees active demand.
|
|
7
|
+
*
|
|
8
|
+
* By design this manager does **not** renew by default: the cohort-topic service does not auto-ping
|
|
9
|
+
* (renewal is caller-driven), so simply not calling renew lets the registration age out by TTL. This
|
|
10
|
+
* makes seeker TTL eviction directly observable — the property this ticket proves. The `QueryV1`
|
|
11
|
+
* issuance, filter evaluation, and hang-out decision (which would keep a hanging-out seeker's
|
|
12
|
+
* registration alive via renewals) land in `matchmaking-query-filter-hangout`.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { Tier, SEEKER_TTL_MS, type CohortTopicService, type MatchmakingSeeker, type RegistrationHandle } from "@optimystic/db-core";
|
|
16
|
+
|
|
17
|
+
/** Construction inputs for a {@link MatchmakingSeekerManager}. */
|
|
18
|
+
export interface MatchmakingSeekerManagerOptions {
|
|
19
|
+
/** Participant-facing cohort-topic substrate API. */
|
|
20
|
+
readonly service: CohortTopicService;
|
|
21
|
+
/** The seeker state/decision object this manager registers. */
|
|
22
|
+
readonly seeker: MatchmakingSeeker;
|
|
23
|
+
/** Seeker TTL (ms). Default {@link SEEKER_TTL_MS} (10 s). */
|
|
24
|
+
readonly ttlMs?: number;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Wires one matchmaking seeker's brief registration to the cohort-topic substrate at tier T2. */
|
|
28
|
+
export class MatchmakingSeekerManager {
|
|
29
|
+
private readonly service: CohortTopicService;
|
|
30
|
+
private readonly seeker: MatchmakingSeeker;
|
|
31
|
+
private readonly ttlMs: number;
|
|
32
|
+
private handle?: RegistrationHandle;
|
|
33
|
+
|
|
34
|
+
constructor(options: MatchmakingSeekerManagerOptions) {
|
|
35
|
+
this.service = options.service;
|
|
36
|
+
this.seeker = options.seeker;
|
|
37
|
+
this.ttlMs = options.ttlMs ?? SEEKER_TTL_MS;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** The live registration handle, or `undefined` before {@link register}. */
|
|
41
|
+
get registration(): RegistrationHandle | undefined {
|
|
42
|
+
return this.handle;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Register the seeker briefly at tier T2 with the short seeker TTL; no renewal is started. */
|
|
46
|
+
async register(): Promise<RegistrationHandle> {
|
|
47
|
+
const appPayload = await this.seeker.appPayloadBytes();
|
|
48
|
+
this.handle = await this.service.register({
|
|
49
|
+
topicId: this.seeker.topicId,
|
|
50
|
+
tier: Tier.T2,
|
|
51
|
+
appPayload,
|
|
52
|
+
ttl: this.ttlMs,
|
|
53
|
+
});
|
|
54
|
+
return this.handle;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Drop the seeker registration: stop renewing and send a best-effort signed tombstone so the
|
|
58
|
+
* cohort frees the record immediately (TTL expiry is the fallback if the primary is unreachable). */
|
|
59
|
+
async withdraw(): Promise<void> {
|
|
60
|
+
if (this.handle !== undefined) {
|
|
61
|
+
await this.service.withdraw(this.handle);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|