@origintrail-official/dkg-agent 10.0.19 → 10.0.20
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/confirmed-graph-scoped-vm-resolver.d.ts +7 -1
- package/dist/confirmed-graph-scoped-vm-resolver.d.ts.map +1 -1
- package/dist/confirmed-graph-scoped-vm-resolver.js +5 -3
- package/dist/confirmed-graph-scoped-vm-resolver.js.map +1 -1
- package/dist/context-graph-authority-dependency.d.ts +11 -0
- package/dist/context-graph-authority-dependency.d.ts.map +1 -0
- package/dist/context-graph-authority-dependency.js +50 -0
- package/dist/context-graph-authority-dependency.js.map +1 -0
- package/dist/context-graph-binding-state.d.ts +6 -0
- package/dist/context-graph-binding-state.d.ts.map +1 -1
- package/dist/context-graph-binding-state.js +17 -10
- package/dist/context-graph-binding-state.js.map +1 -1
- package/dist/context-graph-claim-proof.d.ts +74 -0
- package/dist/context-graph-claim-proof.d.ts.map +1 -0
- package/dist/context-graph-claim-proof.js +137 -0
- package/dist/context-graph-claim-proof.js.map +1 -0
- package/dist/context-graph-member-proof.d.ts +20 -0
- package/dist/context-graph-member-proof.d.ts.map +1 -0
- package/dist/context-graph-member-proof.js +106 -0
- package/dist/context-graph-member-proof.js.map +1 -0
- package/dist/context-graph-meta-confirmation.d.ts +22 -2
- package/dist/context-graph-meta-confirmation.d.ts.map +1 -1
- package/dist/context-graph-meta-confirmation.js +54 -23
- package/dist/context-graph-meta-confirmation.js.map +1 -1
- package/dist/context-graph-metadata-relocation.d.ts +18 -30
- package/dist/context-graph-metadata-relocation.d.ts.map +1 -1
- package/dist/context-graph-metadata-relocation.js +32 -2
- package/dist/context-graph-metadata-relocation.js.map +1 -1
- package/dist/context-graph-private-meta-proof.d.ts +3 -9
- package/dist/context-graph-private-meta-proof.d.ts.map +1 -1
- package/dist/context-graph-private-meta-proof.js +2 -89
- package/dist/context-graph-private-meta-proof.js.map +1 -1
- package/dist/context-graph-public-meta-proof.d.ts +11 -1
- package/dist/context-graph-public-meta-proof.d.ts.map +1 -1
- package/dist/context-graph-public-meta-proof.js +23 -3
- package/dist/context-graph-public-meta-proof.js.map +1 -1
- package/dist/context-graph-read-authority.d.ts +17 -3
- package/dist/context-graph-read-authority.d.ts.map +1 -1
- package/dist/context-graph-read-authority.js +39 -15
- package/dist/context-graph-read-authority.js.map +1 -1
- package/dist/context-graph-storage-discovery.d.ts +3 -2
- package/dist/context-graph-storage-discovery.d.ts.map +1 -1
- package/dist/context-graph-storage-discovery.js +16 -5
- package/dist/context-graph-storage-discovery.js.map +1 -1
- package/dist/context-graph-subscription-authority-recovery.d.ts +7 -0
- package/dist/context-graph-subscription-authority-recovery.d.ts.map +1 -1
- package/dist/context-graph-subscription-authority-recovery.js +1 -0
- package/dist/context-graph-subscription-authority-recovery.js.map +1 -1
- package/dist/curator-meta-refresh.d.ts +16 -4
- package/dist/curator-meta-refresh.d.ts.map +1 -1
- package/dist/curator-meta-refresh.js +59 -14
- package/dist/curator-meta-refresh.js.map +1 -1
- package/dist/dkg-agent-agents-phonebook.d.ts +41 -0
- package/dist/dkg-agent-agents-phonebook.d.ts.map +1 -0
- package/dist/dkg-agent-agents-phonebook.js +155 -0
- package/dist/dkg-agent-agents-phonebook.js.map +1 -0
- package/dist/dkg-agent-base.d.ts +68 -2
- package/dist/dkg-agent-base.d.ts.map +1 -1
- package/dist/dkg-agent-base.js +78 -3
- package/dist/dkg-agent-base.js.map +1 -1
- package/dist/dkg-agent-cg-chain-observation.d.ts +6 -1
- package/dist/dkg-agent-cg-chain-observation.d.ts.map +1 -1
- package/dist/dkg-agent-cg-chain-observation.js +20 -5
- package/dist/dkg-agent-cg-chain-observation.js.map +1 -1
- package/dist/dkg-agent-cg-name-resolution.d.ts +38 -2
- package/dist/dkg-agent-cg-name-resolution.d.ts.map +1 -1
- package/dist/dkg-agent-cg-name-resolution.js +100 -8
- package/dist/dkg-agent-cg-name-resolution.js.map +1 -1
- package/dist/dkg-agent-cg-registry.d.ts +33 -3
- package/dist/dkg-agent-cg-registry.d.ts.map +1 -1
- package/dist/dkg-agent-cg-registry.js +91 -14
- package/dist/dkg-agent-cg-registry.js.map +1 -1
- package/dist/dkg-agent-cg-resolve.d.ts.map +1 -1
- package/dist/dkg-agent-cg-resolve.js +18 -2
- package/dist/dkg-agent-cg-resolve.js.map +1 -1
- package/dist/dkg-agent-constants.d.ts +6 -0
- package/dist/dkg-agent-constants.d.ts.map +1 -1
- package/dist/dkg-agent-constants.js +6 -0
- package/dist/dkg-agent-constants.js.map +1 -1
- package/dist/dkg-agent-context-graph.d.ts.map +1 -1
- package/dist/dkg-agent-context-graph.js +1 -5
- package/dist/dkg-agent-context-graph.js.map +1 -1
- package/dist/dkg-agent-crypto.d.ts +28 -1
- package/dist/dkg-agent-crypto.d.ts.map +1 -1
- package/dist/dkg-agent-crypto.js +176 -46
- package/dist/dkg-agent-crypto.js.map +1 -1
- package/dist/dkg-agent-diagnostics.d.ts.map +1 -1
- package/dist/dkg-agent-diagnostics.js +4 -3
- package/dist/dkg-agent-diagnostics.js.map +1 -1
- package/dist/dkg-agent-lifecycle.d.ts +76 -12
- package/dist/dkg-agent-lifecycle.d.ts.map +1 -1
- package/dist/dkg-agent-lifecycle.js +406 -108
- package/dist/dkg-agent-lifecycle.js.map +1 -1
- package/dist/dkg-agent-publish.d.ts.map +1 -1
- package/dist/dkg-agent-publish.js +9 -30
- package/dist/dkg-agent-publish.js.map +1 -1
- package/dist/dkg-agent-query.d.ts.map +1 -1
- package/dist/dkg-agent-query.js +31 -27
- package/dist/dkg-agent-query.js.map +1 -1
- package/dist/dkg-agent-rfc64-catalog.d.ts +31 -0
- package/dist/dkg-agent-rfc64-catalog.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-catalog.js +239 -33
- package/dist/dkg-agent-rfc64-catalog.js.map +1 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.d.ts +6 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-meta-bootstrap.js +29 -13
- package/dist/dkg-agent-rfc64-meta-bootstrap.js.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.d.ts +8 -0
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.js +249 -40
- package/dist/dkg-agent-rfc64-swm-catalog-projection-supervisor.js.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection.d.ts.map +1 -1
- package/dist/dkg-agent-rfc64-swm-catalog-projection.js +3 -2
- package/dist/dkg-agent-rfc64-swm-catalog-projection.js.map +1 -1
- package/dist/dkg-agent-swm-host.d.ts +174 -0
- package/dist/dkg-agent-swm-host.d.ts.map +1 -1
- package/dist/dkg-agent-swm-host.js +654 -24
- package/dist/dkg-agent-swm-host.js.map +1 -1
- package/dist/dkg-agent-swm-substrate.d.ts +47 -8
- package/dist/dkg-agent-swm-substrate.d.ts.map +1 -1
- package/dist/dkg-agent-swm-substrate.js +128 -12
- package/dist/dkg-agent-swm-substrate.js.map +1 -1
- package/dist/dkg-agent-types.d.ts +24 -1
- package/dist/dkg-agent-types.d.ts.map +1 -1
- package/dist/dkg-agent-vm-promotion.d.ts +2 -0
- package/dist/dkg-agent-vm-promotion.d.ts.map +1 -1
- package/dist/dkg-agent-vm-promotion.js +1 -0
- package/dist/dkg-agent-vm-promotion.js.map +1 -1
- package/dist/dkg-agent-vm-reconcile-scheduling.d.ts +7 -0
- package/dist/dkg-agent-vm-reconcile-scheduling.d.ts.map +1 -1
- package/dist/dkg-agent-vm-reconcile-scheduling.js +18 -0
- package/dist/dkg-agent-vm-reconcile-scheduling.js.map +1 -1
- package/dist/dkg-agent.d.ts +24 -2
- package/dist/dkg-agent.d.ts.map +1 -1
- package/dist/dkg-agent.js +114 -28
- package/dist/dkg-agent.js.map +1 -1
- package/dist/finalization-handler.d.ts +7 -4
- package/dist/finalization-handler.d.ts.map +1 -1
- package/dist/finalization-handler.js +15 -6
- package/dist/finalization-handler.js.map +1 -1
- package/dist/finalization-recovery-sqlite-displacement.d.ts +37 -0
- package/dist/finalization-recovery-sqlite-displacement.d.ts.map +1 -0
- package/dist/finalization-recovery-sqlite-displacement.js +102 -0
- package/dist/finalization-recovery-sqlite-displacement.js.map +1 -0
- package/dist/finalization-recovery-sqlite-policy.d.ts +20 -4
- package/dist/finalization-recovery-sqlite-policy.d.ts.map +1 -1
- package/dist/finalization-recovery-sqlite-policy.js +21 -5
- package/dist/finalization-recovery-sqlite-policy.js.map +1 -1
- package/dist/finalization-recovery-sqlite-rows.d.ts +53 -0
- package/dist/finalization-recovery-sqlite-rows.d.ts.map +1 -0
- package/dist/finalization-recovery-sqlite-rows.js +77 -0
- package/dist/finalization-recovery-sqlite-rows.js.map +1 -0
- package/dist/finalization-recovery-sqlite-store.d.ts +10 -4
- package/dist/finalization-recovery-sqlite-store.d.ts.map +1 -1
- package/dist/finalization-recovery-sqlite-store.js +49 -50
- package/dist/finalization-recovery-sqlite-store.js.map +1 -1
- package/dist/finalization-recovery-store.d.ts +18 -0
- package/dist/finalization-recovery-store.d.ts.map +1 -1
- package/dist/finalization-recovery-store.js +24 -0
- package/dist/finalization-recovery-store.js.map +1 -1
- package/dist/finalization-recovery.d.ts +2 -3
- package/dist/finalization-recovery.d.ts.map +1 -1
- package/dist/finalization-recovery.js +12 -9
- package/dist/finalization-recovery.js.map +1 -1
- package/dist/gossip-publish-handler.d.ts.map +1 -1
- package/dist/gossip-publish-handler.js +4 -2
- package/dist/gossip-publish-handler.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/context-graph-authority/approved-member-acceptance.d.ts +61 -0
- package/dist/internal/context-graph-authority/approved-member-acceptance.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/approved-member-acceptance.js +75 -0
- package/dist/internal/context-graph-authority/approved-member-acceptance.js.map +1 -0
- package/dist/internal/context-graph-authority/context-graph-authority.d.ts +1 -0
- package/dist/internal/context-graph-authority/context-graph-authority.d.ts.map +1 -1
- package/dist/internal/context-graph-authority/context-graph-authority.js +25 -0
- package/dist/internal/context-graph-authority/context-graph-authority.js.map +1 -1
- package/dist/internal/context-graph-authority/swm-transport-authority.d.ts +48 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.d.ts.map +1 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.js +58 -0
- package/dist/internal/context-graph-authority/swm-transport-authority.js.map +1 -0
- package/dist/internal/promote/assertion-promote-precommit.d.ts.map +1 -1
- package/dist/internal/promote/assertion-promote-precommit.js +6 -18
- package/dist/internal/promote/assertion-promote-precommit.js.map +1 -1
- package/dist/p2p/peer-connect.d.ts +10 -1
- package/dist/p2p/peer-connect.d.ts.map +1 -1
- package/dist/p2p/peer-connect.js +11 -2
- package/dist/p2p/peer-connect.js.map +1 -1
- package/dist/p2p/peer-selection.d.ts +8 -0
- package/dist/p2p/peer-selection.d.ts.map +1 -1
- package/dist/p2p/peer-selection.js +21 -12
- package/dist/p2p/peer-selection.js.map +1 -1
- package/dist/p2p/protocol-readiness.d.ts +3 -3
- package/dist/p2p/protocol-readiness.d.ts.map +1 -1
- package/dist/p2p/protocol-readiness.js +4 -3
- package/dist/p2p/protocol-readiness.js.map +1 -1
- package/dist/registered-context-graph-authority.d.ts +12 -0
- package/dist/registered-context-graph-authority.d.ts.map +1 -1
- package/dist/rfc64/applied-catalog-authority-transition-v1.d.ts.map +1 -1
- package/dist/rfc64/applied-catalog-authority-transition-v1.js +15 -17
- package/dist/rfc64/applied-catalog-authority-transition-v1.js.map +1 -1
- package/dist/rfc64/catalog-operational-applied-heads-v1.d.ts +6 -10
- package/dist/rfc64/catalog-operational-applied-heads-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-operational-applied-heads-v1.js +12 -50
- package/dist/rfc64/catalog-operational-applied-heads-v1.js.map +1 -1
- package/dist/rfc64/catalog-repair-diagnostics-v1.d.ts +28 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.js +93 -0
- package/dist/rfc64/catalog-repair-diagnostics-v1.js.map +1 -0
- package/dist/rfc64/catalog-repair-retry-v1.d.ts +13 -0
- package/dist/rfc64/catalog-repair-retry-v1.d.ts.map +1 -0
- package/dist/rfc64/catalog-repair-retry-v1.js +39 -0
- package/dist/rfc64/catalog-repair-retry-v1.js.map +1 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts +50 -0
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js +171 -8
- package/dist/rfc64/catalog-replay-recovery-runtime-v1.js.map +1 -1
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.d.ts +2 -8
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.js +10 -37
- package/dist/rfc64/catalog-replay-snapshot-runtime-v1.js.map +1 -1
- package/dist/rfc64/catalog-rollout-authority-v1.d.ts +13 -0
- package/dist/rfc64/catalog-rollout-authority-v1.d.ts.map +1 -1
- package/dist/rfc64/catalog-rollout-authority-v1.js +11 -0
- package/dist/rfc64/catalog-rollout-authority-v1.js.map +1 -1
- package/dist/rfc64/catalog-row-authorship.d.ts +12 -0
- package/dist/rfc64/catalog-row-authorship.d.ts.map +1 -1
- package/dist/rfc64/catalog-row-authorship.js +110 -57
- package/dist/rfc64/catalog-row-authorship.js.map +1 -1
- package/dist/rfc64/inventory-v1/candidate.d.ts +31 -10
- package/dist/rfc64/inventory-v1/candidate.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/candidate.js +51 -16
- package/dist/rfc64/inventory-v1/candidate.js.map +1 -1
- package/dist/rfc64/inventory-v1/index.d.ts +1 -1
- package/dist/rfc64/inventory-v1/index.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/index.js +1 -1
- package/dist/rfc64/inventory-v1/index.js.map +1 -1
- package/dist/rfc64/inventory-v1/open.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/open.js +7 -4
- package/dist/rfc64/inventory-v1/open.js.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.d.ts +3 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.d.ts.map +1 -1
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.js +15 -0
- package/dist/rfc64/inventory-v1/swm-author-inventory-persistence.js.map +1 -1
- package/dist/rfc64/public-catalog-native-receiver-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-native-receiver-v1.js +26 -21
- package/dist/rfc64/public-catalog-native-receiver-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-native-reconciler-v1.d.ts +17 -11
- package/dist/rfc64/public-catalog-native-reconciler-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-native-reconciler-v1.js +10 -8
- package/dist/rfc64/public-catalog-native-reconciler-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-receiver-v1.d.ts +9 -0
- package/dist/rfc64/public-catalog-receiver-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-receiver-v1.js +11 -2
- package/dist/rfc64/public-catalog-receiver-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-service-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-service-v1.js +21 -22
- package/dist/rfc64/public-catalog-service-v1.js.map +1 -1
- package/dist/rfc64/public-catalog-successor-producer-v1.d.ts.map +1 -1
- package/dist/rfc64/public-catalog-successor-producer-v1.js +5 -4
- package/dist/rfc64/public-catalog-successor-producer-v1.js.map +1 -1
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.js +60 -53
- package/dist/rfc64/swm-catalog-durable-asset-resolver-v1.js.map +1 -1
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.d.ts +2 -1
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.d.ts.map +1 -1
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.js +44 -4
- package/dist/rfc64/swm-inventory-catalog-reconciler-v1.js.map +1 -1
- package/dist/sync/exact-asset-fetch.d.ts +22 -0
- package/dist/sync/exact-asset-fetch.d.ts.map +1 -1
- package/dist/sync/exact-asset-fetch.js +30 -3
- package/dist/sync/exact-asset-fetch.js.map +1 -1
- package/dist/sync/on-connect/sync-on-connect.d.ts +1 -1
- package/dist/sync/on-connect/sync-on-connect.d.ts.map +1 -1
- package/dist/sync/on-connect/sync-on-connect.js +3 -3
- package/dist/sync/on-connect/sync-on-connect.js.map +1 -1
- package/dist/sync/on-demand-agents-phonebook.d.ts +162 -0
- package/dist/sync/on-demand-agents-phonebook.d.ts.map +1 -0
- package/dist/sync/on-demand-agents-phonebook.js +571 -0
- package/dist/sync/on-demand-agents-phonebook.js.map +1 -0
- package/dist/sync/requester/graph-scoped-materialization.js +3 -3
- package/dist/sync/requester/graph-scoped-materialization.js.map +1 -1
- package/dist/sync/responder/sync-handler.d.ts +8 -0
- package/dist/sync/responder/sync-handler.d.ts.map +1 -1
- package/dist/sync/responder/sync-handler.js +6 -1
- package/dist/sync/responder/sync-handler.js.map +1 -1
- package/dist/sync/system-context-graph-policy.d.ts +10 -0
- package/dist/sync/system-context-graph-policy.d.ts.map +1 -1
- package/dist/sync/system-context-graph-policy.js +11 -0
- package/dist/sync/system-context-graph-policy.js.map +1 -1
- package/dist/vm-publish-snapshot-preflight.d.ts +13 -0
- package/dist/vm-publish-snapshot-preflight.d.ts.map +1 -0
- package/dist/vm-publish-snapshot-preflight.js +94 -0
- package/dist/vm-publish-snapshot-preflight.js.map +1 -0
- package/dist/vm-refresh.d.ts +138 -0
- package/dist/vm-refresh.d.ts.map +1 -0
- package/dist/vm-refresh.js +201 -0
- package/dist/vm-refresh.js.map +1 -0
- package/package.json +10 -8
|
@@ -10,7 +10,13 @@ export interface ConfirmedGraphScopedVmResolutionInput {
|
|
|
10
10
|
batchId: bigint;
|
|
11
11
|
subGraphName?: string;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Why a stored confirmed copy does not answer the request. `not-current` is
|
|
15
|
+
* the one expected in normal operation: the copy is intact and names the same
|
|
16
|
+
* KA, but at another version or root than the one asked for (typically an
|
|
17
|
+
* older version after an on-chain update).
|
|
18
|
+
*/
|
|
19
|
+
export type ConfirmedGraphScopedVmInvalidReason = 'metadata' | 'identity' | 'not-current' | 'content-count' | 'content-merkle';
|
|
14
20
|
export type ConfirmedGraphScopedVmResolution = {
|
|
15
21
|
status: 'absent';
|
|
16
22
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirmed-graph-scoped-vm-resolver.d.ts","sourceRoot":"","sources":["../src/confirmed-graph-scoped-vm-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAGL,KAAK,4CAA4C,EAClD,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAG3E,MAAM,WAAW,qCAAqC;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,mCAAmC,GAC3C,UAAU,GACV,UAAU,GACV,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,MAAM,gCAAgC,GACxC;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,mCAAmC,CAAA;CAAE,GAClE;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,4CAA4C,CAAC;IACvD,KAAK,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC;IACzD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAON;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,qCAAqC,GAC3C,OAAO,CAAC,gCAAgC,CAAC,CAE3C;AAED;;;;;GAKG;AACH,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,IAAI,CAAC,qCAAqC,EAAE,YAAY,CAAC,GAC/D,OAAO,CAAC,gCAAgC,CAAC,CAE3C"}
|
|
1
|
+
{"version":3,"file":"confirmed-graph-scoped-vm-resolver.d.ts","sourceRoot":"","sources":["../src/confirmed-graph-scoped-vm-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAGL,KAAK,4CAA4C,EAClD,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAG3E,MAAM,WAAW,qCAAqC;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,MAAM,mCAAmC,GAC3C,UAAU,GACV,UAAU,GACV,aAAa,GACb,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,MAAM,gCAAgC,GACxC;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,mCAAmC,CAAA;CAAE,GAClE;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,4CAA4C,CAAC;IACvD,KAAK,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC;IACzD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAON;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,qCAAqC,GAC3C,OAAO,CAAC,gCAAgC,CAAC,CAE3C;AAED;;;;;GAKG;AACH,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,IAAI,CAAC,qCAAqC,EAAE,YAAY,CAAC,GAC/D,OAAO,CAAC,gCAAgC,CAAC,CAE3C"}
|
|
@@ -44,12 +44,14 @@ async function resolveConfirmedGraphScopedVmAgainst(store, input, chainMerkleRoo
|
|
|
44
44
|
if (scope.ual !== input.ual
|
|
45
45
|
|| packedKaId !== input.kaId
|
|
46
46
|
|| envelope.batchId !== input.batchId
|
|
47
|
-
|| (input.assertionVersion !== undefined
|
|
48
|
-
&& BigInt(envelope.assertionVersion) !== input.assertionVersion)
|
|
49
|
-
|| (chainMerkleRoot !== undefined && !equalBytes(envelope.merkleRoot, chainMerkleRoot))
|
|
50
47
|
|| input.subGraphName !== envelope.subGraphName) {
|
|
51
48
|
return { status: 'invalid', reason: 'identity' };
|
|
52
49
|
}
|
|
50
|
+
if ((input.assertionVersion !== undefined
|
|
51
|
+
&& BigInt(envelope.assertionVersion) !== input.assertionVersion)
|
|
52
|
+
|| (chainMerkleRoot !== undefined && !equalBytes(envelope.merkleRoot, chainMerkleRoot))) {
|
|
53
|
+
return { status: 'invalid', reason: 'not-current' };
|
|
54
|
+
}
|
|
53
55
|
const content = await verifyExactGraphContent(store, {
|
|
54
56
|
graphUri: envelope.assertionGraph,
|
|
55
57
|
publicTripleCount: envelope.publicTripleCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirmed-graph-scoped-vm-resolver.js","sourceRoot":"","sources":["../src/confirmed-graph-scoped-vm-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EACL,gDAAgD,EAChD,0BAA0B,GAE3B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"confirmed-graph-scoped-vm-resolver.js","sourceRoot":"","sources":["../src/confirmed-graph-scoped-vm-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ContextGraphReadAuthorityDependency, RegisteredContextGraphAuthorityUnavailable } from './registered-context-graph-authority.js';
|
|
2
|
+
export type { ContextGraphReadAuthorityDependency } from './registered-context-graph-authority.js';
|
|
3
|
+
/**
|
|
4
|
+
* The dependency a caught authority-source error belongs to, read from the
|
|
5
|
+
* stable codes of it and its `cause` chain: store deadlines, recovery and
|
|
6
|
+
* admission shedding, or chain RPC transport failures.
|
|
7
|
+
*/
|
|
8
|
+
export declare function contextGraphReadAuthorityDependencyOf(error: unknown): ContextGraphReadAuthorityDependency;
|
|
9
|
+
/** Which dependency an unavailable registered authority names: the one its producer classified, or its reason's. */
|
|
10
|
+
export declare function registeredContextGraphAuthorityUnavailableDependency(unavailable: RegisteredContextGraphAuthorityUnavailable): ContextGraphReadAuthorityDependency;
|
|
11
|
+
//# sourceMappingURL=context-graph-authority-dependency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-graph-authority-dependency.d.ts","sourceRoot":"","sources":["../src/context-graph-authority-dependency.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mCAAmC,EACnC,0CAA0C,EAE3C,MAAM,yCAAyC,CAAC;AAEjD,YAAY,EAAE,mCAAmC,EAAE,MAAM,yCAAyC,CAAC;AAEnG;;;;GAIG;AACH,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,OAAO,GAAG,mCAAmC,CAYzG;AAwBD,oHAAoH;AACpH,wBAAgB,oDAAoD,CAClE,WAAW,EAAE,0CAA0C,GACtD,mCAAmC,CAIrC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { isChainRpcTransportError } from '@origintrail-official/dkg-chain';
|
|
3
|
+
import { isStoreOperationTimeoutError, isStoreSchedulerBusyError } from '@origintrail-official/dkg-storage';
|
|
4
|
+
/**
|
|
5
|
+
* The dependency a caught authority-source error belongs to, read from the
|
|
6
|
+
* stable codes of it and its `cause` chain: store deadlines, recovery and
|
|
7
|
+
* admission shedding, or chain RPC transport failures.
|
|
8
|
+
*/
|
|
9
|
+
export function contextGraphReadAuthorityDependencyOf(error) {
|
|
10
|
+
try {
|
|
11
|
+
let current = error;
|
|
12
|
+
for (let depth = 0; depth < 4 && typeof current === 'object' && current !== null; depth += 1) {
|
|
13
|
+
if (isStoreOperationTimeoutError(current) || isStoreSchedulerBusyError(current))
|
|
14
|
+
return 'store';
|
|
15
|
+
if (isChainRpcTransportError(current))
|
|
16
|
+
return 'chain';
|
|
17
|
+
current = current.cause;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// A hostile error shape says nothing about its dependency.
|
|
22
|
+
}
|
|
23
|
+
return 'unknown';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The dependency behind each typed unavailable reason. Only a local chain
|
|
27
|
+
* binding lookup can fail on either the store or the chain, so its producers
|
|
28
|
+
* record the classified dependency of their error; every other reason names
|
|
29
|
+
* one fixed dependency.
|
|
30
|
+
*/
|
|
31
|
+
const REGISTERED_AUTHORITY_UNAVAILABLE_DEPENDENCY = {
|
|
32
|
+
'chain-access-policy-timeout': 'chain',
|
|
33
|
+
'chain-access-policy-unknown': 'chain',
|
|
34
|
+
'chain-access-policy-unavailable': 'chain',
|
|
35
|
+
'chain-name-binding-unavailable': 'chain',
|
|
36
|
+
'chain-participant-authority-unsupported': 'chain',
|
|
37
|
+
'chain-participant-authority-unavailable': 'chain',
|
|
38
|
+
'chain-participant-authority-invalid': 'chain',
|
|
39
|
+
'finalized-name-absence-unaccepted': 'chain',
|
|
40
|
+
'authority-circuit-open': 'chain',
|
|
41
|
+
'local-existence-unavailable': 'store',
|
|
42
|
+
'local-chain-binding-unavailable': 'local-state',
|
|
43
|
+
};
|
|
44
|
+
/** Which dependency an unavailable registered authority names: the one its producer classified, or its reason's. */
|
|
45
|
+
export function registeredContextGraphAuthorityUnavailableDependency(unavailable) {
|
|
46
|
+
return unavailable.dependency
|
|
47
|
+
?? REGISTERED_AUTHORITY_UNAVAILABLE_DEPENDENCY[unavailable.reason]
|
|
48
|
+
?? 'unknown';
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=context-graph-authority-dependency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-graph-authority-dependency.js","sourceRoot":"","sources":["../src/context-graph-authority-dependency.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAS5G;;;;GAIG;AACH,MAAM,UAAU,qCAAqC,CAAC,KAAc;IAClE,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC7F,IAAI,4BAA4B,CAAC,OAAO,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC;YAChG,IAAI,wBAAwB,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC;YACtD,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,2CAA2C,GAE7C;IACF,6BAA6B,EAAE,OAAO;IACtC,6BAA6B,EAAE,OAAO;IACtC,iCAAiC,EAAE,OAAO;IAC1C,gCAAgC,EAAE,OAAO;IACzC,yCAAyC,EAAE,OAAO;IAClD,yCAAyC,EAAE,OAAO;IAClD,qCAAqC,EAAE,OAAO;IAC9C,mCAAmC,EAAE,OAAO;IAC5C,wBAAwB,EAAE,OAAO;IACjC,6BAA6B,EAAE,OAAO;IACtC,iCAAiC,EAAE,aAAa;CACjD,CAAC;AAEF,oHAAoH;AACpH,MAAM,UAAU,oDAAoD,CAClE,WAAuD;IAEvD,OAAO,WAAW,CAAC,UAAU;WACxB,2CAA2C,CAAC,WAAW,CAAC,MAAM,CAAC;WAC/D,SAAS,CAAC;AACjB,CAAC"}
|
|
@@ -39,6 +39,12 @@ export type ContextGraphBindingSubscriptionFacts = {
|
|
|
39
39
|
export declare function isCanonicalPositiveContextGraphId(value: unknown): value is string;
|
|
40
40
|
/** Canonical positive decimal that is representable by an EVM uint256 slot. */
|
|
41
41
|
export declare function isCanonicalAuthoritativeContextGraphId(value: unknown): value is string;
|
|
42
|
+
/**
|
|
43
|
+
* The committed name hashes that name a local Context Graph id, lowercase:
|
|
44
|
+
* its commitment keccak256(utf8(id)), and for a host-wire row (keyed by its
|
|
45
|
+
* own committed hash) that hash too. None for an id that is not valid UTF-16.
|
|
46
|
+
*/
|
|
47
|
+
export declare function committedNameHashesNaming(localCgId: string, isWireIdKeyedSubscription: (localId: string) => boolean): readonly string[];
|
|
42
48
|
/** Shared cleartext-or-host-wire identity proof for one committed name hash. */
|
|
43
49
|
export declare function localContextGraphIdMatchesCommittedNameHash(localCgId: string, committedNameHash: string, isWireIdKeyedSubscription: (localId: string) => boolean): boolean;
|
|
44
50
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-graph-binding-state.d.ts","sourceRoot":"","sources":["../src/context-graph-binding-state.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,6BAA6B,GACrC;IAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAA;CAAE,GACvB;IAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,WAAW,EAAE,eAAe,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,WAAW,EAAE,mBAAmB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,gCAAgC,GAChC,kCAAkC,CAAC;AAEvC,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC1C,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG,+BAA+B,GAAG;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEjF;AAED,+EAA+E;AAC/E,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAOjB;AAED,gFAAgF;AAChF,wBAAgB,2CAA2C,CACzD,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,yBAAyB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"context-graph-binding-state.d.ts","sourceRoot":"","sources":["../src/context-graph-binding-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,20 +16,27 @@ export function isCanonicalAuthoritativeContextGraphId(value) {
|
|
|
16
16
|
&& value.length <= 78
|
|
17
17
|
&& BigInt(value) <= ethers.MaxUint256;
|
|
18
18
|
}
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
/**
|
|
20
|
+
* The committed name hashes that name a local Context Graph id, lowercase:
|
|
21
|
+
* its commitment keccak256(utf8(id)), and for a host-wire row (keyed by its
|
|
22
|
+
* own committed hash) that hash too. None for an id that is not valid UTF-16.
|
|
23
|
+
*/
|
|
24
|
+
export function committedNameHashesNaming(localCgId, isWireIdKeyedSubscription) {
|
|
25
|
+
let commitment;
|
|
22
26
|
try {
|
|
23
|
-
|
|
24
|
-
=== normalizedCommitment)
|
|
25
|
-
return true;
|
|
27
|
+
commitment = ethers.keccak256(ethers.toUtf8Bytes(localCgId)).toLowerCase();
|
|
26
28
|
}
|
|
27
29
|
catch {
|
|
28
|
-
return
|
|
30
|
+
return [];
|
|
29
31
|
}
|
|
30
|
-
return /^0x[0-9a-fA-F]{64}$/.test(localCgId)
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
return /^0x[0-9a-fA-F]{64}$/.test(localCgId) && isWireIdKeyedSubscription(localCgId)
|
|
33
|
+
? [commitment, localCgId.toLowerCase()]
|
|
34
|
+
: [commitment];
|
|
35
|
+
}
|
|
36
|
+
/** Shared cleartext-or-host-wire identity proof for one committed name hash. */
|
|
37
|
+
export function localContextGraphIdMatchesCommittedNameHash(localCgId, committedNameHash, isWireIdKeyedSubscription) {
|
|
38
|
+
return committedNameHashesNaming(localCgId, isWireIdKeyedSubscription)
|
|
39
|
+
.includes(committedNameHash.toLowerCase());
|
|
33
40
|
}
|
|
34
41
|
function requireCanonicalAuthoritativeContextGraphId(value) {
|
|
35
42
|
if (!isCanonicalAuthoritativeContextGraphId(value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-graph-binding-state.js","sourceRoot":"","sources":["../src/context-graph-binding-state.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,qCAAqC,GAAG,GAAG,CAAC;AAClD,MAAM,qCAAqC,GAAG,MAAM,CAAC;AACrD,MAAM,yCAAyC,GAAG,CAAC,GAAG,MAAM,CAAC;AA2D7D,+EAA+E;AAC/E,MAAM,UAAU,iCAAiC,CAAC,KAAc;IAC9D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,sCAAsC,CACpD,KAAc;IAEd,OAAO,iCAAiC,CAAC,KAAK,CAAC;QAC7C,oEAAoE;QACpE,yEAAyE;QACzE,0EAA0E;WACvE,KAAK,CAAC,MAAM,IAAI,EAAE;WAClB,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC;AAC1C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"context-graph-binding-state.js","sourceRoot":"","sources":["../src/context-graph-binding-state.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,qCAAqC,GAAG,GAAG,CAAC;AAClD,MAAM,qCAAqC,GAAG,MAAM,CAAC;AACrD,MAAM,yCAAyC,GAAG,CAAC,GAAG,MAAM,CAAC;AA2D7D,+EAA+E;AAC/E,MAAM,UAAU,iCAAiC,CAAC,KAAc;IAC9D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,sCAAsC,CACpD,KAAc;IAEd,OAAO,iCAAiC,CAAC,KAAK,CAAC;QAC7C,oEAAoE;QACpE,yEAAyE;QACzE,0EAA0E;WACvE,KAAK,CAAC,MAAM,IAAI,EAAE;WAClB,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,yBAAuD;IAEvD,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,SAAS,CAAC;QAClF,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AACnB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,2CAA2C,CACzD,SAAiB,EACjB,iBAAyB,EACzB,yBAAuD;IAEvD,OAAO,yBAAyB,CAAC,SAAS,EAAE,yBAAyB,CAAC;SACnE,QAAQ,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,2CAA2C,CAAC,KAAa;IAChE,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,SAAS,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CACpB,IAAqC,EACrC,KAA0B;IAE1B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,IAAI,CAAC,WAAW,KAAK,eAAe;WACtC,IAAI,CAAC,QAAQ,KAAM,KAA4C,CAAC,QAAQ,CAAC;AAChF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,wBAAwB;IAClB,iBAAiB,GAAG,IAAI,GAAG,EAGzC,CAAC;IAEa,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzD,4EAA4E;IAC3D,wBAAwB,GAAG,IAAI,GAAG,EAGhD,CAAC;IAEJ,iFAAiF;IACzE,cAAc,GAAG,CAAC,CAAC;IAE3B,iBAAiB,CACf,SAAiB,EACjB,YAAyD;QAEzD,IAAI,YAAY,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,sCAAsC,CAAC,YAAY,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;YACtF,OAAO;gBACL,WAAW,EAAE,eAAe;gBAC5B,SAAS,EAAE,YAAY,CAAC,SAAS;aAClC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB,CACjB,SAAiB,EACjB,YAAyD;QAEzD,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,SAAS,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACH,0BAA0B,CACxB,SAAiB,EACjB,YAAyD;QAEzD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAChE,OAAO,OAAO,EAAE,WAAW,KAAK,eAAe;eAC1C,sCAAsC,CAAC,OAAO,CAAC,SAAS,CAAC;YAC5D,CAAC,CAAC,OAAO,CAAC,SAAS;YACnB,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,uBAAuB,CACrB,SAAiB,EACjB,YAAyD,EACzD,SAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAChE,OAAO,OAAO,EAAE,WAAW,KAAK,mBAAmB;eAC9C,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,2BAA2B,CACzB,SAAiB,EACjB,QAA0D,EAC1D,IAA0C,EAC1C,YAAoB;QAEpB,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;QACtE,MAAM,uBAAuB,GAAG,QAAQ,KAAK,SAAS;eACjD,QAAQ,CAAC,SAAS,KAAK,SAAS;eAChC,IAAI,CAAC,SAAS,KAAK,SAAS;eAC5B,QAAQ;eACR,gBAAgB,EAAE,QAAQ,KAAK,YAAY,CAAC;QACjD,MAAM,uBAAuB,GAAG,uBAAuB;YACrD,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,wCAAwC,CAAC,SAAS,CAAC,CAAC;QACxE,OAAO;YACL,uBAAuB;YACvB,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,iBAAiB,CACf,SAAiB,EACjB,YAA6C,EAC7C,YAAoB;QAEpB,MAAM,kBAAkB,GAAG,2CAA2C,CAAC,YAAY,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAG,YAAY,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS,CAAC;QACxE,MAAM,OAAO,GAAqC;YAChD,WAAW,EAAE,eAAe;YAC5B,SAAS,EAAE,kBAAkB;SAC9B,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,wCAAwC,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QACD,YAAY,CAAC,SAAS,GAAG,kBAAkB,CAAC;QAC5C,OAAO;YACL,QAAQ;YACR,OAAO;YACP,OAAO;YACP,gBAAgB,EAAE,iBAAiB,KAAK,SAAS;mBAC5C,iBAAiB,KAAK,kBAAkB;SAC9C,CAAC;IACJ,CAAC;IAED,oBAAoB,CAClB,SAAiB,EACjB,YAA6C,EAC7C,YAAoB,EACpB,QAAgB;QAEhB,MAAM,kBAAkB,GAAG,2CAA2C,CAAC,YAAY,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACjE,IAAI,YAAY,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACzC,2CAA2C,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACpE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO;gBACL,QAAQ;gBACR,OAAO,EAAE,QAA4C;gBACrD,OAAO,EAAE,KAAK;gBACd,gBAAgB,EAAE,KAAK;aACxB,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAuC;YAClD,WAAW,EAAE,mBAAmB;YAChC,SAAS,EAAE,kBAAkB;YAC7B,QAAQ;SACT,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,wCAAwC,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QACD,OAAO;YACL,QAAQ;YACR,OAAO;YACP,OAAO;YACP,gBAAgB,EAAE,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,kBAAkB;SACtF,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,SAAiB;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,wCAAwC,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gFAAgF;IAChF,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,wCAAwC,CAAC,SAAS,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,wCAAwC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,SAAiB;QACpB,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,mBAAmB,CAAC,SAAiB,EAAE,UAAkB;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC;IAChD,CAAC;IAED,kBAAkB,CAChB,SAAiB,EACjB,YAAyD,EACzD,MAAiC;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAChE,OAAO,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC;eAChC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACrE,CAAC;IAED,0BAA0B,CACxB,SAAiB,EACjB,YAA4C,EAC5C,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC;QACD,IACE,KAAK,CAAC,IAAI,KAAK,UAAU;eACtB,KAAK,CAAC,oBAAoB;eAC1B,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,EACjC,CAAC;YACD,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;YAC9B,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;YAC3C,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,mCAAmC,CAAC,SAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACrE,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE;YACzC,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,GAAG,GAAG,qCAAqC;SACvD,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B,CAC7B,SAAiB,EACjB,SAAiB,EACjB,oBAA6B,EAC7B,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEhB,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE;YACzC,IAAI,EAAE,UAAU;YAChB,SAAS;YACT,oBAAoB;YACpB,SAAS,EAAE,GAAG,GAAG,yCAAyC;SAC3D,CAAC,CAAC;IACL,CAAC;IAEO,0BAA0B,CAChC,SAAiB,EACjB,KAAmC;QAEnC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,GAAG,qCAAqC,EAAE,CAAC;YAClF,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACjE,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM;YAChC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,wCAAwC,CAAC,SAAiB;QAChE,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC/D,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/** bytes32(0): the name hash of a slot whose curator opted out of committing one. */
|
|
2
|
+
export declare const NO_NAME_COMMITMENT: string;
|
|
3
|
+
/** Whether a hash-shaped local id is a row keyed by its own wire id. */
|
|
4
|
+
export type IsWireIdKeyedRow = (localId: string) => boolean;
|
|
5
|
+
/** A binding this chain proves: the slot, and the name hash it commits. */
|
|
6
|
+
export interface ProvenOnChainBinding {
|
|
7
|
+
readonly onChainId: string;
|
|
8
|
+
readonly onChainHash: string;
|
|
9
|
+
}
|
|
10
|
+
/** The slot facts this module reads: what each on-chain id commits. */
|
|
11
|
+
export interface CommittedNameHashes {
|
|
12
|
+
get(onChainId: string): {
|
|
13
|
+
readonly nameHash: string | null;
|
|
14
|
+
} | undefined;
|
|
15
|
+
/** The on-chain ids whose committed name hash is `nameHash`. */
|
|
16
|
+
onChainIdsCommitting(nameHash: string): Iterable<string>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The name hash a slot commits, lowercase, or null when it commits none:
|
|
20
|
+
* absent, malformed, or bytes32(0).
|
|
21
|
+
*/
|
|
22
|
+
export declare function committedNameHashOf(value: unknown): string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Per-slot chain facts keyed by on-chain id, also indexed by committed name
|
|
25
|
+
* hash, so the slots that commit one name are found without a scan. A slot
|
|
26
|
+
* that commits no name is not indexed.
|
|
27
|
+
*/
|
|
28
|
+
export declare class SlotFactsIndex<F extends {
|
|
29
|
+
readonly nameHash: string | null;
|
|
30
|
+
}> extends Map<string, F> implements CommittedNameHashes {
|
|
31
|
+
private readonly byNameHash;
|
|
32
|
+
set(onChainId: string, facts: F): this;
|
|
33
|
+
delete(onChainId: string): boolean;
|
|
34
|
+
clear(): void;
|
|
35
|
+
onChainIdsCommitting(nameHash: string): string[];
|
|
36
|
+
private unindex;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The binding a claim names when slot `claimedOnChainId`, committing
|
|
40
|
+
* `committedNameHash`, proves `contextGraphId`; otherwise null.
|
|
41
|
+
*/
|
|
42
|
+
export declare function proveOnChainIdClaim(contextGraphId: string, claimedOnChainId: string, committedNameHash: string | null | undefined, isWireIdKeyedRow: IsWireIdKeyedRow): ProvenOnChainBinding | null;
|
|
43
|
+
/**
|
|
44
|
+
* Every on-chain id whose committed name hash proves `contextGraphId`:
|
|
45
|
+
* usually one, none when the chain has no such graph or this node has not
|
|
46
|
+
* read it yet. The candidates are the slots committing a hash that names the
|
|
47
|
+
* id (`committedNameHashesNaming`, the set the proof accepts), and
|
|
48
|
+
* `proveOnChainIdClaim` decides each. A malformed id proves nothing.
|
|
49
|
+
*/
|
|
50
|
+
export declare function provenOnChainIdsFor(contextGraphId: string, facts: CommittedNameHashes, isWireIdKeyedRow: IsWireIdKeyedRow): string[];
|
|
51
|
+
/**
|
|
52
|
+
* Whether slot `onChainId`, committing `committedNameHash`, refutes the
|
|
53
|
+
* binding of the row keyed `localId`. A slot that commits no name refutes
|
|
54
|
+
* nothing. Rows with their own lifecycle are never refuted here: a name-hash
|
|
55
|
+
* row (the slot's placeholder, or any row keyed by the committed hash
|
|
56
|
+
* itself), a row recording that commitment, and a row keyed by the bare
|
|
57
|
+
* number (a `dkg subscribe N` row, which the on-chain id resolver retires as
|
|
58
|
+
* a whole while it is still bound to N).
|
|
59
|
+
*/
|
|
60
|
+
export declare function refutesOnChainBinding(localId: string, row: {
|
|
61
|
+
readonly onChainId?: string;
|
|
62
|
+
readonly onChainHash?: string;
|
|
63
|
+
}, onChainId: string, committedNameHash: string, isWireIdKeyedRow: IsWireIdKeyedRow): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Whether the row keyed `localId` is the slot's name-hash row that never
|
|
66
|
+
* recorded its hash: keyed by exactly the committed hash, bound to the slot,
|
|
67
|
+
* with no `onChainHash`. Earlier versions minted such a row for
|
|
68
|
+
* `dkg subscribe <hash>` when the hash resolved to nothing.
|
|
69
|
+
*/
|
|
70
|
+
export declare function isUnrecordedNameHashRow(localId: string, row: {
|
|
71
|
+
readonly onChainId?: string;
|
|
72
|
+
readonly onChainHash?: string;
|
|
73
|
+
}, onChainId: string, committedNameHash: string): boolean;
|
|
74
|
+
//# sourceMappingURL=context-graph-claim-proof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-graph-claim-proof.d.ts","sourceRoot":"","sources":["../src/context-graph-claim-proof.ts"],"names":[],"mappings":"AA4BA,qFAAqF;AACrF,eAAO,MAAM,kBAAkB,QAAwB,CAAC;AAExD,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAE5D,2EAA2E;AAC3E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;IACzE,gEAAgE;IAChE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED;;;;GAIG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CACxE,SAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CACrB,YAAW,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAEpD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAYtC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAKlC,KAAK,IAAI,IAAI;IAKtB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAKhD,OAAO,CAAC,OAAO;CAOhB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC5C,gBAAgB,EAAE,gBAAgB,GACjC,oBAAoB,GAAG,IAAI,CAO7B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,mBAAmB,EAC1B,gBAAgB,EAAE,gBAAgB,GACjC,MAAM,EAAE,CAWV;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EACnE,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAMT;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EACnE,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAMT"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* When an off-chain on-chain-id claim holds.
|
|
4
|
+
*
|
|
5
|
+
* A `dkg:ContextGraphOnChainId` row says "Context Graph id X is on-chain id
|
|
6
|
+
* N". The `ontology` system graph is shared by every network and deployment,
|
|
7
|
+
* and `_meta` receives what earlier builds left there, so such a row is a
|
|
8
|
+
* claim, never a binding. A claim holds only when slot N on this node's own
|
|
9
|
+
* chain commits X's name commitment, keccak256(utf8(X)): the rule the policy
|
|
10
|
+
* read and random sampling already apply to a local binding
|
|
11
|
+
* (`localContextGraphIdMatchesCommittedNameHash`). The committed hash is the
|
|
12
|
+
* one this node read from its chain (enumeration, the live event tail, or the
|
|
13
|
+
* enumeration checkpoint). A slot with no committed hash, including one whose
|
|
14
|
+
* curator opted out with bytes32(0), proves nothing and refutes nothing.
|
|
15
|
+
*
|
|
16
|
+
* This module owns that rule. The agent mixins pass in their state (the
|
|
17
|
+
* per-slot chain facts and the wire-keyed row test) and keep only the
|
|
18
|
+
* stateful wiring.
|
|
19
|
+
*/
|
|
20
|
+
import { committedNameHashesNaming, isCanonicalAuthoritativeContextGraphId, localContextGraphIdMatchesCommittedNameHash, } from './context-graph-binding-state.js';
|
|
21
|
+
import { normalizeContextGraphNameHash } from './context-graph-name-candidate.js';
|
|
22
|
+
/** bytes32(0): the name hash of a slot whose curator opted out of committing one. */
|
|
23
|
+
export const NO_NAME_COMMITMENT = `0x${'0'.repeat(64)}`;
|
|
24
|
+
/**
|
|
25
|
+
* The name hash a slot commits, lowercase, or null when it commits none:
|
|
26
|
+
* absent, malformed, or bytes32(0).
|
|
27
|
+
*/
|
|
28
|
+
export function committedNameHashOf(value) {
|
|
29
|
+
const hash = normalizeContextGraphNameHash(value);
|
|
30
|
+
return hash === NO_NAME_COMMITMENT ? null : hash;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Per-slot chain facts keyed by on-chain id, also indexed by committed name
|
|
34
|
+
* hash, so the slots that commit one name are found without a scan. A slot
|
|
35
|
+
* that commits no name is not indexed.
|
|
36
|
+
*/
|
|
37
|
+
export class SlotFactsIndex extends Map {
|
|
38
|
+
byNameHash = new Map();
|
|
39
|
+
set(onChainId, facts) {
|
|
40
|
+
this.unindex(onChainId);
|
|
41
|
+
super.set(onChainId, facts);
|
|
42
|
+
const hash = committedNameHashOf(facts.nameHash);
|
|
43
|
+
if (hash !== null) {
|
|
44
|
+
const onChainIds = this.byNameHash.get(hash) ?? new Set();
|
|
45
|
+
onChainIds.add(onChainId);
|
|
46
|
+
this.byNameHash.set(hash, onChainIds);
|
|
47
|
+
}
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
delete(onChainId) {
|
|
51
|
+
this.unindex(onChainId);
|
|
52
|
+
return super.delete(onChainId);
|
|
53
|
+
}
|
|
54
|
+
clear() {
|
|
55
|
+
this.byNameHash.clear();
|
|
56
|
+
super.clear();
|
|
57
|
+
}
|
|
58
|
+
onChainIdsCommitting(nameHash) {
|
|
59
|
+
const hash = committedNameHashOf(nameHash);
|
|
60
|
+
return hash === null ? [] : [...(this.byNameHash.get(hash) ?? [])];
|
|
61
|
+
}
|
|
62
|
+
unindex(onChainId) {
|
|
63
|
+
const hash = committedNameHashOf(super.get(onChainId)?.nameHash);
|
|
64
|
+
const onChainIds = hash === null ? undefined : this.byNameHash.get(hash);
|
|
65
|
+
if (hash === null || onChainIds === undefined)
|
|
66
|
+
return;
|
|
67
|
+
onChainIds.delete(onChainId);
|
|
68
|
+
if (onChainIds.size === 0)
|
|
69
|
+
this.byNameHash.delete(hash);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The binding a claim names when slot `claimedOnChainId`, committing
|
|
74
|
+
* `committedNameHash`, proves `contextGraphId`; otherwise null.
|
|
75
|
+
*/
|
|
76
|
+
export function proveOnChainIdClaim(contextGraphId, claimedOnChainId, committedNameHash, isWireIdKeyedRow) {
|
|
77
|
+
if (!isCanonicalAuthoritativeContextGraphId(claimedOnChainId))
|
|
78
|
+
return null;
|
|
79
|
+
const committed = committedNameHashOf(committedNameHash);
|
|
80
|
+
if (committed === null)
|
|
81
|
+
return null;
|
|
82
|
+
return localContextGraphIdMatchesCommittedNameHash(contextGraphId, committed, isWireIdKeyedRow)
|
|
83
|
+
? { onChainId: claimedOnChainId, onChainHash: committed }
|
|
84
|
+
: null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Every on-chain id whose committed name hash proves `contextGraphId`:
|
|
88
|
+
* usually one, none when the chain has no such graph or this node has not
|
|
89
|
+
* read it yet. The candidates are the slots committing a hash that names the
|
|
90
|
+
* id (`committedNameHashesNaming`, the set the proof accepts), and
|
|
91
|
+
* `proveOnChainIdClaim` decides each. A malformed id proves nothing.
|
|
92
|
+
*/
|
|
93
|
+
export function provenOnChainIdsFor(contextGraphId, facts, isWireIdKeyedRow) {
|
|
94
|
+
const proven = [];
|
|
95
|
+
for (const nameHash of committedNameHashesNaming(contextGraphId, isWireIdKeyedRow)) {
|
|
96
|
+
for (const onChainId of facts.onChainIdsCommitting(nameHash)) {
|
|
97
|
+
const committed = facts.get(onChainId)?.nameHash;
|
|
98
|
+
if (proveOnChainIdClaim(contextGraphId, onChainId, committed, isWireIdKeyedRow) !== null) {
|
|
99
|
+
proven.push(onChainId);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return proven;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Whether slot `onChainId`, committing `committedNameHash`, refutes the
|
|
107
|
+
* binding of the row keyed `localId`. A slot that commits no name refutes
|
|
108
|
+
* nothing. Rows with their own lifecycle are never refuted here: a name-hash
|
|
109
|
+
* row (the slot's placeholder, or any row keyed by the committed hash
|
|
110
|
+
* itself), a row recording that commitment, and a row keyed by the bare
|
|
111
|
+
* number (a `dkg subscribe N` row, which the on-chain id resolver retires as
|
|
112
|
+
* a whole while it is still bound to N).
|
|
113
|
+
*/
|
|
114
|
+
export function refutesOnChainBinding(localId, row, onChainId, committedNameHash, isWireIdKeyedRow) {
|
|
115
|
+
const committed = committedNameHashOf(committedNameHash);
|
|
116
|
+
if (committed === null || row.onChainId !== onChainId || localId === onChainId)
|
|
117
|
+
return false;
|
|
118
|
+
if (localId.toLowerCase() === committed || isWireIdKeyedRow(localId))
|
|
119
|
+
return false;
|
|
120
|
+
if (normalizeContextGraphNameHash(row.onChainHash) === committed)
|
|
121
|
+
return false;
|
|
122
|
+
return proveOnChainIdClaim(localId, onChainId, committed, isWireIdKeyedRow) === null;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Whether the row keyed `localId` is the slot's name-hash row that never
|
|
126
|
+
* recorded its hash: keyed by exactly the committed hash, bound to the slot,
|
|
127
|
+
* with no `onChainHash`. Earlier versions minted such a row for
|
|
128
|
+
* `dkg subscribe <hash>` when the hash resolved to nothing.
|
|
129
|
+
*/
|
|
130
|
+
export function isUnrecordedNameHashRow(localId, row, onChainId, committedNameHash) {
|
|
131
|
+
const committed = committedNameHashOf(committedNameHash);
|
|
132
|
+
return committed !== null
|
|
133
|
+
&& localId === committed
|
|
134
|
+
&& row.onChainHash === undefined
|
|
135
|
+
&& row.onChainId === onChainId;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=context-graph-claim-proof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-graph-claim-proof.js","sourceRoot":"","sources":["../src/context-graph-claim-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Quad } from '@origintrail-official/dkg-storage';
|
|
2
|
+
export interface ApprovedMemberProof {
|
|
3
|
+
/** The locally-approved agent whose usable membership must be present. */
|
|
4
|
+
approvedAgentAddress: string;
|
|
5
|
+
/** Current node credentials; at least one must match the active delegation. */
|
|
6
|
+
expectedDelegateePeerId?: string;
|
|
7
|
+
expectedDelegateeOpKey?: string;
|
|
8
|
+
/** Injectable wall clock for parity tests. Defaults to Date.now(). */
|
|
9
|
+
nowMs?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Whether a fetched root `_meta` snapshot proves the approved member: it is in
|
|
13
|
+
* `allowedAgent`, not revoked, and holds an active delegation bound to this
|
|
14
|
+
* node's peer id or op-key. Shared by the private definition and by a public
|
|
15
|
+
* definition accepted after a join approval.
|
|
16
|
+
*/
|
|
17
|
+
export declare function hasActiveApprovedMemberDelegation(contextGraphId: string, quads: readonly Quad[], rawProof: ApprovedMemberProof): boolean;
|
|
18
|
+
/** The store-side ASK fragment for the same proof. */
|
|
19
|
+
export declare function renderApprovedMemberProofSparql(contextGraphId: string, contextGraphUri: string, rawProof: ApprovedMemberProof): string;
|
|
20
|
+
//# sourceMappingURL=context-graph-member-proof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-graph-member-proof.d.ts","sourceRoot":"","sources":["../src/context-graph-member-proof.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAa9D,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,oBAAoB,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqCD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CA6CT;AAED,sDAAsD;AACtD,wBAAgB,+BAA+B,CAC7C,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,mBAAmB,GAC5B,MAAM,CAsCR"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { DKG_ONTOLOGY, assertSafeIri, contextGraphDataGraphUri, sparqlString, } from '@origintrail-official/dkg-core';
|
|
3
|
+
import { stripLiteral } from './dkg-agent-utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Proof that a join-approved member is usable in a curator's root `_meta`
|
|
6
|
+
* snapshot: listed, not revoked, and holding an active delegation bound to
|
|
7
|
+
* this node. It is policy-neutral: the private definition requires it, and a
|
|
8
|
+
* public definition requires it after a join approval. Both the in-memory
|
|
9
|
+
* check and the store ASK fragment are built from this one model.
|
|
10
|
+
*/
|
|
11
|
+
const EVM_ADDRESS_RE = /^0x[0-9a-f]{40}$/i;
|
|
12
|
+
function normalizeMemberProof(proof) {
|
|
13
|
+
const approvedAgentAddress = proof.approvedAgentAddress.trim().toLowerCase();
|
|
14
|
+
const expectedDelegateePeerId = proof.expectedDelegateePeerId?.trim() || undefined;
|
|
15
|
+
const expectedDelegateeOpKey = proof.expectedDelegateeOpKey?.trim().toLowerCase() || undefined;
|
|
16
|
+
const nowMs = proof.nowMs ?? Date.now();
|
|
17
|
+
if (!EVM_ADDRESS_RE.test(approvedAgentAddress) ||
|
|
18
|
+
(expectedDelegateeOpKey !== undefined && !EVM_ADDRESS_RE.test(expectedDelegateeOpKey)) ||
|
|
19
|
+
(!expectedDelegateePeerId && !expectedDelegateeOpKey) ||
|
|
20
|
+
!Number.isSafeInteger(nowMs) ||
|
|
21
|
+
nowMs < 0) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
approvedAgentAddress,
|
|
26
|
+
expectedDelegateePeerId,
|
|
27
|
+
expectedDelegateeOpKey,
|
|
28
|
+
nowMs,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function literalEqualsIgnoreCase(value, expected) {
|
|
32
|
+
return value.startsWith('"') && stripLiteral(value).trim().toLowerCase() === expected;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Whether a fetched root `_meta` snapshot proves the approved member: it is in
|
|
36
|
+
* `allowedAgent`, not revoked, and holds an active delegation bound to this
|
|
37
|
+
* node's peer id or op-key. Shared by the private definition and by a public
|
|
38
|
+
* definition accepted after a join approval.
|
|
39
|
+
*/
|
|
40
|
+
export function hasActiveApprovedMemberDelegation(contextGraphId, quads, rawProof) {
|
|
41
|
+
const proof = normalizeMemberProof(rawProof);
|
|
42
|
+
if (!proof)
|
|
43
|
+
return false;
|
|
44
|
+
const contextGraphUri = contextGraphDataGraphUri(contextGraphId);
|
|
45
|
+
const delegationSubject = `did:dkg:agent-delegation:${contextGraphId}:${proof.approvedAgentAddress}`;
|
|
46
|
+
const allowed = quads.some((quad) => (quad.subject === contextGraphUri &&
|
|
47
|
+
quad.predicate === DKG_ONTOLOGY.DKG_ALLOWED_AGENT &&
|
|
48
|
+
literalEqualsIgnoreCase(quad.object, proof.approvedAgentAddress)));
|
|
49
|
+
const revoked = quads.some((quad) => (quad.subject === contextGraphUri &&
|
|
50
|
+
quad.predicate === DKG_ONTOLOGY.DKG_REVOKED_AGENT &&
|
|
51
|
+
literalEqualsIgnoreCase(quad.object, proof.approvedAgentAddress)));
|
|
52
|
+
if (!allowed || revoked)
|
|
53
|
+
return false;
|
|
54
|
+
const delegationQuads = quads.filter((quad) => quad.subject === delegationSubject);
|
|
55
|
+
const namesApprovedAgent = delegationQuads.some((quad) => (quad.predicate === DKG_ONTOLOGY.DKG_DELEGATION_AGENT &&
|
|
56
|
+
literalEqualsIgnoreCase(quad.object, proof.approvedAgentAddress)));
|
|
57
|
+
const issuedAtIsActive = delegationQuads.some((quad) => {
|
|
58
|
+
if (quad.predicate !== DKG_ONTOLOGY.DKG_DELEGATION_ISSUED_AT)
|
|
59
|
+
return false;
|
|
60
|
+
const issuedAt = Number(stripLiteral(quad.object));
|
|
61
|
+
return Number.isSafeInteger(issuedAt) && issuedAt >= 0 && issuedAt <= proof.nowMs;
|
|
62
|
+
});
|
|
63
|
+
const expiryRows = delegationQuads.filter((quad) => quad.predicate === DKG_ONTOLOGY.DKG_DELEGATION_EXPIRES_AT);
|
|
64
|
+
const expiryIsActive = expiryRows.length === 0 || expiryRows.some((quad) => {
|
|
65
|
+
const expiresAt = Number(stripLiteral(quad.object));
|
|
66
|
+
return Number.isSafeInteger(expiresAt) && expiresAt > proof.nowMs;
|
|
67
|
+
});
|
|
68
|
+
const peerMatches = proof.expectedDelegateePeerId !== undefined && delegationQuads.some((quad) => (quad.predicate === DKG_ONTOLOGY.DKG_ALLOWED_DELEGATEE_PEER &&
|
|
69
|
+
quad.object.startsWith('"') &&
|
|
70
|
+
stripLiteral(quad.object) === proof.expectedDelegateePeerId));
|
|
71
|
+
const keyMatches = proof.expectedDelegateeOpKey !== undefined && delegationQuads.some((quad) => (quad.predicate === DKG_ONTOLOGY.DKG_ALLOWED_DELEGATEE_KEY &&
|
|
72
|
+
literalEqualsIgnoreCase(quad.object, proof.expectedDelegateeOpKey)));
|
|
73
|
+
return namesApprovedAgent && issuedAtIsActive && expiryIsActive && (peerMatches || keyMatches);
|
|
74
|
+
}
|
|
75
|
+
/** The store-side ASK fragment for the same proof. */
|
|
76
|
+
export function renderApprovedMemberProofSparql(contextGraphId, contextGraphUri, rawProof) {
|
|
77
|
+
const proof = normalizeMemberProof(rawProof);
|
|
78
|
+
if (!proof)
|
|
79
|
+
throw new Error('Invalid approved-member proof');
|
|
80
|
+
const delegationSubject = assertSafeIri(`did:dkg:agent-delegation:${contextGraphId}:${proof.approvedAgentAddress}`);
|
|
81
|
+
const credentialPatterns = [];
|
|
82
|
+
const credentialFilters = [];
|
|
83
|
+
if (proof.expectedDelegateePeerId) {
|
|
84
|
+
credentialPatterns.push(`OPTIONAL { <${delegationSubject}> <${DKG_ONTOLOGY.DKG_ALLOWED_DELEGATEE_PEER}> ?approvedDelegateePeer . }`);
|
|
85
|
+
credentialFilters.push(`(BOUND(?approvedDelegateePeer) && isLiteral(?approvedDelegateePeer) && STR(?approvedDelegateePeer) = ${sparqlString(proof.expectedDelegateePeerId)})`);
|
|
86
|
+
}
|
|
87
|
+
if (proof.expectedDelegateeOpKey) {
|
|
88
|
+
credentialPatterns.push(`OPTIONAL { <${delegationSubject}> <${DKG_ONTOLOGY.DKG_ALLOWED_DELEGATEE_KEY}> ?approvedDelegateeKey . }`);
|
|
89
|
+
credentialFilters.push(`(BOUND(?approvedDelegateeKey) && isLiteral(?approvedDelegateeKey) && LCASE(STR(?approvedDelegateeKey)) = ${sparqlString(proof.expectedDelegateeOpKey)})`);
|
|
90
|
+
}
|
|
91
|
+
return ` <${assertSafeIri(contextGraphUri)}> <${DKG_ONTOLOGY.DKG_ALLOWED_AGENT}> ?approvedAgent .
|
|
92
|
+
FILTER(isLiteral(?approvedAgent) && LCASE(STR(?approvedAgent)) = ${sparqlString(proof.approvedAgentAddress)})
|
|
93
|
+
FILTER NOT EXISTS {
|
|
94
|
+
<${assertSafeIri(contextGraphUri)}> <${DKG_ONTOLOGY.DKG_REVOKED_AGENT}> ?revokedApprovedAgent .
|
|
95
|
+
FILTER(isLiteral(?revokedApprovedAgent) && LCASE(STR(?revokedApprovedAgent)) = ${sparqlString(proof.approvedAgentAddress)})
|
|
96
|
+
}
|
|
97
|
+
<${delegationSubject}> <${DKG_ONTOLOGY.DKG_DELEGATION_AGENT}> ?delegatedApprovedAgent ;
|
|
98
|
+
<${DKG_ONTOLOGY.DKG_DELEGATION_ISSUED_AT}> ?delegationIssuedAt .
|
|
99
|
+
FILTER(isLiteral(?delegatedApprovedAgent) && LCASE(STR(?delegatedApprovedAgent)) = ${sparqlString(proof.approvedAgentAddress)})
|
|
100
|
+
FILTER(REGEX(STR(?delegationIssuedAt), "^[0-9]+$") && xsd:integer(STR(?delegationIssuedAt)) <= ${proof.nowMs})
|
|
101
|
+
OPTIONAL { <${delegationSubject}> <${DKG_ONTOLOGY.DKG_DELEGATION_EXPIRES_AT}> ?delegationExpiresAt . }
|
|
102
|
+
FILTER(!BOUND(?delegationExpiresAt) || (REGEX(STR(?delegationExpiresAt), "^[0-9]+$") && xsd:integer(STR(?delegationExpiresAt)) > ${proof.nowMs}))
|
|
103
|
+
${credentialPatterns.join('\n ')}
|
|
104
|
+
FILTER(${credentialFilters.join(' || ')})`;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=context-graph-member-proof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-graph-member-proof.js","sourceRoot":"","sources":["../src/context-graph-member-proof.ts"],"names":[],"mappings":"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"}
|