@optimystic/db-p2p 0.13.4 → 0.14.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/README.md +6 -6
- package/dist/src/cluster/block-transfer-service.d.ts +67 -8
- package/dist/src/cluster/block-transfer-service.d.ts.map +1 -1
- package/dist/src/cluster/block-transfer-service.js +101 -62
- package/dist/src/cluster/block-transfer-service.js.map +1 -1
- package/dist/src/cluster/client.d.ts +18 -1
- package/dist/src/cluster/client.d.ts.map +1 -1
- package/dist/src/cluster/client.js +55 -39
- package/dist/src/cluster/client.js.map +1 -1
- package/dist/src/cluster/cluster-error.d.ts +38 -0
- package/dist/src/cluster/cluster-error.d.ts.map +1 -0
- package/dist/src/cluster/cluster-error.js +51 -0
- package/dist/src/cluster/cluster-error.js.map +1 -0
- package/dist/src/cluster/cluster-repo.d.ts +135 -3
- package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
- package/dist/src/cluster/cluster-repo.js +333 -58
- package/dist/src/cluster/cluster-repo.js.map +1 -1
- package/dist/src/cluster/commit-cert.d.ts +63 -0
- package/dist/src/cluster/commit-cert.d.ts.map +1 -0
- package/dist/src/cluster/commit-cert.js +108 -0
- package/dist/src/cluster/commit-cert.js.map +1 -0
- package/dist/src/cluster/service.d.ts +46 -11
- package/dist/src/cluster/service.d.ts.map +1 -1
- package/dist/src/cluster/service.js +97 -33
- package/dist/src/cluster/service.js.map +1 -1
- package/dist/src/cluster/spread-on-churn.d.ts +13 -0
- package/dist/src/cluster/spread-on-churn.d.ts.map +1 -1
- package/dist/src/cluster/spread-on-churn.js +34 -4
- package/dist/src/cluster/spread-on-churn.js.map +1 -1
- package/dist/src/cohort-topic/bootstrap-evidence-builder.d.ts +59 -0
- package/dist/src/cohort-topic/bootstrap-evidence-builder.d.ts.map +1 -0
- package/dist/src/cohort-topic/bootstrap-evidence-builder.js +79 -0
- package/dist/src/cohort-topic/bootstrap-evidence-builder.js.map +1 -0
- package/dist/src/cohort-topic/bootstrap-evidence-verifiers.d.ts +81 -0
- package/dist/src/cohort-topic/bootstrap-evidence-verifiers.d.ts.map +1 -0
- package/dist/src/cohort-topic/bootstrap-evidence-verifiers.js +93 -0
- package/dist/src/cohort-topic/bootstrap-evidence-verifiers.js.map +1 -0
- package/dist/src/cohort-topic/bootstrap-parent-reference.d.ts +108 -0
- package/dist/src/cohort-topic/bootstrap-parent-reference.d.ts.map +1 -0
- package/dist/src/cohort-topic/bootstrap-parent-reference.js +108 -0
- package/dist/src/cohort-topic/bootstrap-parent-reference.js.map +1 -0
- package/dist/src/cohort-topic/change-bridge.d.ts +65 -0
- package/dist/src/cohort-topic/change-bridge.d.ts.map +1 -0
- package/dist/src/cohort-topic/change-bridge.js +76 -0
- package/dist/src/cohort-topic/change-bridge.js.map +1 -0
- package/dist/src/cohort-topic/cohort-gossip-driver.d.ts +74 -0
- package/dist/src/cohort-topic/cohort-gossip-driver.d.ts.map +1 -0
- package/dist/src/cohort-topic/cohort-gossip-driver.js +87 -0
- package/dist/src/cohort-topic/cohort-gossip-driver.js.map +1 -0
- package/dist/src/cohort-topic/cohort-gossip-transport.d.ts +42 -0
- package/dist/src/cohort-topic/cohort-gossip-transport.d.ts.map +1 -0
- package/dist/src/cohort-topic/cohort-gossip-transport.js +57 -0
- package/dist/src/cohort-topic/cohort-gossip-transport.js.map +1 -0
- package/dist/src/cohort-topic/fret-trust-anchor.d.ts +100 -0
- package/dist/src/cohort-topic/fret-trust-anchor.d.ts.map +1 -0
- package/dist/src/cohort-topic/fret-trust-anchor.js +115 -0
- package/dist/src/cohort-topic/fret-trust-anchor.js.map +1 -0
- package/dist/src/cohort-topic/host.d.ts +573 -0
- package/dist/src/cohort-topic/host.d.ts.map +1 -0
- package/dist/src/cohort-topic/host.js +1460 -0
- package/dist/src/cohort-topic/host.js.map +1 -0
- package/dist/src/cohort-topic/index.d.ts +14 -0
- package/dist/src/cohort-topic/index.d.ts.map +1 -0
- package/dist/src/cohort-topic/index.js +14 -0
- package/dist/src/cohort-topic/index.js.map +1 -0
- package/dist/src/cohort-topic/membership-publish-sink.d.ts +14 -0
- package/dist/src/cohort-topic/membership-publish-sink.d.ts.map +1 -0
- package/dist/src/cohort-topic/membership-publish-sink.js +17 -0
- package/dist/src/cohort-topic/membership-publish-sink.js.map +1 -0
- package/dist/src/cohort-topic/membership-source.d.ts +36 -0
- package/dist/src/cohort-topic/membership-source.d.ts.map +1 -0
- package/dist/src/cohort-topic/membership-source.js +58 -0
- package/dist/src/cohort-topic/membership-source.js.map +1 -0
- package/dist/src/cohort-topic/peer-codec.d.ts +18 -0
- package/dist/src/cohort-topic/peer-codec.d.ts.map +1 -0
- package/dist/src/cohort-topic/peer-codec.js +26 -0
- package/dist/src/cohort-topic/peer-codec.js.map +1 -0
- package/dist/src/cohort-topic/peer-sig.d.ts +52 -0
- package/dist/src/cohort-topic/peer-sig.d.ts.map +1 -0
- package/dist/src/cohort-topic/peer-sig.js +83 -0
- package/dist/src/cohort-topic/peer-sig.js.map +1 -0
- package/dist/src/cohort-topic/protocols.d.ts +49 -0
- package/dist/src/cohort-topic/protocols.d.ts.map +1 -0
- package/dist/src/cohort-topic/protocols.js +58 -0
- package/dist/src/cohort-topic/protocols.js.map +1 -0
- package/dist/src/cohort-topic/reactivity-membership-gate.d.ts +49 -0
- package/dist/src/cohort-topic/reactivity-membership-gate.d.ts.map +1 -0
- package/dist/src/cohort-topic/reactivity-membership-gate.js +42 -0
- package/dist/src/cohort-topic/reactivity-membership-gate.js.map +1 -0
- package/dist/src/cohort-topic/size-estimator.d.ts +16 -0
- package/dist/src/cohort-topic/size-estimator.d.ts.map +1 -0
- package/dist/src/cohort-topic/size-estimator.js +16 -0
- package/dist/src/cohort-topic/size-estimator.js.map +1 -0
- package/dist/src/cohort-topic/stream-util.d.ts +19 -0
- package/dist/src/cohort-topic/stream-util.d.ts.map +1 -0
- package/dist/src/cohort-topic/stream-util.js +76 -0
- package/dist/src/cohort-topic/stream-util.js.map +1 -0
- package/dist/src/cohort-topic/threshold-crypto.d.ts +94 -0
- package/dist/src/cohort-topic/threshold-crypto.d.ts.map +1 -0
- package/dist/src/cohort-topic/threshold-crypto.js +178 -0
- package/dist/src/cohort-topic/threshold-crypto.js.map +1 -0
- package/dist/src/cohort-topic/topic-router.d.ts +41 -0
- package/dist/src/cohort-topic/topic-router.d.ts.map +1 -0
- package/dist/src/cohort-topic/topic-router.js +63 -0
- package/dist/src/cohort-topic/topic-router.js.map +1 -0
- package/dist/src/dispute/cascade.d.ts +179 -0
- package/dist/src/dispute/cascade.d.ts.map +1 -0
- package/dist/src/dispute/cascade.js +315 -0
- package/dist/src/dispute/cascade.js.map +1 -0
- package/dist/src/dispute/client.d.ts +2 -1
- package/dist/src/dispute/client.d.ts.map +1 -1
- package/dist/src/dispute/client.js +12 -3
- package/dist/src/dispute/client.js.map +1 -1
- package/dist/src/dispute/dispute-service.d.ts +41 -1
- package/dist/src/dispute/dispute-service.d.ts.map +1 -1
- package/dist/src/dispute/dispute-service.js +147 -21
- package/dist/src/dispute/dispute-service.js.map +1 -1
- package/dist/src/dispute/index.d.ts +2 -0
- package/dist/src/dispute/index.d.ts.map +1 -1
- package/dist/src/dispute/index.js +2 -0
- package/dist/src/dispute/index.js.map +1 -1
- package/dist/src/dispute/invalidation.d.ts +266 -0
- package/dist/src/dispute/invalidation.d.ts.map +1 -0
- package/dist/src/dispute/invalidation.js +405 -0
- package/dist/src/dispute/invalidation.js.map +1 -0
- package/dist/src/dispute/types.d.ts +14 -0
- package/dist/src/dispute/types.d.ts.map +1 -1
- package/dist/src/dispute/types.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p-key-network.d.ts +8 -1
- package/dist/src/libp2p-key-network.d.ts.map +1 -1
- package/dist/src/libp2p-key-network.js +67 -8
- package/dist/src/libp2p-key-network.js.map +1 -1
- package/dist/src/libp2p-node-base.d.ts +57 -3
- package/dist/src/libp2p-node-base.d.ts.map +1 -1
- package/dist/src/libp2p-node-base.js +523 -6
- package/dist/src/libp2p-node-base.js.map +1 -1
- package/dist/src/matchmaking/aggregate-counts.d.ts +67 -0
- package/dist/src/matchmaking/aggregate-counts.d.ts.map +1 -0
- package/dist/src/matchmaking/aggregate-counts.js +60 -0
- package/dist/src/matchmaking/aggregate-counts.js.map +1 -0
- package/dist/src/matchmaking/index.d.ts +20 -0
- package/dist/src/matchmaking/index.d.ts.map +1 -0
- package/dist/src/matchmaking/index.js +20 -0
- package/dist/src/matchmaking/index.js.map +1 -0
- package/dist/src/matchmaking/module.d.ts +181 -0
- package/dist/src/matchmaking/module.d.ts.map +1 -0
- package/dist/src/matchmaking/module.js +221 -0
- package/dist/src/matchmaking/module.js.map +1 -0
- package/dist/src/matchmaking/protocols.d.ts +37 -0
- package/dist/src/matchmaking/protocols.d.ts.map +1 -0
- package/dist/src/matchmaking/protocols.js +42 -0
- package/dist/src/matchmaking/protocols.js.map +1 -0
- package/dist/src/matchmaking/provider-manager.d.ts +52 -0
- package/dist/src/matchmaking/provider-manager.d.ts.map +1 -0
- package/dist/src/matchmaking/provider-manager.js +74 -0
- package/dist/src/matchmaking/provider-manager.js.map +1 -0
- package/dist/src/matchmaking/query-handler.d.ts +34 -0
- package/dist/src/matchmaking/query-handler.d.ts.map +1 -0
- package/dist/src/matchmaking/query-handler.js +62 -0
- package/dist/src/matchmaking/query-handler.js.map +1 -0
- package/dist/src/matchmaking/query-transport.d.ts +180 -0
- package/dist/src/matchmaking/query-transport.d.ts.map +1 -0
- package/dist/src/matchmaking/query-transport.js +315 -0
- package/dist/src/matchmaking/query-transport.js.map +1 -0
- package/dist/src/matchmaking/seeker-manager.d.ts +39 -0
- package/dist/src/matchmaking/seeker-manager.d.ts.map +1 -0
- package/dist/src/matchmaking/seeker-manager.js +49 -0
- package/dist/src/matchmaking/seeker-manager.js.map +1 -0
- package/dist/src/matchmaking/seeker-walk-client.d.ts +127 -0
- package/dist/src/matchmaking/seeker-walk-client.d.ts.map +1 -0
- package/dist/src/matchmaking/seeker-walk-client.js +189 -0
- package/dist/src/matchmaking/seeker-walk-client.js.map +1 -0
- package/dist/src/matchmaking/traffic-validation.d.ts +128 -0
- package/dist/src/matchmaking/traffic-validation.d.ts.map +1 -0
- package/dist/src/matchmaking/traffic-validation.js +105 -0
- package/dist/src/matchmaking/traffic-validation.js.map +1 -0
- package/dist/src/network/network-manager-service.d.ts +4 -2
- package/dist/src/network/network-manager-service.d.ts.map +1 -1
- package/dist/src/network/network-manager-service.js +9 -3
- package/dist/src/network/network-manager-service.js.map +1 -1
- package/dist/src/protocol-client.d.ts +25 -0
- package/dist/src/protocol-client.d.ts.map +1 -1
- package/dist/src/protocol-client.js +126 -4
- package/dist/src/protocol-client.js.map +1 -1
- package/dist/src/reactivity/forwarder-host.d.ts +198 -0
- package/dist/src/reactivity/forwarder-host.d.ts.map +1 -0
- package/dist/src/reactivity/forwarder-host.js +355 -0
- package/dist/src/reactivity/forwarder-host.js.map +1 -0
- package/dist/src/reactivity/index.d.ts +19 -0
- package/dist/src/reactivity/index.d.ts.map +1 -0
- package/dist/src/reactivity/index.js +19 -0
- package/dist/src/reactivity/index.js.map +1 -0
- package/dist/src/reactivity/notify-transport.d.ts +70 -0
- package/dist/src/reactivity/notify-transport.d.ts.map +1 -0
- package/dist/src/reactivity/notify-transport.js +111 -0
- package/dist/src/reactivity/notify-transport.js.map +1 -0
- package/dist/src/reactivity/origination-manager.d.ts +110 -0
- package/dist/src/reactivity/origination-manager.d.ts.map +1 -0
- package/dist/src/reactivity/origination-manager.js +129 -0
- package/dist/src/reactivity/origination-manager.js.map +1 -0
- package/dist/src/reactivity/protocols.d.ts +43 -0
- package/dist/src/reactivity/protocols.d.ts.map +1 -0
- package/dist/src/reactivity/protocols.js +50 -0
- package/dist/src/reactivity/protocols.js.map +1 -0
- package/dist/src/reactivity/push-state-gossip.d.ts +132 -0
- package/dist/src/reactivity/push-state-gossip.d.ts.map +1 -0
- package/dist/src/reactivity/push-state-gossip.js +231 -0
- package/dist/src/reactivity/push-state-gossip.js.map +1 -0
- package/dist/src/reactivity/recover-transport.d.ts +167 -0
- package/dist/src/reactivity/recover-transport.d.ts.map +1 -0
- package/dist/src/reactivity/recover-transport.js +308 -0
- package/dist/src/reactivity/recover-transport.js.map +1 -0
- package/dist/src/reactivity/rotation-rereg-scheduler.d.ts +142 -0
- package/dist/src/reactivity/rotation-rereg-scheduler.d.ts.map +1 -0
- package/dist/src/reactivity/rotation-rereg-scheduler.js +223 -0
- package/dist/src/reactivity/rotation-rereg-scheduler.js.map +1 -0
- package/dist/src/reactivity/subscriber-registry.d.ts +47 -0
- package/dist/src/reactivity/subscriber-registry.d.ts.map +1 -0
- package/dist/src/reactivity/subscriber-registry.js +87 -0
- package/dist/src/reactivity/subscriber-registry.js.map +1 -0
- package/dist/src/reactivity/subscription-manager.d.ts +221 -0
- package/dist/src/reactivity/subscription-manager.d.ts.map +1 -0
- package/dist/src/reactivity/subscription-manager.js +302 -0
- package/dist/src/reactivity/subscription-manager.js.map +1 -0
- package/dist/src/reactivity/topic-bytes.d.ts +32 -0
- package/dist/src/reactivity/topic-bytes.d.ts.map +1 -0
- package/dist/src/reactivity/topic-bytes.js +34 -0
- package/dist/src/reactivity/topic-bytes.js.map +1 -0
- package/dist/src/repo/client.d.ts.map +1 -1
- package/dist/src/repo/client.js +51 -19
- package/dist/src/repo/client.js.map +1 -1
- package/dist/src/repo/cluster-coordinator.d.ts +9 -0
- package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
- package/dist/src/repo/cluster-coordinator.js +65 -22
- package/dist/src/repo/cluster-coordinator.js.map +1 -1
- package/dist/src/repo/coordinator-repo.d.ts +20 -0
- package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
- package/dist/src/repo/coordinator-repo.js +101 -16
- package/dist/src/repo/coordinator-repo.js.map +1 -1
- package/dist/src/repo/service.d.ts +46 -1
- package/dist/src/repo/service.d.ts.map +1 -1
- package/dist/src/repo/service.js +79 -45
- package/dist/src/repo/service.js.map +1 -1
- package/dist/src/rpc-deadline.d.ts +37 -0
- package/dist/src/rpc-deadline.d.ts.map +1 -0
- package/dist/src/rpc-deadline.js +31 -0
- package/dist/src/rpc-deadline.js.map +1 -0
- package/dist/src/storage/block-storage.d.ts +2 -0
- package/dist/src/storage/block-storage.d.ts.map +1 -1
- package/dist/src/storage/block-storage.js +95 -2
- package/dist/src/storage/block-storage.js.map +1 -1
- package/dist/src/storage/i-block-storage.d.ts +25 -0
- package/dist/src/storage/i-block-storage.d.ts.map +1 -1
- package/dist/src/storage/storage-repo.d.ts +53 -2
- package/dist/src/storage/storage-repo.d.ts.map +1 -1
- package/dist/src/storage/storage-repo.js +193 -9
- package/dist/src/storage/storage-repo.js.map +1 -1
- package/dist/src/sync/client.d.ts +4 -1
- package/dist/src/sync/client.d.ts.map +1 -1
- package/dist/src/sync/client.js +5 -2
- package/dist/src/sync/client.js.map +1 -1
- package/dist/src/testing/cohort-topic-mesh-harness.d.ts +219 -0
- package/dist/src/testing/cohort-topic-mesh-harness.d.ts.map +1 -0
- package/dist/src/testing/cohort-topic-mesh-harness.js +467 -0
- package/dist/src/testing/cohort-topic-mesh-harness.js.map +1 -0
- package/dist/src/testing/matchmaking-mesh-harness.d.ts +187 -0
- package/dist/src/testing/matchmaking-mesh-harness.d.ts.map +1 -0
- package/dist/src/testing/matchmaking-mesh-harness.js +358 -0
- package/dist/src/testing/matchmaking-mesh-harness.js.map +1 -0
- package/dist/src/testing/mesh-harness.d.ts.map +1 -1
- package/dist/src/testing/mesh-harness.js +23 -1
- package/dist/src/testing/mesh-harness.js.map +1 -1
- package/dist/src/testing/reactivity-mesh-harness.d.ts +298 -0
- package/dist/src/testing/reactivity-mesh-harness.d.ts.map +1 -0
- package/dist/src/testing/reactivity-mesh-harness.js +663 -0
- package/dist/src/testing/reactivity-mesh-harness.js.map +1 -0
- package/package.json +7 -4
- package/src/cluster/block-transfer-service.ts +133 -68
- package/src/cluster/client.ts +64 -45
- package/src/cluster/cluster-error.ts +64 -0
- package/src/cluster/cluster-repo.ts +405 -55
- package/src/cluster/commit-cert.ts +139 -0
- package/src/cluster/service.ts +116 -44
- package/src/cluster/spread-on-churn.ts +328 -285
- package/src/cohort-topic/bootstrap-evidence-builder.ts +122 -0
- package/src/cohort-topic/bootstrap-evidence-verifiers.ts +132 -0
- package/src/cohort-topic/bootstrap-parent-reference.ts +159 -0
- package/src/cohort-topic/change-bridge.ts +109 -0
- package/src/cohort-topic/cohort-gossip-driver.ts +144 -0
- package/src/cohort-topic/cohort-gossip-transport.ts +74 -0
- package/src/cohort-topic/fret-trust-anchor.ts +153 -0
- package/src/cohort-topic/host.ts +2175 -0
- package/src/cohort-topic/index.ts +13 -0
- package/src/cohort-topic/membership-publish-sink.ts +20 -0
- package/src/cohort-topic/membership-source.ts +68 -0
- package/src/cohort-topic/peer-codec.ts +31 -0
- package/src/cohort-topic/peer-sig.ts +86 -0
- package/src/cohort-topic/protocols.ts +71 -0
- package/src/cohort-topic/reactivity-membership-gate.ts +77 -0
- package/src/cohort-topic/size-estimator.ts +16 -0
- package/src/cohort-topic/stream-util.ts +87 -0
- package/src/cohort-topic/threshold-crypto.ts +239 -0
- package/src/cohort-topic/topic-router.ts +77 -0
- package/src/dispute/cascade.ts +517 -0
- package/src/dispute/client.ts +12 -2
- package/src/dispute/dispute-service.ts +171 -24
- package/src/dispute/index.ts +42 -0
- package/src/dispute/invalidation.ts +587 -0
- package/src/dispute/types.ts +14 -0
- package/src/index.ts +4 -0
- package/src/libp2p-key-network.ts +67 -9
- package/src/libp2p-node-base.ts +633 -14
- package/src/matchmaking/aggregate-counts.ts +104 -0
- package/src/matchmaking/index.ts +20 -0
- package/src/matchmaking/module.ts +363 -0
- package/src/matchmaking/protocols.ts +51 -0
- package/src/matchmaking/provider-manager.ts +95 -0
- package/src/matchmaking/query-handler.ts +88 -0
- package/src/matchmaking/query-transport.ts +483 -0
- package/src/matchmaking/seeker-manager.ts +64 -0
- package/src/matchmaking/seeker-walk-client.ts +293 -0
- package/src/matchmaking/traffic-validation.ts +195 -0
- package/src/network/network-manager-service.ts +9 -2
- package/src/protocol-client.ts +119 -5
- package/src/reactivity/forwarder-host.ts +438 -0
- package/src/reactivity/index.ts +19 -0
- package/src/reactivity/notify-transport.ts +144 -0
- package/src/reactivity/origination-manager.ts +192 -0
- package/src/reactivity/protocols.ts +61 -0
- package/src/reactivity/push-state-gossip.ts +291 -0
- package/src/reactivity/recover-transport.ts +408 -0
- package/src/reactivity/rotation-rereg-scheduler.ts +256 -0
- package/src/reactivity/subscriber-registry.ts +96 -0
- package/src/reactivity/subscription-manager.ts +450 -0
- package/src/reactivity/topic-bytes.ts +37 -0
- package/src/repo/client.ts +54 -19
- package/src/repo/cluster-coordinator.ts +66 -26
- package/src/repo/coordinator-repo.ts +99 -15
- package/src/repo/service.ts +90 -42
- package/src/rpc-deadline.ts +45 -0
- package/src/storage/block-storage.ts +106 -3
- package/src/storage/i-block-storage.ts +27 -0
- package/src/storage/storage-repo.ts +209 -13
- package/src/sync/client.ts +5 -2
- package/src/testing/cohort-topic-mesh-harness.ts +613 -0
- package/src/testing/matchmaking-mesh-harness.ts +475 -0
- package/src/testing/mesh-harness.ts +22 -2
- package/src/testing/reactivity-mesh-harness.ts +922 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/cohort-topic/host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "./protocols.js";
|
|
2
|
+
export * from "./peer-codec.js";
|
|
3
|
+
export * from "./peer-sig.js";
|
|
4
|
+
export * from "./stream-util.js";
|
|
5
|
+
export * from "./topic-router.js";
|
|
6
|
+
export * from "./cohort-gossip-transport.js";
|
|
7
|
+
export * from "./cohort-gossip-driver.js";
|
|
8
|
+
export * from "./membership-source.js";
|
|
9
|
+
export * from "./membership-publish-sink.js";
|
|
10
|
+
export * from "./threshold-crypto.js";
|
|
11
|
+
export * from "./size-estimator.js";
|
|
12
|
+
export * from "./host.js";
|
|
13
|
+
export * from "./change-bridge.js";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cohort-topic/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "./protocols.js";
|
|
2
|
+
export * from "./peer-codec.js";
|
|
3
|
+
export * from "./peer-sig.js";
|
|
4
|
+
export * from "./stream-util.js";
|
|
5
|
+
export * from "./topic-router.js";
|
|
6
|
+
export * from "./cohort-gossip-transport.js";
|
|
7
|
+
export * from "./cohort-gossip-driver.js";
|
|
8
|
+
export * from "./membership-source.js";
|
|
9
|
+
export * from "./membership-publish-sink.js";
|
|
10
|
+
export * from "./threshold-crypto.js";
|
|
11
|
+
export * from "./size-estimator.js";
|
|
12
|
+
export * from "./host.js";
|
|
13
|
+
export * from "./change-bridge.js";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cohort-topic/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IMembershipPublishSink } from "@optimystic/db-core";
|
|
2
|
+
/**
|
|
3
|
+
* FRET-backed {@link IMembershipPublishSink}: holds the cohort's latest threshold-signed
|
|
4
|
+
* `MembershipCertV1` (already encoded) and serves it over `/optimystic/cohort-topic/1.0.0/membership`.
|
|
5
|
+
* A node publishes only its own cohort's cert, so the most-recent encoded cert is all the host's
|
|
6
|
+
* membership protocol handler needs to answer inbound requests.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FretMembershipPublishSink implements IMembershipPublishSink {
|
|
9
|
+
private latestCert;
|
|
10
|
+
publish(encodedCert: Uint8Array): void;
|
|
11
|
+
/** The most recently published encoded cert, or `undefined` if none yet (host serves this). */
|
|
12
|
+
latest(): Uint8Array | undefined;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=membership-publish-sink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"membership-publish-sink.d.ts","sourceRoot":"","sources":["../../../src/cohort-topic/membership-publish-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,yBAA0B,YAAW,sBAAsB;IACvE,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,WAAW,EAAE,UAAU,GAAG,IAAI;IAItC,+FAA+F;IAC/F,MAAM,IAAI,UAAU,GAAG,SAAS;CAGhC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FRET-backed {@link IMembershipPublishSink}: holds the cohort's latest threshold-signed
|
|
3
|
+
* `MembershipCertV1` (already encoded) and serves it over `/optimystic/cohort-topic/1.0.0/membership`.
|
|
4
|
+
* A node publishes only its own cohort's cert, so the most-recent encoded cert is all the host's
|
|
5
|
+
* membership protocol handler needs to answer inbound requests.
|
|
6
|
+
*/
|
|
7
|
+
export class FretMembershipPublishSink {
|
|
8
|
+
latestCert;
|
|
9
|
+
publish(encodedCert) {
|
|
10
|
+
this.latestCert = encodedCert;
|
|
11
|
+
}
|
|
12
|
+
/** The most recently published encoded cert, or `undefined` if none yet (host serves this). */
|
|
13
|
+
latest() {
|
|
14
|
+
return this.latestCert;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=membership-publish-sink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"membership-publish-sink.js","sourceRoot":"","sources":["../../../src/cohort-topic/membership-publish-sink.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,yBAAyB;IAC7B,UAAU,CAAyB;IAE3C,OAAO,CAAC,WAAuB;QAC9B,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;IAC/B,CAAC;IAED,+FAA+F;IAC/F,MAAM;QACL,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;CACD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { IMembershipSource, RingCoord } from "@optimystic/db-core";
|
|
2
|
+
import type { Libp2p } from "libp2p";
|
|
3
|
+
import type { CohortPeerResolver } from "./cohort-gossip-transport.js";
|
|
4
|
+
export interface FretMembershipSourceOptions {
|
|
5
|
+
readonly membershipProtocol?: string;
|
|
6
|
+
/** Cohort fan-out probed on a `fetch`. Default 16. */
|
|
7
|
+
readonly wants?: number;
|
|
8
|
+
readonly maxBytes?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* FRET-backed {@link IMembershipSource}: cohort membership snapshots over
|
|
12
|
+
* `/optimystic/cohort-topic/1.0.0/membership`. `current` serves the locally-cached encoded
|
|
13
|
+
* `MembershipCertV1`; `fetch` forces one refresh by requesting the cert from an assembled cohort
|
|
14
|
+
* member (the stale-cache retry the participant-side verifier drives). The host feeds inbound certs
|
|
15
|
+
* into the cache via {@link cache}.
|
|
16
|
+
*/
|
|
17
|
+
export declare class FretMembershipSource implements IMembershipSource {
|
|
18
|
+
private readonly node;
|
|
19
|
+
private readonly resolver;
|
|
20
|
+
private readonly byCoord;
|
|
21
|
+
private readonly membershipProtocol;
|
|
22
|
+
private readonly wants;
|
|
23
|
+
private readonly maxBytes;
|
|
24
|
+
constructor(node: Libp2p, resolver: CohortPeerResolver, options?: FretMembershipSourceOptions);
|
|
25
|
+
current(coord: RingCoord): Promise<Uint8Array | undefined>;
|
|
26
|
+
/**
|
|
27
|
+
* Synchronous local existence read over the in-memory cache: true iff a `MembershipCertV1` is cached for
|
|
28
|
+
* `coord` (no network I/O). The parent-reference bootstrap-evidence verifier's existence view consults
|
|
29
|
+
* this — an admission gate must never dial — so it reads the same `byCoord` map `current()` resolves from.
|
|
30
|
+
*/
|
|
31
|
+
has(coord: RingCoord): boolean;
|
|
32
|
+
fetch(coord: RingCoord): Promise<Uint8Array | undefined>;
|
|
33
|
+
/** Cache an encoded cert for its coord (host feeds inbound/served certs here). */
|
|
34
|
+
cache(coord: RingCoord, encodedCert: Uint8Array): void;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=membership-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"membership-source.d.ts","sourceRoot":"","sources":["../../../src/cohort-topic/membership-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,sDAAsD;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAMjD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAU,OAAO,CAAC,QAAQ,CAAC,QAAQ;IALpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEL,IAAI,EAAE,MAAM,EAAmB,QAAQ,EAAE,kBAAkB,EAAE,OAAO,GAAE,2BAAgC;IAMnI,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAI1D;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIxB,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAgB9D,kFAAkF;IAClF,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,GAAG,IAAI;CAGtD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { bytesToB64url } from "@optimystic/db-core";
|
|
2
|
+
import { peerIdFromString } from "@libp2p/peer-id";
|
|
3
|
+
import { requestResponse, DEFAULT_STREAM_MAX_BYTES } from "./stream-util.js";
|
|
4
|
+
import { PROTOCOL_COHORT_MEMBERSHIP } from "./protocols.js";
|
|
5
|
+
/**
|
|
6
|
+
* FRET-backed {@link IMembershipSource}: cohort membership snapshots over
|
|
7
|
+
* `/optimystic/cohort-topic/1.0.0/membership`. `current` serves the locally-cached encoded
|
|
8
|
+
* `MembershipCertV1`; `fetch` forces one refresh by requesting the cert from an assembled cohort
|
|
9
|
+
* member (the stale-cache retry the participant-side verifier drives). The host feeds inbound certs
|
|
10
|
+
* into the cache via {@link cache}.
|
|
11
|
+
*/
|
|
12
|
+
export class FretMembershipSource {
|
|
13
|
+
node;
|
|
14
|
+
resolver;
|
|
15
|
+
byCoord = new Map();
|
|
16
|
+
membershipProtocol;
|
|
17
|
+
wants;
|
|
18
|
+
maxBytes;
|
|
19
|
+
constructor(node, resolver, options = {}) {
|
|
20
|
+
this.node = node;
|
|
21
|
+
this.resolver = resolver;
|
|
22
|
+
this.membershipProtocol = options.membershipProtocol ?? PROTOCOL_COHORT_MEMBERSHIP;
|
|
23
|
+
this.wants = options.wants ?? 16;
|
|
24
|
+
this.maxBytes = options.maxBytes ?? DEFAULT_STREAM_MAX_BYTES;
|
|
25
|
+
}
|
|
26
|
+
current(coord) {
|
|
27
|
+
return Promise.resolve(this.byCoord.get(bytesToB64url(coord)));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Synchronous local existence read over the in-memory cache: true iff a `MembershipCertV1` is cached for
|
|
31
|
+
* `coord` (no network I/O). The parent-reference bootstrap-evidence verifier's existence view consults
|
|
32
|
+
* this — an admission gate must never dial — so it reads the same `byCoord` map `current()` resolves from.
|
|
33
|
+
*/
|
|
34
|
+
has(coord) {
|
|
35
|
+
return this.byCoord.has(bytesToB64url(coord));
|
|
36
|
+
}
|
|
37
|
+
async fetch(coord) {
|
|
38
|
+
const request = coord; // the membership request frame is the raw coord bytes
|
|
39
|
+
for (const peerStr of this.resolver.cohortPeers(coord, this.wants)) {
|
|
40
|
+
try {
|
|
41
|
+
const reply = await requestResponse(this.node, peerIdFromString(peerStr), this.membershipProtocol, request, this.maxBytes);
|
|
42
|
+
if (reply.length > 0) {
|
|
43
|
+
this.cache(coord, reply);
|
|
44
|
+
return reply;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Try the next member; a stale-cache refetch tolerates an unreachable holder.
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
/** Cache an encoded cert for its coord (host feeds inbound/served certs here). */
|
|
54
|
+
cache(coord, encodedCert) {
|
|
55
|
+
this.byCoord.set(bytesToB64url(coord), encodedCert);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=membership-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"membership-source.js","sourceRoot":"","sources":["../../../src/cohort-topic/membership-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAS5D;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IAMH;IAA+B;IAL3C,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IACxC,kBAAkB,CAAS;IAC3B,KAAK,CAAS;IACd,QAAQ,CAAS;IAElC,YAA6B,IAAY,EAAmB,QAA4B,EAAE,UAAuC,EAAE;QAAtG,SAAI,GAAJ,IAAI,CAAQ;QAAmB,aAAQ,GAAR,QAAQ,CAAoB;QACvF,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,0BAA0B,CAAC;QACnF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,wBAAwB,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,KAAgB;QACvB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAgB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAgB;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,sDAAsD;QAC7E,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC;gBACJ,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3H,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACzB,OAAO,KAAK,CAAC;gBACd,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,8EAA8E;YAC/E,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,KAAgB,EAAE,WAAuB;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;CACD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cohort-topic peer-id ↔ bytes bridge.
|
|
3
|
+
*
|
|
4
|
+
* db-core's substrate logic references peers as opaque `Uint8Array` ids ({@link PeerRef}`.id`); FRET +
|
|
5
|
+
* libp2p reference them as `PeerId` / peer-id strings. The cohort-member ids the substrate carries on
|
|
6
|
+
* the wire (a reply's `primary` / `backups` / `cohortMembers`) must round-trip back to a *dialable*
|
|
7
|
+
* libp2p peer, so this module pins one unambiguous encoding for them: the UTF-8 bytes of the canonical
|
|
8
|
+
* peer-id string. (The participant's own addressing coordinate `P` is a separate ring-coord value — see
|
|
9
|
+
* the host — so this encoding never needs to feed the ring hash.)
|
|
10
|
+
*/
|
|
11
|
+
import type { PeerId } from "@libp2p/interface";
|
|
12
|
+
/** A cohort-member id as the substrate's opaque bytes: UTF-8 of the canonical peer-id string. */
|
|
13
|
+
export declare function peerIdToBytes(peerId: PeerId | string): Uint8Array;
|
|
14
|
+
/** Reverse of {@link peerIdToBytes}: decode member bytes back to the canonical peer-id string. */
|
|
15
|
+
export declare function bytesToPeerIdString(bytes: Uint8Array): string;
|
|
16
|
+
/** Reverse of {@link peerIdToBytes}: decode member bytes back to a dialable {@link PeerId}. */
|
|
17
|
+
export declare function bytesToPeerId(bytes: Uint8Array): PeerId;
|
|
18
|
+
//# sourceMappingURL=peer-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-codec.d.ts","sourceRoot":"","sources":["../../../src/cohort-topic/peer-codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD,iGAAiG;AACjG,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAEjE;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE7D;AAED,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEvD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cohort-topic peer-id ↔ bytes bridge.
|
|
3
|
+
*
|
|
4
|
+
* db-core's substrate logic references peers as opaque `Uint8Array` ids ({@link PeerRef}`.id`); FRET +
|
|
5
|
+
* libp2p reference them as `PeerId` / peer-id strings. The cohort-member ids the substrate carries on
|
|
6
|
+
* the wire (a reply's `primary` / `backups` / `cohortMembers`) must round-trip back to a *dialable*
|
|
7
|
+
* libp2p peer, so this module pins one unambiguous encoding for them: the UTF-8 bytes of the canonical
|
|
8
|
+
* peer-id string. (The participant's own addressing coordinate `P` is a separate ring-coord value — see
|
|
9
|
+
* the host — so this encoding never needs to feed the ring hash.)
|
|
10
|
+
*/
|
|
11
|
+
import { peerIdFromString } from "@libp2p/peer-id";
|
|
12
|
+
const utf8Encoder = new TextEncoder();
|
|
13
|
+
const utf8Decoder = new TextDecoder("utf-8", { fatal: true });
|
|
14
|
+
/** A cohort-member id as the substrate's opaque bytes: UTF-8 of the canonical peer-id string. */
|
|
15
|
+
export function peerIdToBytes(peerId) {
|
|
16
|
+
return utf8Encoder.encode(typeof peerId === "string" ? peerId : peerId.toString());
|
|
17
|
+
}
|
|
18
|
+
/** Reverse of {@link peerIdToBytes}: decode member bytes back to the canonical peer-id string. */
|
|
19
|
+
export function bytesToPeerIdString(bytes) {
|
|
20
|
+
return utf8Decoder.decode(bytes);
|
|
21
|
+
}
|
|
22
|
+
/** Reverse of {@link peerIdToBytes}: decode member bytes back to a dialable {@link PeerId}. */
|
|
23
|
+
export function bytesToPeerId(bytes) {
|
|
24
|
+
return peerIdFromString(bytesToPeerIdString(bytes));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=peer-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-codec.js","sourceRoot":"","sources":["../../../src/cohort-topic/peer-codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9D,iGAAiG;AACjG,MAAM,UAAU,aAAa,CAAC,MAAuB;IACpD,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,mBAAmB,CAAC,KAAiB;IACpD,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC9C,OAAO,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cohort-topic shared Ed25519 sign/verify primitive (libp2p peer keys).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the established peer-key signing pattern in `cluster-repo.ts` / `dispute-service.ts`
|
|
5
|
+
* (`PrivateKey.sign` → base64url; verify against the peer's public key), specialized for the
|
|
6
|
+
* cohort-topic substrate:
|
|
7
|
+
*
|
|
8
|
+
* - **Signing** uses the node's libp2p `PrivateKey.sign` (async — fine on the participant outbound
|
|
9
|
+
* path) and is the seam the threshold-assembly ticket reuses for per-member partial signatures.
|
|
10
|
+
* - **Verification is SYNCHRONOUS**, because the db-core verify ports (e.g. the participant-signature
|
|
11
|
+
* predicates and `ICohortThresholdCrypto.verify`) are synchronous. libp2p's
|
|
12
|
+
* `publicKeyFromRaw(raw).verify` is async, so this verifies with `@noble/curves/ed25519` directly
|
|
13
|
+
* over the raw 32-byte key. noble's `ed25519.verify` (ZIP215) is a strict superset of the RFC8032
|
|
14
|
+
* signatures the libp2p signer (Node/WebCrypto Ed25519) produces, so it accepts them.
|
|
15
|
+
*
|
|
16
|
+
* The signer id on the cohort wire is the UTF-8 bytes of the peer-id string (see `peer-codec.ts`).
|
|
17
|
+
* For an Ed25519 identity the public key is embedded in the identity multihash, so no network lookup
|
|
18
|
+
* is needed — `peerIdFromString(str).publicKey.raw` yields the raw key. Verification is **total**: any
|
|
19
|
+
* non-Ed25519 id, missing key, or malformed input returns `false` (it never throws). The cohort-topic
|
|
20
|
+
* substrate therefore assumes Ed25519 identities (the libp2p default; `generateKeyPair('Ed25519')`).
|
|
21
|
+
*/
|
|
22
|
+
import type { PrivateKey } from "@libp2p/interface";
|
|
23
|
+
/** Sign `payload` with the node's libp2p peer key. Async — libp2p `PrivateKey.sign` is async. */
|
|
24
|
+
export declare function signPeer(privateKey: PrivateKey, payload: Uint8Array): Promise<Uint8Array>;
|
|
25
|
+
/**
|
|
26
|
+
* Sign `payload` with a libp2p Ed25519 peer key **synchronously** — the mirror of the synchronous
|
|
27
|
+
* {@link verifyPeerSig}. Use this where the signer seam is synchronous and the async {@link signPeer}
|
|
28
|
+
* cannot be awaited: e.g. the reactivity recover `signBackfill` / `signResume` `(unsigned) => string`
|
|
29
|
+
* ports, whose db-core driver builds the unsigned image internally (so a pre-signed value is impossible)
|
|
30
|
+
* and whose seam shape is `=> string`, not `=> Promise<string>`.
|
|
31
|
+
*
|
|
32
|
+
* libp2p's own `PrivateKey.sign` is async (Node / WebCrypto Ed25519), so this signs directly with
|
|
33
|
+
* `@noble/curves/ed25519` over the raw 32-byte seed. libp2p stores an Ed25519 private key as 64 bytes
|
|
34
|
+
* (`raw` = 32-byte seed ‖ 32-byte public key); noble's `ed25519.sign(message, secretKey)` takes the
|
|
35
|
+
* 32-byte seed. noble's signatures are RFC8032-compliant and deterministic, so both verify paths accept
|
|
36
|
+
* them: the libp2p `publicKeyFromRaw(raw).verify` (Node / WebCrypto) and the synchronous
|
|
37
|
+
* {@link verifyPeerSig} (noble, ZIP215) — symmetric with the verify direction's cross-acceptance, and
|
|
38
|
+
* byte-identical to what the async {@link signPeer} would produce for the same key + payload.
|
|
39
|
+
*
|
|
40
|
+
* Assumes an Ed25519 identity (the cohort-topic substrate's standing assumption). Throws on a
|
|
41
|
+
* non-Ed25519 key or an unexpected raw length — a programming error on the node's own key, never
|
|
42
|
+
* attacker-reachable input (the verify side, by contrast, is total and returns `false`).
|
|
43
|
+
*/
|
|
44
|
+
export declare function signPeerSig(privateKey: PrivateKey, payload: Uint8Array): Uint8Array;
|
|
45
|
+
/**
|
|
46
|
+
* Verify an Ed25519 peer-key signature synchronously. `signer` is the cohort-wire member id — the
|
|
47
|
+
* UTF-8 bytes of the peer-id string (see {@link bytesToPeerIdString}) — or that peer-id string
|
|
48
|
+
* directly. Returns `false` (never throws) on a non-Ed25519 id, a missing/short key, a malformed
|
|
49
|
+
* signature, or any decode failure.
|
|
50
|
+
*/
|
|
51
|
+
export declare function verifyPeerSig(signer: string | Uint8Array, payload: Uint8Array, sig: Uint8Array): boolean;
|
|
52
|
+
//# sourceMappingURL=peer-sig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-sig.d.ts","sourceRoot":"","sources":["../../../src/cohort-topic/peer-sig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD,iGAAiG;AACjG,wBAAsB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAE/F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAWnF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAexG"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cohort-topic shared Ed25519 sign/verify primitive (libp2p peer keys).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the established peer-key signing pattern in `cluster-repo.ts` / `dispute-service.ts`
|
|
5
|
+
* (`PrivateKey.sign` → base64url; verify against the peer's public key), specialized for the
|
|
6
|
+
* cohort-topic substrate:
|
|
7
|
+
*
|
|
8
|
+
* - **Signing** uses the node's libp2p `PrivateKey.sign` (async — fine on the participant outbound
|
|
9
|
+
* path) and is the seam the threshold-assembly ticket reuses for per-member partial signatures.
|
|
10
|
+
* - **Verification is SYNCHRONOUS**, because the db-core verify ports (e.g. the participant-signature
|
|
11
|
+
* predicates and `ICohortThresholdCrypto.verify`) are synchronous. libp2p's
|
|
12
|
+
* `publicKeyFromRaw(raw).verify` is async, so this verifies with `@noble/curves/ed25519` directly
|
|
13
|
+
* over the raw 32-byte key. noble's `ed25519.verify` (ZIP215) is a strict superset of the RFC8032
|
|
14
|
+
* signatures the libp2p signer (Node/WebCrypto Ed25519) produces, so it accepts them.
|
|
15
|
+
*
|
|
16
|
+
* The signer id on the cohort wire is the UTF-8 bytes of the peer-id string (see `peer-codec.ts`).
|
|
17
|
+
* For an Ed25519 identity the public key is embedded in the identity multihash, so no network lookup
|
|
18
|
+
* is needed — `peerIdFromString(str).publicKey.raw` yields the raw key. Verification is **total**: any
|
|
19
|
+
* non-Ed25519 id, missing key, or malformed input returns `false` (it never throws). The cohort-topic
|
|
20
|
+
* substrate therefore assumes Ed25519 identities (the libp2p default; `generateKeyPair('Ed25519')`).
|
|
21
|
+
*/
|
|
22
|
+
import { peerIdFromString } from "@libp2p/peer-id";
|
|
23
|
+
import { ed25519 } from "@noble/curves/ed25519.js";
|
|
24
|
+
import { bytesToPeerIdString } from "./peer-codec.js";
|
|
25
|
+
/** Sign `payload` with the node's libp2p peer key. Async — libp2p `PrivateKey.sign` is async. */
|
|
26
|
+
export async function signPeer(privateKey, payload) {
|
|
27
|
+
return privateKey.sign(payload);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Sign `payload` with a libp2p Ed25519 peer key **synchronously** — the mirror of the synchronous
|
|
31
|
+
* {@link verifyPeerSig}. Use this where the signer seam is synchronous and the async {@link signPeer}
|
|
32
|
+
* cannot be awaited: e.g. the reactivity recover `signBackfill` / `signResume` `(unsigned) => string`
|
|
33
|
+
* ports, whose db-core driver builds the unsigned image internally (so a pre-signed value is impossible)
|
|
34
|
+
* and whose seam shape is `=> string`, not `=> Promise<string>`.
|
|
35
|
+
*
|
|
36
|
+
* libp2p's own `PrivateKey.sign` is async (Node / WebCrypto Ed25519), so this signs directly with
|
|
37
|
+
* `@noble/curves/ed25519` over the raw 32-byte seed. libp2p stores an Ed25519 private key as 64 bytes
|
|
38
|
+
* (`raw` = 32-byte seed ‖ 32-byte public key); noble's `ed25519.sign(message, secretKey)` takes the
|
|
39
|
+
* 32-byte seed. noble's signatures are RFC8032-compliant and deterministic, so both verify paths accept
|
|
40
|
+
* them: the libp2p `publicKeyFromRaw(raw).verify` (Node / WebCrypto) and the synchronous
|
|
41
|
+
* {@link verifyPeerSig} (noble, ZIP215) — symmetric with the verify direction's cross-acceptance, and
|
|
42
|
+
* byte-identical to what the async {@link signPeer} would produce for the same key + payload.
|
|
43
|
+
*
|
|
44
|
+
* Assumes an Ed25519 identity (the cohort-topic substrate's standing assumption). Throws on a
|
|
45
|
+
* non-Ed25519 key or an unexpected raw length — a programming error on the node's own key, never
|
|
46
|
+
* attacker-reachable input (the verify side, by contrast, is total and returns `false`).
|
|
47
|
+
*/
|
|
48
|
+
export function signPeerSig(privateKey, payload) {
|
|
49
|
+
if (privateKey.type !== "Ed25519") {
|
|
50
|
+
throw new Error(`signPeerSig: expected an Ed25519 private key, got "${privateKey.type}"`);
|
|
51
|
+
}
|
|
52
|
+
const raw = privateKey.raw;
|
|
53
|
+
// 64-byte libp2p form = seed ‖ public key; accept a bare 32-byte seed too.
|
|
54
|
+
const seed = raw.length === 64 ? raw.subarray(0, 32) : raw;
|
|
55
|
+
if (seed.length !== 32) {
|
|
56
|
+
throw new Error(`signPeerSig: expected a 32- or 64-byte Ed25519 raw key, got ${raw.length} bytes`);
|
|
57
|
+
}
|
|
58
|
+
return ed25519.sign(payload, seed);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Verify an Ed25519 peer-key signature synchronously. `signer` is the cohort-wire member id — the
|
|
62
|
+
* UTF-8 bytes of the peer-id string (see {@link bytesToPeerIdString}) — or that peer-id string
|
|
63
|
+
* directly. Returns `false` (never throws) on a non-Ed25519 id, a missing/short key, a malformed
|
|
64
|
+
* signature, or any decode failure.
|
|
65
|
+
*/
|
|
66
|
+
export function verifyPeerSig(signer, payload, sig) {
|
|
67
|
+
try {
|
|
68
|
+
const peerIdStr = typeof signer === "string" ? signer : bytesToPeerIdString(signer);
|
|
69
|
+
const peerId = peerIdFromString(peerIdStr);
|
|
70
|
+
if (peerId.type !== "Ed25519" || peerId.publicKey === undefined) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
const rawPub = peerId.publicKey.raw;
|
|
74
|
+
if (rawPub.length !== 32) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return ed25519.verify(sig, payload, rawPub);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=peer-sig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-sig.js","sourceRoot":"","sources":["../../../src/cohort-topic/peer-sig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAAsB,EAAE,OAAmB;IACzE,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CAAC,UAAsB,EAAE,OAAmB;IACtE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,sDAAsD,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC3B,2EAA2E;IAC3E,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,+DAA+D,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAA2B,EAAE,OAAmB,EAAE,GAAe;IAC9F,IAAI,CAAC;QACJ,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjE,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;QACpC,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cohort-topic libp2p protocol IDs (`docs/cohort-topic.md` §FRET integration L432-460).
|
|
3
|
+
*
|
|
4
|
+
* Five protocols ride the same FRET/libp2p node:
|
|
5
|
+
*
|
|
6
|
+
* - `register` — Register, renew, re-attach (`RegisterV1` / `RenewV1`, routed via `RouteAndMaybeAct`).
|
|
7
|
+
* - `cohort-gossip` — record replication, willingness, load barometers (`CohortGossipV1`).
|
|
8
|
+
* - `promote` — threshold-signed promotion / demotion notices.
|
|
9
|
+
* - `membership` — membership certificates (`MembershipCertV1`).
|
|
10
|
+
* - `sign` — intra-cohort per-member endorsement for `k − x` threshold-signature assembly
|
|
11
|
+
* (`SignRequestV1` / `SignReplyV1`); a member collecting a threshold signature dials
|
|
12
|
+
* each cohort member here and concatenates the returned per-member Ed25519 sigs.
|
|
13
|
+
*
|
|
14
|
+
* The default (network-agnostic) IDs match the doc verbatim; {@link makeCohortTopicProtocols}
|
|
15
|
+
* mirrors FRET's `makeProtocols(networkName)` so a named network namespaces its cohort-topic
|
|
16
|
+
* protocols the same way FRET namespaces its routing protocols.
|
|
17
|
+
*/
|
|
18
|
+
/** Base path for the cohort-topic protocol family. */
|
|
19
|
+
export declare const COHORT_TOPIC_BASE: "/optimystic/cohort-topic/1.0.0";
|
|
20
|
+
/** `RegisterV1` / `RenewV1` — register, renew, re-attach. */
|
|
21
|
+
export declare const PROTOCOL_COHORT_REGISTER: "/optimystic/cohort-topic/1.0.0/register";
|
|
22
|
+
/** `CohortGossipV1` — record replication, willingness, load barometers. */
|
|
23
|
+
export declare const PROTOCOL_COHORT_GOSSIP: "/optimystic/cohort-topic/1.0.0/cohort-gossip";
|
|
24
|
+
/** Threshold-signed promotion / demotion notices. */
|
|
25
|
+
export declare const PROTOCOL_COHORT_PROMOTE: "/optimystic/cohort-topic/1.0.0/promote";
|
|
26
|
+
/** `MembershipCertV1` — membership certificates. */
|
|
27
|
+
export declare const PROTOCOL_COHORT_MEMBERSHIP: "/optimystic/cohort-topic/1.0.0/membership";
|
|
28
|
+
/** `SignRequestV1` / `SignReplyV1` — intra-cohort per-member endorsement for threshold-signature assembly. */
|
|
29
|
+
export declare const PROTOCOL_COHORT_SIGN: "/optimystic/cohort-topic/1.0.0/sign";
|
|
30
|
+
/** The five cohort-topic protocol IDs in registration order. */
|
|
31
|
+
export interface CohortTopicProtocols {
|
|
32
|
+
readonly register: string;
|
|
33
|
+
readonly gossip: string;
|
|
34
|
+
readonly promote: string;
|
|
35
|
+
readonly membership: string;
|
|
36
|
+
readonly sign: string;
|
|
37
|
+
}
|
|
38
|
+
/** Default (network-agnostic) protocol IDs, matching `docs/cohort-topic.md` §FRET integration. */
|
|
39
|
+
export declare const DEFAULT_COHORT_TOPIC_PROTOCOLS: CohortTopicProtocols;
|
|
40
|
+
/**
|
|
41
|
+
* Namespaced cohort-topic protocol IDs for `networkName` (mirrors FRET's `makeProtocols`, which
|
|
42
|
+
* inserts the network segment even for `"default"` → `/optimystic/default/...`). Note this does NOT
|
|
43
|
+
* equal {@link DEFAULT_COHORT_TOPIC_PROTOCOLS}: the canonical, network-agnostic IDs omit the segment
|
|
44
|
+
* entirely (`/optimystic/cohort-topic/1.0.0/...`); use those unless you need per-network namespacing.
|
|
45
|
+
*/
|
|
46
|
+
export declare function makeCohortTopicProtocols(networkName?: string): CohortTopicProtocols;
|
|
47
|
+
/** All five protocol IDs as an array (for `node.handle` / `unhandle` over the set). */
|
|
48
|
+
export declare function cohortTopicProtocolList(p: CohortTopicProtocols): string[];
|
|
49
|
+
//# sourceMappingURL=protocols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocols.d.ts","sourceRoot":"","sources":["../../../src/cohort-topic/protocols.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAG,gCAAyC,CAAC;AAE3E,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,2CAA2C,CAAC;AACjF,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,gDAAgD,CAAC;AACpF,qDAAqD;AACrD,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AAC/E,oDAAoD;AACpD,eAAO,MAAM,0BAA0B,6CAA6C,CAAC;AACrF,8GAA8G;AAC9G,eAAO,MAAM,oBAAoB,uCAAuC,CAAC;AAEzE,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED,kGAAkG;AAClG,eAAO,MAAM,8BAA8B,EAAE,oBAM5C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,SAAY,GAAG,oBAAoB,CAStF;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAEzE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cohort-topic libp2p protocol IDs (`docs/cohort-topic.md` §FRET integration L432-460).
|
|
3
|
+
*
|
|
4
|
+
* Five protocols ride the same FRET/libp2p node:
|
|
5
|
+
*
|
|
6
|
+
* - `register` — Register, renew, re-attach (`RegisterV1` / `RenewV1`, routed via `RouteAndMaybeAct`).
|
|
7
|
+
* - `cohort-gossip` — record replication, willingness, load barometers (`CohortGossipV1`).
|
|
8
|
+
* - `promote` — threshold-signed promotion / demotion notices.
|
|
9
|
+
* - `membership` — membership certificates (`MembershipCertV1`).
|
|
10
|
+
* - `sign` — intra-cohort per-member endorsement for `k − x` threshold-signature assembly
|
|
11
|
+
* (`SignRequestV1` / `SignReplyV1`); a member collecting a threshold signature dials
|
|
12
|
+
* each cohort member here and concatenates the returned per-member Ed25519 sigs.
|
|
13
|
+
*
|
|
14
|
+
* The default (network-agnostic) IDs match the doc verbatim; {@link makeCohortTopicProtocols}
|
|
15
|
+
* mirrors FRET's `makeProtocols(networkName)` so a named network namespaces its cohort-topic
|
|
16
|
+
* protocols the same way FRET namespaces its routing protocols.
|
|
17
|
+
*/
|
|
18
|
+
/** Base path for the cohort-topic protocol family. */
|
|
19
|
+
export const COHORT_TOPIC_BASE = "/optimystic/cohort-topic/1.0.0";
|
|
20
|
+
/** `RegisterV1` / `RenewV1` — register, renew, re-attach. */
|
|
21
|
+
export const PROTOCOL_COHORT_REGISTER = `${COHORT_TOPIC_BASE}/register`;
|
|
22
|
+
/** `CohortGossipV1` — record replication, willingness, load barometers. */
|
|
23
|
+
export const PROTOCOL_COHORT_GOSSIP = `${COHORT_TOPIC_BASE}/cohort-gossip`;
|
|
24
|
+
/** Threshold-signed promotion / demotion notices. */
|
|
25
|
+
export const PROTOCOL_COHORT_PROMOTE = `${COHORT_TOPIC_BASE}/promote`;
|
|
26
|
+
/** `MembershipCertV1` — membership certificates. */
|
|
27
|
+
export const PROTOCOL_COHORT_MEMBERSHIP = `${COHORT_TOPIC_BASE}/membership`;
|
|
28
|
+
/** `SignRequestV1` / `SignReplyV1` — intra-cohort per-member endorsement for threshold-signature assembly. */
|
|
29
|
+
export const PROTOCOL_COHORT_SIGN = `${COHORT_TOPIC_BASE}/sign`;
|
|
30
|
+
/** Default (network-agnostic) protocol IDs, matching `docs/cohort-topic.md` §FRET integration. */
|
|
31
|
+
export const DEFAULT_COHORT_TOPIC_PROTOCOLS = {
|
|
32
|
+
register: PROTOCOL_COHORT_REGISTER,
|
|
33
|
+
gossip: PROTOCOL_COHORT_GOSSIP,
|
|
34
|
+
promote: PROTOCOL_COHORT_PROMOTE,
|
|
35
|
+
membership: PROTOCOL_COHORT_MEMBERSHIP,
|
|
36
|
+
sign: PROTOCOL_COHORT_SIGN,
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Namespaced cohort-topic protocol IDs for `networkName` (mirrors FRET's `makeProtocols`, which
|
|
40
|
+
* inserts the network segment even for `"default"` → `/optimystic/default/...`). Note this does NOT
|
|
41
|
+
* equal {@link DEFAULT_COHORT_TOPIC_PROTOCOLS}: the canonical, network-agnostic IDs omit the segment
|
|
42
|
+
* entirely (`/optimystic/cohort-topic/1.0.0/...`); use those unless you need per-network namespacing.
|
|
43
|
+
*/
|
|
44
|
+
export function makeCohortTopicProtocols(networkName = "default") {
|
|
45
|
+
const base = `/optimystic/${networkName}/cohort-topic/1.0.0`;
|
|
46
|
+
return {
|
|
47
|
+
register: `${base}/register`,
|
|
48
|
+
gossip: `${base}/cohort-gossip`,
|
|
49
|
+
promote: `${base}/promote`,
|
|
50
|
+
membership: `${base}/membership`,
|
|
51
|
+
sign: `${base}/sign`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/** All five protocol IDs as an array (for `node.handle` / `unhandle` over the set). */
|
|
55
|
+
export function cohortTopicProtocolList(p) {
|
|
56
|
+
return [p.register, p.gossip, p.promote, p.membership, p.sign];
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=protocols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../src/cohort-topic/protocols.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gCAAyC,CAAC;AAE3E,6DAA6D;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,iBAAiB,WAAoB,CAAC;AACjF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,iBAAiB,gBAAyB,CAAC;AACpF,qDAAqD;AACrD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,iBAAiB,UAAmB,CAAC;AAC/E,oDAAoD;AACpD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,iBAAiB,aAAsB,CAAC;AACrF,8GAA8G;AAC9G,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,iBAAiB,OAAgB,CAAC;AAWzE,kGAAkG;AAClG,MAAM,CAAC,MAAM,8BAA8B,GAAyB;IACnE,QAAQ,EAAE,wBAAwB;IAClC,MAAM,EAAE,sBAAsB;IAC9B,OAAO,EAAE,uBAAuB;IAChC,UAAU,EAAE,0BAA0B;IACtC,IAAI,EAAE,oBAAoB;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAW,GAAG,SAAS;IAC/D,MAAM,IAAI,GAAG,eAAe,WAAW,qBAAqB,CAAC;IAC7D,OAAO;QACN,QAAQ,EAAE,GAAG,IAAI,WAAW;QAC5B,MAAM,EAAE,GAAG,IAAI,gBAAgB;QAC/B,OAAO,EAAE,GAAG,IAAI,UAAU;QAC1B,UAAU,EAAE,GAAG,IAAI,aAAa;QAChC,IAAI,EAAE,GAAG,IAAI,OAAO;KACpB,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,uBAAuB,CAAC,CAAuB;IAC9D,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC"}
|