@optimystic/db-p2p 1.0.0-beta.3 → 1.0.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/block-transfer-service.d.ts +73 -1
- package/dist/src/cluster/block-transfer-service.d.ts.map +1 -1
- package/dist/src/cluster/block-transfer-service.js +70 -3
- package/dist/src/cluster/block-transfer-service.js.map +1 -1
- package/dist/src/cluster/block-transfer.d.ts +16 -1
- package/dist/src/cluster/block-transfer.d.ts.map +1 -1
- package/dist/src/cluster/block-transfer.js +73 -72
- package/dist/src/cluster/block-transfer.js.map +1 -1
- package/dist/src/cluster/client.d.ts +4 -6
- package/dist/src/cluster/client.d.ts.map +1 -1
- package/dist/src/cluster/client.js +8 -13
- package/dist/src/cluster/client.js.map +1 -1
- package/dist/src/cluster/cluster-policy.d.ts +2 -1
- package/dist/src/cluster/cluster-policy.d.ts.map +1 -1
- package/dist/src/cluster/cluster-policy.js.map +1 -1
- package/dist/src/cluster/cluster-repo.d.ts +126 -6
- package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
- package/dist/src/cluster/cluster-repo.js +378 -50
- package/dist/src/cluster/cluster-repo.js.map +1 -1
- package/dist/src/cluster/commit-proof.js +2 -2
- package/dist/src/cluster/race-resolution.d.ts +51 -7
- package/dist/src/cluster/race-resolution.d.ts.map +1 -1
- package/dist/src/cluster/race-resolution.js +71 -7
- package/dist/src/cluster/race-resolution.js.map +1 -1
- package/dist/src/cluster/rebalance-monitor.d.ts +67 -5
- package/dist/src/cluster/rebalance-monitor.d.ts.map +1 -1
- package/dist/src/cluster/rebalance-monitor.js +120 -26
- package/dist/src/cluster/rebalance-monitor.js.map +1 -1
- package/dist/src/cluster/spread-on-churn.d.ts.map +1 -1
- package/dist/src/cluster/spread-on-churn.js +34 -47
- package/dist/src/cluster/spread-on-churn.js.map +1 -1
- package/dist/src/cohort-topic/host.d.ts.map +1 -1
- package/dist/src/cohort-topic/host.js +8 -6
- package/dist/src/cohort-topic/host.js.map +1 -1
- package/dist/src/cohort-topic/membership-source.js +1 -1
- package/dist/src/cohort-topic/membership-source.js.map +1 -1
- package/dist/src/cohort-topic/peer-codec.d.ts.map +1 -1
- package/dist/src/cohort-topic/peer-codec.js +5 -2
- package/dist/src/cohort-topic/peer-codec.js.map +1 -1
- package/dist/src/cohort-topic/stream-util.d.ts +24 -3
- package/dist/src/cohort-topic/stream-util.d.ts.map +1 -1
- package/dist/src/cohort-topic/stream-util.js +36 -3
- package/dist/src/cohort-topic/stream-util.js.map +1 -1
- package/dist/src/cohort-topic/topic-router.d.ts +9 -0
- package/dist/src/cohort-topic/topic-router.d.ts.map +1 -1
- package/dist/src/cohort-topic/topic-router.js +12 -2
- package/dist/src/cohort-topic/topic-router.js.map +1 -1
- package/dist/src/dispute/client.d.ts.map +1 -1
- package/dist/src/dispute/client.js +15 -3
- package/dist/src/dispute/client.js.map +1 -1
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p-key-network.d.ts +78 -17
- package/dist/src/libp2p-key-network.d.ts.map +1 -1
- package/dist/src/libp2p-key-network.js +234 -147
- package/dist/src/libp2p-key-network.js.map +1 -1
- package/dist/src/libp2p-node-base.d.ts +35 -1
- package/dist/src/libp2p-node-base.d.ts.map +1 -1
- package/dist/src/libp2p-node-base.js +151 -26
- package/dist/src/libp2p-node-base.js.map +1 -1
- package/dist/src/libp2p-node-rn.d.ts +2 -2
- package/dist/src/libp2p-node-rn.d.ts.map +1 -1
- package/dist/src/libp2p-node-rn.js.map +1 -1
- package/dist/src/libp2p-node.d.ts +2 -2
- package/dist/src/libp2p-node.d.ts.map +1 -1
- package/dist/src/libp2p-node.js.map +1 -1
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +6 -1
- package/dist/src/logger.js.map +1 -1
- package/dist/src/matchmaking/query-transport.d.ts +3 -4
- package/dist/src/matchmaking/query-transport.d.ts.map +1 -1
- package/dist/src/matchmaking/query-transport.js +9 -9
- package/dist/src/matchmaking/query-transport.js.map +1 -1
- package/dist/src/network/network-manager-service.d.ts +10 -5
- package/dist/src/network/network-manager-service.d.ts.map +1 -1
- package/dist/src/network/network-manager-service.js +11 -2
- package/dist/src/network/network-manager-service.js.map +1 -1
- package/dist/src/network/relay-reservation.d.ts +170 -0
- package/dist/src/network/relay-reservation.d.ts.map +1 -0
- package/dist/src/network/relay-reservation.js +527 -0
- package/dist/src/network/relay-reservation.js.map +1 -0
- package/dist/src/pend-validation.d.ts +3 -2
- package/dist/src/pend-validation.d.ts.map +1 -1
- package/dist/src/pend-validation.js +3 -2
- package/dist/src/pend-validation.js.map +1 -1
- package/dist/src/protocol-client.d.ts +8 -1
- package/dist/src/protocol-client.d.ts.map +1 -1
- package/dist/src/protocol-client.js +11 -0
- package/dist/src/protocol-client.js.map +1 -1
- package/dist/src/reactivity/forwarder-host.d.ts +2 -1
- package/dist/src/reactivity/forwarder-host.d.ts.map +1 -1
- package/dist/src/reactivity/forwarder-host.js +2 -1
- package/dist/src/reactivity/forwarder-host.js.map +1 -1
- package/dist/src/reactivity/origination-manager.d.ts +3 -3
- package/dist/src/reactivity/origination-manager.js +3 -3
- package/dist/src/reactivity/recover-transport.d.ts +22 -14
- package/dist/src/reactivity/recover-transport.d.ts.map +1 -1
- package/dist/src/reactivity/recover-transport.js +32 -19
- package/dist/src/reactivity/recover-transport.js.map +1 -1
- package/dist/src/reactivity/subscription-manager.d.ts +2 -2
- package/dist/src/reactivity/topic-bytes.d.ts +6 -7
- package/dist/src/reactivity/topic-bytes.d.ts.map +1 -1
- package/dist/src/reactivity/topic-bytes.js +8 -9
- package/dist/src/reactivity/topic-bytes.js.map +1 -1
- package/dist/src/repo/client.d.ts +5 -2
- package/dist/src/repo/client.d.ts.map +1 -1
- package/dist/src/repo/client.js +49 -40
- package/dist/src/repo/client.js.map +1 -1
- package/dist/src/repo/cluster-coordinator.d.ts +77 -5
- package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
- package/dist/src/repo/cluster-coordinator.js +131 -20
- package/dist/src/repo/cluster-coordinator.js.map +1 -1
- package/dist/src/repo/coordinator-repo.d.ts +238 -122
- package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
- package/dist/src/repo/coordinator-repo.js +625 -472
- package/dist/src/repo/coordinator-repo.js.map +1 -1
- package/dist/src/repo/i-under-replication-ledger.d.ts +87 -0
- package/dist/src/repo/i-under-replication-ledger.d.ts.map +1 -0
- package/dist/src/repo/i-under-replication-ledger.js +2 -0
- package/dist/src/repo/i-under-replication-ledger.js.map +1 -0
- package/dist/src/repo/kv-under-replication-ledger.d.ts +91 -0
- package/dist/src/repo/kv-under-replication-ledger.d.ts.map +1 -0
- package/dist/src/repo/kv-under-replication-ledger.js +287 -0
- package/dist/src/repo/kv-under-replication-ledger.js.map +1 -0
- package/dist/src/repo/responsibility.d.ts +37 -0
- package/dist/src/repo/responsibility.d.ts.map +1 -0
- package/dist/src/repo/responsibility.js +37 -0
- package/dist/src/repo/responsibility.js.map +1 -0
- package/dist/src/repo/service.d.ts +44 -15
- package/dist/src/repo/service.d.ts.map +1 -1
- package/dist/src/repo/service.js +64 -27
- package/dist/src/repo/service.js.map +1 -1
- package/dist/src/repo/stuck-reservation.d.ts +127 -0
- package/dist/src/repo/stuck-reservation.d.ts.map +1 -0
- package/dist/src/repo/stuck-reservation.js +179 -0
- package/dist/src/repo/stuck-reservation.js.map +1 -0
- package/dist/src/repo/under-replication-drain.d.ts +208 -0
- package/dist/src/repo/under-replication-drain.d.ts.map +1 -0
- package/dist/src/repo/under-replication-drain.js +461 -0
- package/dist/src/repo/under-replication-drain.js.map +1 -0
- package/dist/src/rn.d.ts +5 -0
- package/dist/src/rn.d.ts.map +1 -1
- package/dist/src/rn.js +5 -0
- package/dist/src/rn.js.map +1 -1
- package/dist/src/storage/block-latch.d.ts +3 -2
- package/dist/src/storage/block-latch.d.ts.map +1 -1
- package/dist/src/storage/block-latch.js +7 -4
- package/dist/src/storage/block-latch.js.map +1 -1
- package/dist/src/storage/block-storage.d.ts +45 -3
- package/dist/src/storage/block-storage.d.ts.map +1 -1
- package/dist/src/storage/block-storage.js +156 -9
- package/dist/src/storage/block-storage.js.map +1 -1
- package/dist/src/storage/i-block-storage.d.ts +57 -5
- package/dist/src/storage/i-block-storage.d.ts.map +1 -1
- package/dist/src/storage/i-block-storage.js.map +1 -1
- package/dist/src/storage/pending-claim.d.ts +167 -0
- package/dist/src/storage/pending-claim.d.ts.map +1 -0
- package/dist/src/storage/pending-claim.js +156 -0
- package/dist/src/storage/pending-claim.js.map +1 -0
- package/dist/src/storage/raw-store-codec.d.ts +13 -0
- package/dist/src/storage/raw-store-codec.d.ts.map +1 -1
- package/dist/src/storage/raw-store-codec.js +24 -3
- package/dist/src/storage/raw-store-codec.js.map +1 -1
- package/dist/src/storage/restoration-coordinator.d.ts.map +1 -1
- package/dist/src/storage/restoration-coordinator.js +2 -1
- package/dist/src/storage/restoration-coordinator.js.map +1 -1
- package/dist/src/storage/ring-shift-coordinator.d.ts.map +1 -1
- package/dist/src/storage/ring-shift-coordinator.js +3 -3
- package/dist/src/storage/ring-shift-coordinator.js.map +1 -1
- package/dist/src/storage/storage-repo.d.ts +122 -5
- package/dist/src/storage/storage-repo.d.ts.map +1 -1
- package/dist/src/storage/storage-repo.js +245 -68
- package/dist/src/storage/storage-repo.js.map +1 -1
- package/dist/src/storage/struct.d.ts +58 -0
- package/dist/src/storage/struct.d.ts.map +1 -1
- package/dist/src/testing/mesh-harness.d.ts +77 -11
- package/dist/src/testing/mesh-harness.d.ts.map +1 -1
- package/dist/src/testing/mesh-harness.js +226 -100
- package/dist/src/testing/mesh-harness.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +27 -3
- package/src/cluster/block-transfer-service.ts +132 -4
- package/src/cluster/block-transfer.ts +79 -84
- package/src/cluster/client.ts +115 -119
- package/src/cluster/cluster-policy.ts +2 -1
- package/src/cluster/cluster-repo.ts +422 -56
- package/src/cluster/commit-proof.ts +2 -2
- package/src/cluster/race-resolution.ts +76 -7
- package/src/cluster/rebalance-monitor.ts +677 -539
- package/src/cluster/spread-on-churn.ts +34 -54
- package/src/cohort-topic/host.ts +8 -6
- package/src/cohort-topic/membership-source.ts +1 -1
- package/src/cohort-topic/peer-codec.ts +34 -31
- package/src/cohort-topic/stream-util.ts +39 -4
- package/src/cohort-topic/topic-router.ts +12 -2
- package/src/dispute/client.ts +17 -7
- package/src/index.ts +64 -59
- package/src/libp2p-key-network.ts +1377 -1260
- package/src/libp2p-node-base.ts +186 -27
- package/src/libp2p-node-rn.ts +31 -30
- package/src/libp2p-node.ts +37 -36
- package/src/logger.ts +6 -1
- package/src/matchmaking/query-transport.ts +9 -9
- package/src/network/network-manager-service.ts +16 -5
- package/src/network/relay-reservation.ts +636 -0
- package/src/pend-validation.ts +3 -2
- package/src/protocol-client.ts +13 -1
- package/src/reactivity/forwarder-host.ts +2 -1
- package/src/reactivity/origination-manager.ts +3 -3
- package/src/reactivity/recover-transport.ts +39 -22
- package/src/reactivity/subscription-manager.ts +2 -2
- package/src/reactivity/topic-bytes.ts +35 -37
- package/src/repo/client.ts +172 -173
- package/src/repo/cluster-coordinator.ts +145 -19
- package/src/repo/coordinator-repo.ts +652 -505
- package/src/repo/i-under-replication-ledger.ts +89 -0
- package/src/repo/kv-under-replication-ledger.ts +302 -0
- package/src/repo/responsibility.ts +48 -0
- package/src/repo/service.ts +76 -39
- package/src/repo/stuck-reservation.ts +224 -0
- package/src/repo/under-replication-drain.ts +582 -0
- package/src/rn.ts +74 -69
- package/src/storage/block-latch.ts +7 -4
- package/src/storage/block-storage.ts +161 -10
- package/src/storage/i-block-storage.ts +60 -5
- package/src/storage/pending-claim.ts +200 -0
- package/src/storage/raw-store-codec.ts +26 -3
- package/src/storage/restoration-coordinator.ts +212 -211
- package/src/storage/ring-shift-coordinator.ts +271 -271
- package/src/storage/storage-repo.ts +280 -72
- package/src/storage/struct.ts +58 -0
- package/src/testing/mesh-harness.ts +293 -112
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { bytesToB64url, b64urlToBytes, encodeCohortMessage } from "@optimystic/db-core";
|
|
2
2
|
import { bytesToPeerId } from "./peer-codec.js";
|
|
3
|
-
import { requestResponse, DEFAULT_STREAM_MAX_BYTES } from "./stream-util.js";
|
|
3
|
+
import { requestResponse, requireReply, DEFAULT_STREAM_MAX_BYTES } from "./stream-util.js";
|
|
4
4
|
import { PROTOCOL_COHORT_REGISTER } from "./protocols.js";
|
|
5
5
|
/** A FRET `routeAct` result carrying a cohort reply. */
|
|
6
6
|
function isCommit(res) {
|
|
@@ -55,9 +55,19 @@ export class FretTopicRouter {
|
|
|
55
55
|
// and steps toward the root.
|
|
56
56
|
return encodeCohortMessage({ v: 1, result: "no_state" }, this.maxBytes);
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Dial `member`'s `/register` directly and return its encoded reply.
|
|
60
|
+
*
|
|
61
|
+
* The `/register` responder always writes a frame, so a no-result (zero-length) reply only comes from a
|
|
62
|
+
* non-conforming peer; it rejects with {@link NoResultReplyError}, reaching the caller exactly as a dial
|
|
63
|
+
* failure does (renewal counts a failed ping; the walk's direct dial propagates the rejection). db-core's {@link ITopicRouter.dialMember} port deliberately stays
|
|
64
|
+
* `Promise<Uint8Array>` rather than widening to `| undefined`: that would ripple through the walk and
|
|
65
|
+
* renewal decision logic for a state only a misbehaving peer can produce, so the decision is made here.
|
|
66
|
+
*/
|
|
58
67
|
async dialMember(member, activity) {
|
|
59
68
|
const peer = bytesToPeerId(member.id);
|
|
60
|
-
|
|
69
|
+
const reply = await requestResponse(this.node, peer, this.registerProtocol, activity, this.maxBytes);
|
|
70
|
+
return requireReply(reply, "cohort-topic register dial");
|
|
61
71
|
}
|
|
62
72
|
}
|
|
63
73
|
//# sourceMappingURL=topic-router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topic-router.js","sourceRoot":"","sources":["../../../src/cohort-topic/topic-router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGxF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"topic-router.js","sourceRoot":"","sources":["../../../src/cohort-topic/topic-router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGxF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,wBAAwB,EAA2B,MAAM,kBAAkB,CAAC;AACpH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,wDAAwD;AACxD,SAAS,QAAQ,CAAC,GAAiD;IAClE,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,mBAAmB,IAAI,GAAG,CAAC;AAC9E,CAAC;AAaD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,eAAe;IAME;IAA+B;IAL3C,gBAAgB,CAAS;IACzB,GAAG,CAAS;IACZ,QAAQ,CAAS;IACjB,KAAK,CAAe;IAErC,YAA6B,IAAY,EAAmB,IAAiB,EAAE,UAAkC,EAAE;QAAtF,SAAI,GAAJ,IAAI,CAAQ;QAAmB,SAAI,GAAJ,IAAI,CAAa;QAC5E,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,wBAAwB,CAAC;QAC7E,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,wBAAwB,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,GAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAc,EAAE,QAAoB,EAAE,IAAwC;QAC/F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAuB;YAC/B,CAAC,EAAE,CAAC;YACJ,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;YACvB,MAAM,EAAE,IAAI,CAAC,KAAK;YAClB,QAAQ,EAAE,IAAI,CAAC,OAAO;YACtB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;YACjC,cAAc,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;YAC9C,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,EAAE;SACb,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC7C,CAAC;QACD,+FAA+F;QAC/F,6BAA6B;QAC7B,OAAO,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,CAAC,MAAe,EAAE,QAAoB;QACrD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrG,OAAO,YAAY,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;IAC1D,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/dispute/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAoD,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE/G,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAkB,MAAM,YAAY,CAAC;AAEvG;;;GAGG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,MAAM;IAK9E,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa;IAIhG,2DAA2D;IACrD,aAAa,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/dispute/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAoD,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE/G,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAkB,MAAM,YAAY,CAAC;AAEvG;;;GAGG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,MAAM;IAK9E,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa;IAIhG,2DAA2D;IACrD,aAAa,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA2B9F,8CAA8C;IACxC,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAUhG"}
|
|
@@ -23,9 +23,21 @@ export class DisputeClient extends ProtocolClient {
|
|
|
23
23
|
// arbitrator" behavior. Also apply the default dial cap so a challenge to an
|
|
24
24
|
// unreachable arbitrator fails the dial fast even when no `timeoutMs` is given;
|
|
25
25
|
// this does not alter the response semantics (still bounded only by the signal).
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
//
|
|
27
|
+
// Explicit AbortController + timer rather than `AbortSignal.timeout`, which Hermes
|
|
28
|
+
// (React Native's JS engine) does not provide — same pattern as `dialRelay` in
|
|
29
|
+
// network/relay-reservation.ts. The timer is cleared on every exit path below so a
|
|
30
|
+
// finished call never holds a timer (and the node it references) alive.
|
|
31
|
+
const controller = timeoutMs ? new AbortController() : undefined;
|
|
32
|
+
const timer = controller ? setTimeout(() => controller.abort(), timeoutMs) : undefined;
|
|
33
|
+
try {
|
|
34
|
+
const response = await this.processMessage(message, this.protocol, { signal: controller?.signal, dialTimeoutMs: DEFAULT_DIAL_TIMEOUT_MS, maxDataLength: MAX_CONTROL_MESSAGE_BYTES });
|
|
35
|
+
return response.vote;
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
if (timer)
|
|
39
|
+
clearTimeout(timer);
|
|
40
|
+
}
|
|
29
41
|
}
|
|
30
42
|
/** Send a resolution to a peer (broadcast) */
|
|
31
43
|
async sendResolution(resolution, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/dispute/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAA2B,MAAM,oBAAoB,CAAC;AAC/G,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAGlE;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,cAAc;IAC/B,QAAQ,CAAS;IAElC,YAAY,MAAc,EAAE,WAAyB,EAAE,cAAuB;QAC7E,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,IAAI,SAAS,CAAC,GAAG,gBAAgB,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,WAAyB,EAAE,cAAuB;QAC/E,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,aAAa,CAAC,SAA2B,EAAE,SAAkB;QAClE,MAAM,OAAO,GAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACjE,gFAAgF;QAChF,0EAA0E;QAC1E,2EAA2E;QAC3E,6EAA6E;QAC7E,gFAAgF;QAChF,iFAAiF;QACjF,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/dispute/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAA2B,MAAM,oBAAoB,CAAC;AAC/G,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAGlE;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,cAAc;IAC/B,QAAQ,CAAS;IAElC,YAAY,MAAc,EAAE,WAAyB,EAAE,cAAuB;QAC7E,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,CAAC,cAAc,IAAI,SAAS,CAAC,GAAG,gBAAgB,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,WAAyB,EAAE,cAAuB;QAC/E,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,aAAa,CAAC,SAA2B,EAAE,SAAkB;QAClE,MAAM,OAAO,GAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACjE,gFAAgF;QAChF,0EAA0E;QAC1E,2EAA2E;QAC3E,6EAA6E;QAC7E,gFAAgF;QAChF,iFAAiF;QACjF,EAAE;QACF,mFAAmF;QACnF,+EAA+E;QAC/E,mFAAmF;QACnF,wEAAwE;QACxE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CACzC,OAAO,EACP,IAAI,CAAC,QAAQ,EACb,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,uBAAuB,EAAE,aAAa,EAAE,yBAAyB,EAAE,CAChH,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACtB,CAAC;gBAAS,CAAC;YACV,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,cAAc,CAAC,UAA6B,EAAE,OAA4B;QAC/E,MAAM,OAAO,GAAmB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;QACnE,4EAA4E;QAC5E,4EAA4E;QAC5E,MAAM,IAAI,CAAC,cAAc,CACxB,OAAO,EACP,IAAI,CAAC,QAAQ,EACb,EAAE,GAAG,uBAAuB,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,yBAAyB,EAAE,CACjF,CAAC;IACH,CAAC;CACD"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ export * from "./protocol-client.js";
|
|
|
14
14
|
export * from "./repo/client.js";
|
|
15
15
|
export * from "./repo/cluster-coordinator.js";
|
|
16
16
|
export * from "./repo/coordinator-repo.js";
|
|
17
|
+
export * from "./repo/i-under-replication-ledger.js";
|
|
18
|
+
export * from "./repo/kv-under-replication-ledger.js";
|
|
19
|
+
export * from "./repo/under-replication-drain.js";
|
|
20
|
+
export * from "./repo/responsibility.js";
|
|
17
21
|
export * from "./repo/served-repo-proxy.js";
|
|
18
22
|
export * from "./repo/service.js";
|
|
19
23
|
export * from "./storage/block-storage.js";
|
|
@@ -30,6 +34,7 @@ export * from "./storage/memory-storage.js";
|
|
|
30
34
|
export * from "./storage/i-block-storage.js";
|
|
31
35
|
export * from "./storage/i-raw-storage.js";
|
|
32
36
|
export * from "./storage/struct.js";
|
|
37
|
+
export * from "./storage/pending-claim.js";
|
|
33
38
|
export * from "./storage/block-archive.js";
|
|
34
39
|
export * from "./storage/storage-repo.js";
|
|
35
40
|
export * from "./storage/restoration-coordinator.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -14,6 +14,10 @@ export * from "./protocol-client.js";
|
|
|
14
14
|
export * from "./repo/client.js";
|
|
15
15
|
export * from "./repo/cluster-coordinator.js";
|
|
16
16
|
export * from "./repo/coordinator-repo.js";
|
|
17
|
+
export * from "./repo/i-under-replication-ledger.js";
|
|
18
|
+
export * from "./repo/kv-under-replication-ledger.js";
|
|
19
|
+
export * from "./repo/under-replication-drain.js";
|
|
20
|
+
export * from "./repo/responsibility.js";
|
|
17
21
|
export * from "./repo/served-repo-proxy.js";
|
|
18
22
|
export * from "./repo/service.js";
|
|
19
23
|
export * from "./storage/block-storage.js";
|
|
@@ -30,6 +34,7 @@ export * from "./storage/memory-storage.js";
|
|
|
30
34
|
export * from "./storage/i-block-storage.js";
|
|
31
35
|
export * from "./storage/i-raw-storage.js";
|
|
32
36
|
export * from "./storage/struct.js";
|
|
37
|
+
export * from "./storage/pending-claim.js";
|
|
33
38
|
export * from "./storage/block-archive.js";
|
|
34
39
|
export * from "./storage/storage-repo.js";
|
|
35
40
|
export * from "./storage/restoration-coordinator.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AbortOptions, Libp2p, PeerId, Stream } from "@libp2p/interface";
|
|
2
|
-
import type { ClusterPeers, CoordinatorIntent, FindCoordinatorOptions, IKeyNetwork, IPeerNetwork } from "@optimystic/db-core";
|
|
2
|
+
import type { ClusterPeers, CoordinatorIntent, FindCoordinatorOptions, IKeyNetwork, IPeerNetwork, RoutingKey } from "@optimystic/db-core";
|
|
3
3
|
import type { SerializedTable } from 'p2p-fret';
|
|
4
4
|
import type { IPeerReputation } from './reputation/types.js';
|
|
5
5
|
export type NetworkMode = 'forming' | 'joining';
|
|
@@ -263,7 +263,7 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
263
263
|
* and near-zero for a dial-only client; do not quote the headline figure at a profile that
|
|
264
264
|
* never pays it. Every
|
|
265
265
|
* `findCluster` builds a cluster record containing self's addresses, and every commit calls
|
|
266
|
-
* `findCluster` through `
|
|
266
|
+
* `findCluster` through `ClusterCoordinator.resolveCohort` — so a cold `apply schema` paid one NIC sweep per
|
|
267
267
|
* commit. On a solo node with zero peers that was ~13.8 ms per call and **49% of the whole
|
|
268
268
|
* apply** (issue #8); the addresses it recomputed were identical every time.
|
|
269
269
|
*
|
|
@@ -347,7 +347,7 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
347
347
|
/**
|
|
348
348
|
* The caller-independent half of eligibility: this peer is neither excluded by the caller
|
|
349
349
|
* nor banned by reputation. Shared by all three places `findCoordinator` narrows a candidate
|
|
350
|
-
* list — the
|
|
350
|
+
* list — the cohort tier, the connected-peer fallback, and the retry-futility input — so the
|
|
351
351
|
* futility test can never disagree with the tiers about who is pickable.
|
|
352
352
|
*
|
|
353
353
|
* NOTE: eligibility here is deliberately blind to self-dialability, so on a relay
|
|
@@ -390,7 +390,7 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
390
390
|
* `NetworkTransactor` (it writes back whatever `findCoordinator` returned, including
|
|
391
391
|
* self) and by `RepoClient`/`ClusterClient` on redirect responses.
|
|
392
392
|
*/
|
|
393
|
-
recordCoordinator(key:
|
|
393
|
+
recordCoordinator(key: RoutingKey, peerId: PeerId, ttlMs?: number): void;
|
|
394
394
|
/**
|
|
395
395
|
* Learn how to reach `peerId` from addresses carried by an application-level message
|
|
396
396
|
* (a cluster record's peer map, a redirect payload). See {@link mergePeerAddresses} for
|
|
@@ -398,6 +398,14 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
398
398
|
* protocol client dials through.
|
|
399
399
|
*/
|
|
400
400
|
recordPeerAddresses(peerId: PeerId, multiaddrs: string[]): void;
|
|
401
|
+
/**
|
|
402
|
+
* NOTE: a cached coordinator is trusted without re-deriving the key's cohort. A peer that
|
|
403
|
+
* has since LEFT the cohort (ring growth shifted the nearest set) is corrected on the next
|
|
404
|
+
* hop rather than here: the server-side responsibility check redirects to a current member
|
|
405
|
+
* (`RepoService.checkRedirect`, whose target overwrites this hint), and a peer that has gone
|
|
406
|
+
* away fails its dial and is excluded by the caller. Re-deriving the cohort on every cache
|
|
407
|
+
* hit would cost the same FRET walk and peerStore reads the cache exists to skip.
|
|
408
|
+
*/
|
|
401
409
|
private getCachedCoordinator;
|
|
402
410
|
/**
|
|
403
411
|
* Open a stream to `peerId` on `protocol` — reusing a live connection when we hold one, and
|
|
@@ -434,8 +442,7 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
434
442
|
*/
|
|
435
443
|
private assertNotSelfRelayOnly;
|
|
436
444
|
private getFret;
|
|
437
|
-
|
|
438
|
-
findCoordinator(key: Uint8Array, _options?: Partial<FindCoordinatorOptions>): Promise<PeerId>;
|
|
445
|
+
findCoordinator(key: RoutingKey, _options?: Partial<FindCoordinatorOptions>): Promise<PeerId>;
|
|
439
446
|
/**
|
|
440
447
|
* Connection-derived addresses for the cluster record, keyed by peer id.
|
|
441
448
|
*
|
|
@@ -445,7 +452,7 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
445
452
|
* rule has exactly one site.
|
|
446
453
|
*/
|
|
447
454
|
private getConnectedAddrsByPeer;
|
|
448
|
-
findCluster(key:
|
|
455
|
+
findCluster(key: RoutingKey): Promise<ClusterPeers>;
|
|
449
456
|
/**
|
|
450
457
|
* Look up the libp2p peerStore for known multiaddrs of the given peer ids.
|
|
451
458
|
* Returns a map from peer-id string to multiaddr strings — empty/missing
|
|
@@ -480,20 +487,74 @@ export declare class Libp2pKeyPeerNetwork implements IKeyNetwork, IPeerNetwork {
|
|
|
480
487
|
*/
|
|
481
488
|
private membershipOverfetch;
|
|
482
489
|
/**
|
|
483
|
-
*
|
|
484
|
-
* `
|
|
485
|
-
|
|
486
|
-
|
|
490
|
+
* Does an advertised protocol list serve THIS network's storage — its namespaced `cluster`
|
|
491
|
+
* or `repo` protocol? The one test behind every membership verdict, self's included.
|
|
492
|
+
*/
|
|
493
|
+
private servesThisNetwork;
|
|
494
|
+
/**
|
|
495
|
+
* Does THIS node serve storage on this network? True when no `protocolPrefix` is
|
|
496
|
+
* configured (the unscoped path, where every peer counts as serving), or when libp2p
|
|
497
|
+
* advertises this network's `cluster` or `repo` protocol — the same test
|
|
498
|
+
* {@link membershipOf} applies to a remote peer's peerStore protocol list, so self is
|
|
499
|
+
* classified on exactly the same footing. A libp2p double with no `getProtocols` counts
|
|
500
|
+
* as serving, the convention `getConnections?.()` already follows for mocks.
|
|
501
|
+
*
|
|
502
|
+
* Every production node registers both storage services today (`createLibp2pNode`), so the
|
|
503
|
+
* `false` branch is defence in depth: it is what keeps a future client-only node out of every
|
|
504
|
+
* cohort and away from every coordinator pick.
|
|
505
|
+
*/
|
|
506
|
+
private selfServes;
|
|
507
|
+
/**
|
|
508
|
+
* Classify a peer's network membership from its advertised protocols. Self is classified
|
|
509
|
+
* from its own registered protocols ({@link selfServes}) rather than assumed to serve.
|
|
510
|
+
* When no `protocolPrefix` is configured the filter is disabled and EVERY peer is
|
|
511
|
+
* reported `serves`, so all callers behave exactly as before this scoping was added.
|
|
487
512
|
*/
|
|
488
513
|
private membershipOf;
|
|
514
|
+
/**
|
|
515
|
+
* The ordered serving cohort for `key`: the nearest `clusterSize` peers that serve this
|
|
516
|
+
* network, in proximity order, with THIS node among them only when it genuinely is one of
|
|
517
|
+
* them. Both `findCluster` (the replica set) and `findCoordinator` (the pick) derive from
|
|
518
|
+
* this one assembly, so the two can never disagree about who is responsible for a block.
|
|
519
|
+
*
|
|
520
|
+
* The rule, stated once:
|
|
521
|
+
*
|
|
522
|
+
* 1. `coord = hashKey(key)` — the only hash between a block id and its cohort.
|
|
523
|
+
* 2. `band = fret.assembleCohort(coord, wants)`: the nearest live ring members, alternating
|
|
524
|
+
* successor/predecessor outward from the coordinate; `wants` is the over-fetch width on
|
|
525
|
+
* the scoped path (see {@link membershipOverfetch}) and `clusterSize` otherwise.
|
|
526
|
+
* 3. FRET's ring store holds this node as a live member, so `band` already contains self
|
|
527
|
+
* whenever self is among the nearest; absence means self is farther than every band
|
|
528
|
+
* member. A serving self absent from the band is appended LAST, so the cut below keeps
|
|
529
|
+
* it only when the band has room; a non-serving self is removed wherever it sits.
|
|
530
|
+
* 4. Scoped path: keep only members whose membership is `serves`, order preserved.
|
|
531
|
+
* 5. `cohort` = the first `clusterSize` of what remains.
|
|
532
|
+
*
|
|
533
|
+
* Consequences: a node with no live ring members other than itself gets a self-only cohort
|
|
534
|
+
* (the solo short-circuits downstream are untouched); on a ring no wider than `clusterSize`
|
|
535
|
+
* every serving node is in every cohort; on a wider ring self is in a block's cohort iff it
|
|
536
|
+
* is among the nearest `clusterSize` serving members; a client-only node is in no cohort at
|
|
537
|
+
* any width, and its `findCluster` may legitimately come back empty.
|
|
538
|
+
*
|
|
539
|
+
* NOTE: on the scoped path this classifies the WHOLE over-fetch band — one peerStore read per
|
|
540
|
+
* band member, bounded by the number of live ring members — where the coordinator tier used
|
|
541
|
+
* to classify only the connected neighbours. On a small network that is at most one read per
|
|
542
|
+
* known peer. If peerStore reads per lookup ever show in a profile, memoize the per-peer
|
|
543
|
+
* membership verdict with a short TTL rather than caching cohorts, which would have to be
|
|
544
|
+
* invalidated on every ring change.
|
|
545
|
+
*/
|
|
546
|
+
private assembleServingCohort;
|
|
489
547
|
/**
|
|
490
548
|
* Scope a reputation-ordered candidate id list to this network for COORDINATOR
|
|
491
|
-
* selection: keep ONLY peers confirmed to serve this network (`serves
|
|
492
|
-
*
|
|
493
|
-
*
|
|
494
|
-
*
|
|
495
|
-
*
|
|
496
|
-
*
|
|
549
|
+
* selection: keep ONLY peers confirmed to serve this network (`serves`), dropping both
|
|
550
|
+
* `foreign` peers (serving another network) and `unknown` peers (peerStore protocol
|
|
551
|
+
* list empty — not yet confirmed). Incoming (reputation) order is preserved among the
|
|
552
|
+
* surviving `serves` peers. A no-op (returns the input unchanged, no drops) when
|
|
553
|
+
* `protocolPrefix` is unset or the list is empty — the membership-disabled path is
|
|
554
|
+
* therefore untouched.
|
|
555
|
+
*
|
|
556
|
+
* `protocolsByPeer`, when given, is a peerStore read the caller already made for these
|
|
557
|
+
* peers (the cohort assembly's); otherwise the protocols are read fresh here.
|
|
497
558
|
*
|
|
498
559
|
* `droppedUnconfirmed` reports whether any candidate was excluded because it was not
|
|
499
560
|
* confirmed to serve this network — `foreign` OR `unknown` under scoping — so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p-key-network.d.ts","sourceRoot":"","sources":["../../src/libp2p-key-network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p-key-network.d.ts","sourceRoot":"","sources":["../../src/libp2p-key-network.ts"],"names":[],"mappings":"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"}
|