@ibgib/core-gib 0.1.54 → 0.1.55
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/CHANGELOG.md +10 -3
- package/README.md +12 -15
- package/dist/keystone/aggregate-details.respec.d.mts +2 -0
- package/dist/keystone/aggregate-details.respec.d.mts.map +1 -0
- package/dist/keystone/aggregate-details.respec.mjs +118 -0
- package/dist/keystone/aggregate-details.respec.mjs.map +1 -0
- package/dist/keystone/keystone-constants.d.mts +5 -0
- package/dist/keystone/keystone-constants.d.mts.map +1 -1
- package/dist/keystone/keystone-constants.mjs +6 -1
- package/dist/keystone/keystone-constants.mjs.map +1 -1
- package/dist/keystone/keystone-helpers.d.mts +7 -1
- package/dist/keystone/keystone-helpers.d.mts.map +1 -1
- package/dist/keystone/keystone-helpers.mjs +5 -2
- package/dist/keystone/keystone-helpers.mjs.map +1 -1
- package/dist/keystone/keystone-service-v1.d.mts +51 -0
- package/dist/keystone/keystone-service-v1.d.mts.map +1 -1
- package/dist/keystone/keystone-service-v1.mjs +176 -9
- package/dist/keystone/keystone-service-v1.mjs.map +1 -1
- package/dist/keystone/keystone-service-v1.respec.mjs +40 -98
- package/dist/keystone/keystone-service-v1.respec.mjs.map +1 -1
- package/dist/keystone/keystone-types.d.mts +5 -0
- package/dist/keystone/keystone-types.d.mts.map +1 -1
- package/dist/sync/graft-info/graft-info-helpers.respec.mjs +8 -8
- package/dist/sync/graft-info/graft-info-helpers.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-adv-multitimelines.respec.mjs +26 -30
- package/dist/sync/sync-conflict-adv-multitimelines.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-basic-divergence.respec.mjs +7 -8
- package/dist/sync/sync-conflict-basic-divergence.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-basic-multitimelines.respec.mjs +10 -11
- package/dist/sync/sync-conflict-basic-multitimelines.respec.mjs.map +1 -1
- package/dist/sync/sync-conflict-text-merge.respec.mjs +30 -33
- package/dist/sync/sync-conflict-text-merge.respec.mjs.map +1 -1
- package/dist/sync/sync-constants.d.mts +1 -56
- package/dist/sync/sync-constants.d.mts.map +1 -1
- package/dist/sync/sync-constants.mjs +2 -59
- package/dist/sync/sync-constants.mjs.map +1 -1
- package/dist/sync/sync-helpers.d.mts +0 -1
- package/dist/sync/sync-helpers.d.mts.map +1 -1
- package/dist/sync/sync-helpers.mjs +1 -6
- package/dist/sync/sync-helpers.mjs.map +1 -1
- package/dist/sync/sync-innerspace-constants.respec.mjs +5 -9
- package/dist/sync/sync-innerspace-constants.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs +6 -7
- package/dist/sync/sync-innerspace-deep-updates.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.mjs +22 -22
- package/dist/sync/sync-innerspace-dest-ahead-withid.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-dest-ahead.respec.mjs +8 -9
- package/dist/sync/sync-innerspace-dest-ahead.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs +6 -7
- package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace-partial-update.respec.mjs +7 -8
- package/dist/sync/sync-innerspace-partial-update.respec.mjs.map +1 -1
- package/dist/sync/sync-innerspace.respec.mjs +8 -11
- package/dist/sync/sync-innerspace.respec.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-http-node-adapter.mjs +10 -5
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-http-node-adapter.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-types.d.mts +3 -1
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-types.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.d.mts +4 -2
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.mjs +37 -6
- package/dist/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-types.d.mts +3 -1
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-types.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.d.mts +4 -2
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.mjs +37 -0
- package/dist/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.d.mts +7 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts +10 -2
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs +50 -38
- package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs.map +1 -1
- package/dist/sync/sync-peer/sync-peer-types.d.mts +21 -5
- package/dist/sync/sync-peer/sync-peer-types.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-v1.d.mts +30 -5
- package/dist/sync/sync-peer/sync-peer-v1.d.mts.map +1 -1
- package/dist/sync/sync-peer/sync-peer-v1.mjs +41 -25
- package/dist/sync/sync-peer/sync-peer-v1.mjs.map +1 -1
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts +2 -11
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts.map +1 -1
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs +7 -51
- package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs.map +1 -1
- package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts +1 -47
- package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts.map +1 -1
- package/dist/sync/sync-saga-coordinator.d.mts +6 -58
- package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
- package/dist/sync/sync-saga-coordinator.mjs +23 -425
- package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
- package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts +2 -2
- package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts.map +1 -1
- package/dist/sync/sync-types.d.mts +2 -19
- package/dist/sync/sync-types.d.mts.map +1 -1
- package/dist/sync/sync-types.mjs.map +1 -1
- package/dist/test/mock-space.mjs +1 -1
- package/dist/test/mock-space.mjs.map +1 -1
- package/dist/test-helpers.d.mts +0 -6
- package/dist/test-helpers.d.mts.map +1 -1
- package/dist/test-helpers.mjs +2 -25
- package/dist/test-helpers.mjs.map +1 -1
- package/package.json +7 -31
- package/src/keystone/aggregate-details.respec.mts +137 -0
- package/src/keystone/docs/architecture.md +16 -0
- package/src/keystone/keystone-constants.mts +6 -1
- package/src/keystone/keystone-helpers.mts +9 -1
- package/src/keystone/keystone-service-v1.mts +216 -8
- package/src/keystone/keystone-service-v1.respec.mts +39 -103
- package/src/keystone/keystone-types.mts +6 -0
- package/src/sync/README.md +18 -0
- package/src/sync/docs/architecture.md +21 -0
- package/src/sync/graft-info/graft-info-helpers.respec.mts +7 -7
- package/src/sync/sync-conflict-adv-multitimelines.respec.mts +25 -29
- package/src/sync/sync-conflict-basic-divergence.respec.mts +6 -7
- package/src/sync/sync-conflict-basic-multitimelines.respec.mts +9 -10
- package/src/sync/sync-conflict-text-merge.respec.mts +29 -32
- package/src/sync/sync-constants.mts +2 -62
- package/src/sync/sync-helpers.mts +1 -8
- package/src/sync/sync-id-testlog.txt +421 -0
- package/src/sync/sync-innerspace-constants.respec.mts +4 -8
- package/src/sync/sync-innerspace-deep-updates.respec.mts +5 -6
- package/src/sync/sync-innerspace-dest-ahead-withid.respec.mts +23 -25
- package/src/sync/sync-innerspace-dest-ahead.respec.mts +7 -8
- package/src/sync/sync-innerspace-multiple-timelines.respec.mts +5 -6
- package/src/sync/sync-innerspace-partial-update.respec.mts +6 -7
- package/src/sync/sync-innerspace.respec.mts +7 -10
- package/src/sync/sync-peer/sync-peer-http-receiver/sync-http-node-adapter.mts +5 -5
- package/src/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-types.mts +5 -1
- package/src/sync/sync-peer/sync-peer-http-receiver/sync-peer-http-receiver-v1.mts +30 -9
- package/src/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-types.mts +3 -1
- package/src/sync/sync-peer/sync-peer-http-sender/sync-peer-http-sender-v1.mts +29 -2
- package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.mts +7 -1
- package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mts +51 -38
- package/src/sync/sync-peer/sync-peer-types.mts +23 -6
- package/src/sync/sync-peer/sync-peer-v1.mts +68 -28
- package/src/sync/sync-saga-context/sync-saga-context-helpers.mts +6 -66
- package/src/sync/sync-saga-context/sync-saga-context-types.mts +1 -48
- package/src/sync/sync-saga-coordinator.mts +12 -552
- package/src/sync/sync-saga-message/sync-saga-message-types.mts +2 -3
- package/src/sync/sync-types.mts +2 -22
- package/src/sync/unused-identity-backup.mts.md +311 -0
- package/src/test/mock-space.mts +1 -1
- package/src/test-helpers.mts +1 -26
- package/test_output.log +0 -0
- package/test_output_utf8.txt +398 -0
- package/.vscode/core-gib-snippets.code-snippets +0 -293
- package/.vscode/launch.json +0 -40
- package/.vscode/settings.json +0 -58
- package/.vscode/tasks.json +0 -37
- package/dist/sync/sync-peer/sync-peer-http.respec.d.mts +0 -2
- package/dist/sync/sync-peer/sync-peer-http.respec.d.mts.map +0 -1
- package/dist/sync/sync-peer/sync-peer-http.respec.mjs +0 -340
- package/dist/sync/sync-peer/sync-peer-http.respec.mjs.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-helper.d.mts +0 -42
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-helper.d.mts.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-helper.mjs +0 -312
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-helper.mjs.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-types.d.mts +0 -84
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-types.d.mts.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-types.mjs +0 -65
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-types.mjs.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-v1.d.mts +0 -73
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-v1.d.mts.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-v1.mjs +0 -667
- package/dist/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-v1.mjs.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts +0 -2
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs +0 -67
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts +0 -2
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs +0 -67
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts +0 -2
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs +0 -68
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts +0 -2
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts.map +0 -1
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs +0 -69
- package/dist/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs.map +0 -1
- package/src/sync/sync-peer/sync-peer-http.respec.mts +0 -396
- package/src/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-helper.mts +0 -298
- package/src/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-types.mts +0 -150
- package/src/witness/space/filesystem-space/node-filesystem-space/node-filesystem-space-v1.mts +0 -666
- package/src/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mts +0 -87
- package/src/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mts +0 -88
- package/src/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mts +0 -88
- package/src/witness/space/filesystem-space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mts +0 -90
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.mjs","sourceRoot":"","sources":["../src/test-helpers.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test-helpers.mjs","sourceRoot":"","sources":["../src/test-helpers.mts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibgib/core-gib",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.55",
|
|
4
4
|
"description": "ibgib core functionality, including base architecture for witnesses, spaces, apps, robbots, etc., as well as shared utility functions. Node v19+ needed for heavily-used isomorphic webcrypto hashing consumed in both node and browsers.",
|
|
5
5
|
"funding": {
|
|
6
6
|
"type": "individual",
|
|
@@ -8,37 +8,13 @@
|
|
|
8
8
|
},
|
|
9
9
|
"main": "dist/index.mjs",
|
|
10
10
|
"scripts": {
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"build:test": "npm run clean && tsc -b tsconfig.test.json --force",
|
|
14
|
-
"build:test:noclean": "tsc -b tsconfig.test.json --force",
|
|
15
|
-
"build:link": "npm uninstall --global @ibgib/core-gib && npm ls --global --link=true && npm link",
|
|
16
|
-
"prebuild:link": "npm run build && npm ls --global --link=true",
|
|
17
|
-
"postbuild:link": "npm ls --global --link=true",
|
|
18
|
-
"man:build:link": "echo 'builds and relinks this package AFTER first removing the global package. Otherwise will get a permission denied error after build when attempting to use the ibgib cmd from commandline.'",
|
|
19
|
-
"test": "npm run test:both",
|
|
20
|
-
"test:agent": "npm run build:test && npm run test:node:nobuild",
|
|
21
|
-
"test:debug": "npm run build:test && node --inspect-brk dist/respec-gib.node.mjs",
|
|
22
|
-
"test:debug:nobuild": "node --inspect-brk dist/respec-gib.node.mjs",
|
|
23
|
-
"test:both": "npm run build:test && npm run test:node:nobuild && npm run test:browser:nobuild",
|
|
24
|
-
"man:test:both": "use this if you want to test in both node and browser contexts",
|
|
25
|
-
"pretest:node": "npm run build:test",
|
|
26
|
-
"test:node": "node dist/respec-gib.node.mjs --inspect",
|
|
27
|
-
"man:test:node": "use this if you want to build+test in node",
|
|
28
|
-
"test:node:nobuild": "node dist/respec-gib.node.mjs --inspect",
|
|
29
|
-
"man:test:node:nobuild": "use this if you want to test in node but its already built",
|
|
30
|
-
"test:browser": "npm run build:test && echo \"not implemented yet\"",
|
|
31
|
-
"man:test:browser": "use this if you want to build+test only the browser context",
|
|
32
|
-
"test:browser:nobuild": "echo \"not implemented yet\"",
|
|
33
|
-
"man:test:browser:nobuild": "use this if you want to test only the browser context but its already built",
|
|
34
|
-
"test:browser:serve": "npm run build:test && echo \"not implemented yet\"",
|
|
35
|
-
"man:test:browser:serve": "use this if you want to build+test in the browser and don't want the browser to close when your done. (i.e. you're debugging)",
|
|
36
|
-
"test:browser:serve:nobuild": "\"not implemented yet\"",
|
|
37
|
-
"man:test:browser:serve:nobuild": "use this if you are troubleshooting existing dist output and don't want to overwrite those files. (and you're debugging in the browser)",
|
|
11
|
+
"//_orchestration": "~~ ORCHESTRATION (handled by @ibgib/build-gib) ~~",
|
|
12
|
+
"//_publish": "~~ PUBLISH ~~",
|
|
38
13
|
"pack": "npm pack --pack-destination=\"./published\"",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
14
|
+
"test:node:nobuild": "node dist/respec-gib.node.mjs --inspect",
|
|
15
|
+
"build:test": "tsc -p tsconfig.test.json",
|
|
16
|
+
"prepare:publish": "npm version patch && node ../../build/dist/concrete-build/build-core-gib.mjs --prod && npm run pack",
|
|
17
|
+
"man:prepare:publish": "use this to patch > build > pack for publishing to npm repo"
|
|
42
18
|
},
|
|
43
19
|
"type": "module",
|
|
44
20
|
"keywords": [
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { respecfully, iReckon, ifWeMight, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
2
|
+
import { KeystoneService_V1 } from './keystone-service-v1.mjs';
|
|
3
|
+
import { createStandardPoolConfig } from './keystone-config-builder.mjs';
|
|
4
|
+
import { POOL_ID_DEFAULT, KEYSTONE_CHECKPOINT_FREQUENCY } from './keystone-constants.mjs';
|
|
5
|
+
import { KeystoneData_V1, KeystoneIbGib_V1, KeystoneClaim } from './keystone-types.mjs';
|
|
6
|
+
|
|
7
|
+
const sir = `[${import.meta.url}]`;
|
|
8
|
+
|
|
9
|
+
class MockMetaspace {
|
|
10
|
+
public storage = new Map<string, any>();
|
|
11
|
+
async get(args: { addr: string }) {
|
|
12
|
+
const ibGib = this.storage.get(args.addr);
|
|
13
|
+
return { success: !!ibGib, ibGibs: ibGib ? [ibGib] : [] };
|
|
14
|
+
}
|
|
15
|
+
async put(args: { ibGib: any }) {
|
|
16
|
+
this.storage.set(`${args.ibGib.ib}^${args.ibGib.gib}`, args.ibGib);
|
|
17
|
+
}
|
|
18
|
+
async registerNewIbGib(args: { ibGib: any }) {
|
|
19
|
+
await this.put(args);
|
|
20
|
+
}
|
|
21
|
+
async getLocalUserSpace() { return new MockSpace(); }
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
class MockSpace {
|
|
25
|
+
async put() { }
|
|
26
|
+
async witness() { return { data: { success: true } }; }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
await respecfully(sir, 'Keystone State Aggregation', async () => {
|
|
30
|
+
const service = new KeystoneService_V1();
|
|
31
|
+
const metaspace = new MockMetaspace() as any;
|
|
32
|
+
const space = new MockSpace() as any;
|
|
33
|
+
const masterSecret = "AliceSecret";
|
|
34
|
+
const config = createStandardPoolConfig({ id: POOL_ID_DEFAULT, salt: POOL_ID_DEFAULT, size: 1000 });
|
|
35
|
+
|
|
36
|
+
await ifWe(sir, 'aggregates frameDetails correctly across multiple evolutions', async () => {
|
|
37
|
+
// 1. Genesis with some details
|
|
38
|
+
const genesis = await service.genesis({
|
|
39
|
+
masterSecret,
|
|
40
|
+
configs: [config],
|
|
41
|
+
metaspace,
|
|
42
|
+
space,
|
|
43
|
+
frameDetails: { profile: { name: 'Alice' } }
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// 2. Evolve with more details
|
|
47
|
+
const claim: Partial<KeystoneClaim> = { target: "comment 1^gib", verb: "post" };
|
|
48
|
+
const frame2 = await service.sign({
|
|
49
|
+
latestKeystone: genesis,
|
|
50
|
+
masterSecret,
|
|
51
|
+
claim,
|
|
52
|
+
metaspace,
|
|
53
|
+
space,
|
|
54
|
+
frameDetails: { profile: { email: 'alice@example.com' }, lastLogin: '2026-05-01' }
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// 3. Evolve again (no new details)
|
|
58
|
+
const frame3 = await service.sign({
|
|
59
|
+
latestKeystone: frame2,
|
|
60
|
+
masterSecret,
|
|
61
|
+
claim: { ...claim, target: "comment 2^gib" },
|
|
62
|
+
metaspace,
|
|
63
|
+
space
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// 4. Verify aggregation
|
|
67
|
+
const aggregated = await service.getAggregateDetails({
|
|
68
|
+
latestKeystone: frame3,
|
|
69
|
+
metaspace,
|
|
70
|
+
space
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
iReckon(sir, aggregated.profile.name).willEqual('Alice');
|
|
74
|
+
iReckon(sir, aggregated.profile.email).willEqual('alice@example.com');
|
|
75
|
+
iReckon(sir, aggregated.lastLogin).willEqual('2026-05-01');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
await ifWe(sir, 'generates a checkpoint and uses it for aggregation', async () => {
|
|
79
|
+
// We will force a checkpoint by evolving KEYSTONE_CHECKPOINT_FREQUENCY times.
|
|
80
|
+
// For testing, we might want to lower the frequency, but let's stick to the constant
|
|
81
|
+
// and just do a loop if it's not too large. 50 is fine for a test.
|
|
82
|
+
|
|
83
|
+
let current = await service.genesis({
|
|
84
|
+
masterSecret,
|
|
85
|
+
configs: [config],
|
|
86
|
+
metaspace,
|
|
87
|
+
space,
|
|
88
|
+
frameDetails: { initial: true }
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const totalEvolutions = KEYSTONE_CHECKPOINT_FREQUENCY;
|
|
92
|
+
console.log(`[test] Performing ${totalEvolutions} evolutions to trigger checkpoint...`);
|
|
93
|
+
|
|
94
|
+
for (let i = 1; i <= totalEvolutions; i++) {
|
|
95
|
+
current = await service.sign({
|
|
96
|
+
latestKeystone: current,
|
|
97
|
+
masterSecret,
|
|
98
|
+
claim: { target: `item_${i}^gib`, verb: "update" },
|
|
99
|
+
metaspace,
|
|
100
|
+
space,
|
|
101
|
+
frameDetails: { [`step_${i}`]: true }
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// The latest frame should now have a checkpointDetails
|
|
106
|
+
iReckon(sir, current.data.checkpointDetails).asTo('checkpoint exists').isGonnaBeTruthy();
|
|
107
|
+
iReckon(sir, current.data.n).willEqual(totalEvolutions);
|
|
108
|
+
|
|
109
|
+
// Aggregation should work and be fast (it stops at the checkpoint)
|
|
110
|
+
// We can verify it has all the steps
|
|
111
|
+
const aggregated = await service.getAggregateDetails({
|
|
112
|
+
latestKeystone: current,
|
|
113
|
+
metaspace,
|
|
114
|
+
space
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
iReckon(sir, aggregated.initial).isGonnaBeTrue();
|
|
118
|
+
iReckon(sir, aggregated[`step_${totalEvolutions}`]).isGonnaBeTrue();
|
|
119
|
+
iReckon(sir, aggregated[`step_1`]).isGonnaBeTrue();
|
|
120
|
+
|
|
121
|
+
// Verify that it actually used the checkpoint (white-box-ish)
|
|
122
|
+
// If we clear the previous frames from storage, getAggregateDetails should still work
|
|
123
|
+
// if it only goes back to the checkpoint.
|
|
124
|
+
// Wait, current IS the checkpoint. So it should stop immediately.
|
|
125
|
+
|
|
126
|
+
metaspace.storage.clear();
|
|
127
|
+
// Re-put ONLY the latest (which has the checkpoint)
|
|
128
|
+
await metaspace.put({ ibGib: current });
|
|
129
|
+
|
|
130
|
+
const aggregatedFromCheckpoint = await service.getAggregateDetails({
|
|
131
|
+
latestKeystone: current,
|
|
132
|
+
metaspace,
|
|
133
|
+
space
|
|
134
|
+
});
|
|
135
|
+
iReckon(sir, aggregatedFromCheckpoint.initial).isGonnaBeTrue();
|
|
136
|
+
});
|
|
137
|
+
});
|
|
@@ -84,3 +84,19 @@ Re-runs the Policy Engine to ensure the correct challenges were solved and verif
|
|
|
84
84
|
|
|
85
85
|
### 5.4 Revoke
|
|
86
86
|
Consumes **ALL** challenges in the revocation pool ("Scorched Earth"). The identity can no longer evolve.
|
|
87
|
+
|
|
88
|
+
## 6. State Management & Aggregation
|
|
89
|
+
|
|
90
|
+
### 6.1 Incremental State (`frameDetails`)
|
|
91
|
+
To maintain the efficiency of the DAG, most Keystone frames only store the *diff* or "frame details" specific to that evolution (e.g., updating a profile field or adding a pool).
|
|
92
|
+
|
|
93
|
+
### 6.2 Aggregation (`getAggregateDetails`)
|
|
94
|
+
The full state of a Keystone identity is reconstructed by walking back through the `past` relationship array and merging all `frameDetails` encountered.
|
|
95
|
+
|
|
96
|
+
> [!IMPORTANT]
|
|
97
|
+
> **Timeline Ordering**: The `past` relationship array is ordered with the **Genesis frame at index 0** and subsequent evolutions appended to the end. Therefore, the immediate ancestor is always found at `past.at(-1)`.
|
|
98
|
+
|
|
99
|
+
### 6.3 Checkpoints (`checkpointDetails`)
|
|
100
|
+
To avoid O(N) walk-back performance for long-lived identities, the `KeystoneService_V1` automatically generates a **Checkpoint** every $N$ evolutions (configured via `KEYSTONE_CHECKPOINT_FREQUENCY`).
|
|
101
|
+
|
|
102
|
+
A Checkpoint stores the *full aggregated state* at that point in time. When the aggregation walker encounters a frame with `checkpointDetails`, it merges those details and **stops**, effectively capping the walk-back length.
|
|
@@ -92,5 +92,10 @@ export const KEYSTONE_CONFIG_DEFAULT_SEQUENTIAL_HIGHSECURITY = 5;
|
|
|
92
92
|
export const KEYSTONE_CONFIG_DEFAULT_RANDOM_HIGHSECURITY = 5;
|
|
93
93
|
export const KEYSTONE_CONFIG_DEFAULT_BINDING_HIGHSECURITY = 16;
|
|
94
94
|
export const KEYSTONE_CONFIG_DEFAULT_REPLENISH_STRATEGY_HIGHSECURITY = KeystoneReplenishStrategy.replaceAll;
|
|
95
|
-
export const KEYSTONE_CONFIG_DEFAULT_HASH_ALGORITHM_HIGHSECURITY = HashAlgorithm.
|
|
95
|
+
export const KEYSTONE_CONFIG_DEFAULT_HASH_ALGORITHM_HIGHSECURITY = HashAlgorithm.sha_512;
|
|
96
96
|
export const KEYSTONE_CONFIG_DEFAULT_HASH_ROUNDS_HIGHSECURITY = 10;
|
|
97
|
+
/**
|
|
98
|
+
* the checkpointing mechanism will do a checkpoint every [this number] of
|
|
99
|
+
* keystone frame evolutions.
|
|
100
|
+
*/
|
|
101
|
+
export const KEYSTONE_CHECKPOINT_FREQUENCY = 50;
|
|
@@ -25,6 +25,7 @@ import { getDependencyGraph } from "../common/other/graph-helper.mjs";
|
|
|
25
25
|
import { getIbGibsFromCache_fallbackToSpaces, getTimelinesGroupedByTjp, splitPerTjpAndOrDna } from "../common/other/ibgib-helper.mjs";
|
|
26
26
|
import { IbGib_V1, IbGibData_V1, IbGibRel8ns_V1 } from "@ibgib/ts-gib/dist/V1/types.mjs";
|
|
27
27
|
import { getLatestAddrs } from "../witness/space/space-helper.mjs";
|
|
28
|
+
import { FlatIbGibGraph } from "../common/other/graph-types.mjs";
|
|
28
29
|
|
|
29
30
|
const logalot = GLOBAL_LOG_A_LOT;
|
|
30
31
|
|
|
@@ -861,6 +862,7 @@ export async function evolvePersistAndRegisterKeystone({
|
|
|
861
862
|
if (prevData.proofs) { dataToRemove.proofs = []; }
|
|
862
863
|
if (prevData.challengePools) { dataToRemove.challengePools = []; }
|
|
863
864
|
if (prevData.frameDetails) { dataToRemove.frameDetails = {}; }
|
|
865
|
+
if (prevData.checkpointDetails) { dataToRemove.checkpointDetails = {}; }
|
|
864
866
|
if (Object.keys(dataToRemove).length === 0) { dataToRemove = undefined; }
|
|
865
867
|
|
|
866
868
|
const resMut8 = await mut8({
|
|
@@ -965,11 +967,17 @@ export async function createKeystoneIbGibImpl({
|
|
|
965
967
|
|
|
966
968
|
export async function validateKeystoneGraph({
|
|
967
969
|
keystoneIbGib,
|
|
970
|
+
dependencyGraph,
|
|
968
971
|
getLatest,
|
|
969
972
|
invalidIfMoreRecentKeystoneFoundInSpace,
|
|
970
973
|
space,
|
|
971
974
|
}: {
|
|
972
975
|
keystoneIbGib: KeystoneIbGib_V1,
|
|
976
|
+
/**
|
|
977
|
+
* set this if you already have a reference to the graph. It is the caller's
|
|
978
|
+
* responsibility to enforce {@link getLatest}.
|
|
979
|
+
*/
|
|
980
|
+
dependencyGraph?: FlatIbGibGraph,
|
|
973
981
|
/**
|
|
974
982
|
* if true, then this will get the latest keystone known in the incoming
|
|
975
983
|
* {@link keystoneIbGib} timeline, as found in {@link space}.
|
|
@@ -1025,7 +1033,7 @@ export async function validateKeystoneGraph({
|
|
|
1025
1033
|
}
|
|
1026
1034
|
}
|
|
1027
1035
|
|
|
1028
|
-
|
|
1036
|
+
dependencyGraph ??= await getDependencyGraph({
|
|
1029
1037
|
ibGib: keystoneIbGib,
|
|
1030
1038
|
space,
|
|
1031
1039
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { extractErrorMsg, } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
1
|
+
import { extractErrorMsg, mergeMapsOrArrays_Naive } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
2
2
|
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
3
3
|
|
|
4
4
|
import { GLOBAL_LOG_A_LOT } from '../core-constants.mjs';
|
|
@@ -7,16 +7,18 @@ import {
|
|
|
7
7
|
KeystoneChallengePool, KeystoneReplenishStrategy, KeystoneRevocationInfo,
|
|
8
8
|
} from './keystone-types.mjs';
|
|
9
9
|
import { KeystoneStrategyFactory } from './strategy/keystone-strategy-factory.mjs';
|
|
10
|
-
import { POOL_ID_REVOKE, KEYSTONE_VERB_REVOKE, KEYSTONE_VERB_MANAGE } from './keystone-constants.mjs';
|
|
10
|
+
import { POOL_ID_REVOKE, KEYSTONE_VERB_REVOKE, KEYSTONE_VERB_MANAGE, KEYSTONE_CHECKPOINT_FREQUENCY } from './keystone-constants.mjs';
|
|
11
11
|
import {
|
|
12
12
|
addToBindingMap, createKeystoneIbGibImpl, evolvePersistAndRegisterKeystone,
|
|
13
13
|
generateOpaqueChallengeId, resolveTargetPool, selectChallengeIds,
|
|
14
14
|
solveAndReplenish, validateKeystoneTransition,
|
|
15
|
+
validateGenesisKeystone, validateKeystoneGraph
|
|
15
16
|
} from './keystone-helpers.mjs';
|
|
16
17
|
import { IbGibSpaceAny } from '../witness/space/space-base-v1.mjs';
|
|
17
18
|
import { MetaspaceService } from '../witness/space/metaspace/metaspace-types.mjs';
|
|
19
|
+
import { FlatIbGibGraph } from '../common/other/graph-types.mjs';
|
|
18
20
|
|
|
19
|
-
const logalot = GLOBAL_LOG_A_LOT
|
|
21
|
+
const logalot = GLOBAL_LOG_A_LOT;
|
|
20
22
|
|
|
21
23
|
/**
|
|
22
24
|
* Facade for managing Keystone Identities.
|
|
@@ -63,7 +65,7 @@ export class KeystoneService_V1 {
|
|
|
63
65
|
});
|
|
64
66
|
|
|
65
67
|
const solution = await strategy.generateSolution({
|
|
66
|
-
poolSecret, poolId: config.
|
|
68
|
+
poolSecret, poolId: config.id, challengeId,
|
|
67
69
|
});
|
|
68
70
|
const challenge = await strategy.generateChallenge({ solution });
|
|
69
71
|
challenges[challengeId] = challenge;
|
|
@@ -73,7 +75,7 @@ export class KeystoneService_V1 {
|
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
challengePools.push({
|
|
76
|
-
id: config.
|
|
78
|
+
id: config.id,
|
|
77
79
|
config,
|
|
78
80
|
challenges,
|
|
79
81
|
bindingMap
|
|
@@ -153,7 +155,7 @@ export class KeystoneService_V1 {
|
|
|
153
155
|
verb: claim.verb
|
|
154
156
|
});
|
|
155
157
|
|
|
156
|
-
if (logalot) { console.log(`${lc} Selected pool: ${pool.id} (size: ${Object.keys(pool.challenges).length}) (I:
|
|
158
|
+
if (logalot) { console.log(`${lc} Selected pool: ${pool.id} (size: ${Object.keys(pool.challenges).length}) (I: 6b26d6f4aad18380f2b3a0989b592826)`); }
|
|
157
159
|
|
|
158
160
|
// 2. Calculate Costs (Select IDs)
|
|
159
161
|
const idsToSolve = selectChallengeIds({
|
|
@@ -175,11 +177,27 @@ export class KeystoneService_V1 {
|
|
|
175
177
|
});
|
|
176
178
|
|
|
177
179
|
// 4. Construct New Data
|
|
180
|
+
const n = (prevData.n ?? 0) + 1;
|
|
181
|
+
let checkpointDetails: any | undefined;
|
|
182
|
+
if (n % KEYSTONE_CHECKPOINT_FREQUENCY === 0) {
|
|
183
|
+
// Generate a temporary view of the keystone as it would be in this frame
|
|
184
|
+
// to calculate the aggregated state.
|
|
185
|
+
const currentFrameView: KeystoneIbGib_V1 = {
|
|
186
|
+
...latestKeystone,
|
|
187
|
+
data: { ...prevData, frameDetails }
|
|
188
|
+
};
|
|
189
|
+
checkpointDetails = await this.getAggregateDetails({
|
|
190
|
+
latestKeystone: currentFrameView,
|
|
191
|
+
metaspace,
|
|
192
|
+
space
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
178
196
|
const newData: KeystoneData_V1 = {
|
|
179
197
|
challengePools: nextPools,
|
|
180
198
|
proofs: [proof],
|
|
181
199
|
frameDetails,
|
|
182
|
-
|
|
200
|
+
checkpointDetails,
|
|
183
201
|
};
|
|
184
202
|
|
|
185
203
|
// 5. Commit (Evolve, Persist, Register)
|
|
@@ -223,6 +241,106 @@ export class KeystoneService_V1 {
|
|
|
223
241
|
return errors;
|
|
224
242
|
}
|
|
225
243
|
|
|
244
|
+
/**
|
|
245
|
+
* Validates a genesis keystone.
|
|
246
|
+
*
|
|
247
|
+
* @returns Array of validation error strings. Empty array means Valid.
|
|
248
|
+
*/
|
|
249
|
+
async validateGenesisKeystone({
|
|
250
|
+
keystoneIbGib,
|
|
251
|
+
}: {
|
|
252
|
+
keystoneIbGib: KeystoneIbGib_V1;
|
|
253
|
+
}): Promise<string[]> {
|
|
254
|
+
return await validateGenesisKeystone({ keystoneIbGib });
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Retrieves the latest keystone frame for the given address.
|
|
259
|
+
*
|
|
260
|
+
* Uses `metaspace.getLatestAddr` to find the actual tip instead of trusting
|
|
261
|
+
* an incoming payload's `past` rel8n.
|
|
262
|
+
*
|
|
263
|
+
* @see `ibgib-get-pattern` SKILL.md
|
|
264
|
+
*/
|
|
265
|
+
async getLatestKeystone({
|
|
266
|
+
addr,
|
|
267
|
+
metaspace,
|
|
268
|
+
space,
|
|
269
|
+
}: {
|
|
270
|
+
addr: string;
|
|
271
|
+
metaspace: MetaspaceService;
|
|
272
|
+
space: IbGibSpaceAny;
|
|
273
|
+
}): Promise<KeystoneIbGib_V1> {
|
|
274
|
+
const lc = `${this.lc}[${this.getLatestKeystone.name}]`;
|
|
275
|
+
try {
|
|
276
|
+
if (logalot) { console.log(`${lc} starting...`); }
|
|
277
|
+
|
|
278
|
+
const latestAddr = await metaspace.getLatestAddr({ tjpAddr: addr, space });
|
|
279
|
+
if (!latestAddr) {
|
|
280
|
+
throw new Error(`could not find latest addr for ${addr}`);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
const resGet = await metaspace.get({ addr: latestAddr, space });
|
|
284
|
+
if (resGet.success && resGet.ibGibs && resGet.ibGibs.length > 0) {
|
|
285
|
+
return resGet.ibGibs[0] as KeystoneIbGib_V1;
|
|
286
|
+
} else {
|
|
287
|
+
const resIbGib = resGet.rawResultIbGib as any;
|
|
288
|
+
const addrsNotFound = resIbGib?.data?.addrsNotFound ?? 'unknown';
|
|
289
|
+
throw new Error(`couldn't find latest keystone at ${latestAddr}. addrsNotFound: ${addrsNotFound}? resGet.errorMsg: ${resGet.errorMsg}`);
|
|
290
|
+
}
|
|
291
|
+
} catch (error) {
|
|
292
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
293
|
+
throw error;
|
|
294
|
+
} finally {
|
|
295
|
+
if (logalot) { console.log(`${lc} complete.`); }
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Validates an entire keystone graph from tip to genesis.
|
|
301
|
+
*
|
|
302
|
+
* @returns Array of validation error strings. Empty array means Valid.
|
|
303
|
+
*/
|
|
304
|
+
async validateKeystoneGraph({
|
|
305
|
+
keystoneIbGib,
|
|
306
|
+
dependencyGraph,
|
|
307
|
+
getLatest,
|
|
308
|
+
invalidIfMoreRecentKeystoneFoundInSpace,
|
|
309
|
+
space,
|
|
310
|
+
}: {
|
|
311
|
+
keystoneIbGib: KeystoneIbGib_V1,
|
|
312
|
+
/**
|
|
313
|
+
* set this if you already have a reference to the graph. It is the caller's
|
|
314
|
+
* responsibility to enforce {@link getLatest}.
|
|
315
|
+
*/
|
|
316
|
+
dependencyGraph?: FlatIbGibGraph,
|
|
317
|
+
/**
|
|
318
|
+
* if true, then this will get the latest keystone known in the incoming
|
|
319
|
+
* {@link keystoneIbGib} timeline, as found in {@link space}.
|
|
320
|
+
*/
|
|
321
|
+
getLatest: boolean,
|
|
322
|
+
invalidIfMoreRecentKeystoneFoundInSpace: boolean,
|
|
323
|
+
space: IbGibSpaceAny,
|
|
324
|
+
}): Promise<string[]> {
|
|
325
|
+
const lc = `${this.lc}[${this.validateKeystoneGraph.name}]`;
|
|
326
|
+
try {
|
|
327
|
+
if (logalot) { console.log(`${lc} starting... (I: 01c5cd455038c270cbf1effc1704af26)`); }
|
|
328
|
+
|
|
329
|
+
return await validateKeystoneGraph({
|
|
330
|
+
keystoneIbGib,
|
|
331
|
+
dependencyGraph,
|
|
332
|
+
getLatest,
|
|
333
|
+
invalidIfMoreRecentKeystoneFoundInSpace,
|
|
334
|
+
space
|
|
335
|
+
});
|
|
336
|
+
} catch (error) {
|
|
337
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
338
|
+
throw error;
|
|
339
|
+
} finally {
|
|
340
|
+
if (logalot) { console.log(`${lc} complete.`); }
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
226
344
|
/**
|
|
227
345
|
* Permanently revokes the Identity.
|
|
228
346
|
*
|
|
@@ -296,11 +414,26 @@ export class KeystoneService_V1 {
|
|
|
296
414
|
const revocationInfo: KeystoneRevocationInfo = { reason, proof };
|
|
297
415
|
|
|
298
416
|
// 6. Construct New Data
|
|
417
|
+
const n = (prevData.n ?? 0) + 1;
|
|
418
|
+
let checkpointDetails: any | undefined;
|
|
419
|
+
if (n % KEYSTONE_CHECKPOINT_FREQUENCY === 0) {
|
|
420
|
+
const currentFrameView: KeystoneIbGib_V1 = {
|
|
421
|
+
...latestKeystone,
|
|
422
|
+
data: { ...prevData, frameDetails, revocationInfo }
|
|
423
|
+
};
|
|
424
|
+
checkpointDetails = await this.getAggregateDetails({
|
|
425
|
+
latestKeystone: currentFrameView,
|
|
426
|
+
metaspace,
|
|
427
|
+
space
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
|
|
299
431
|
const newData: KeystoneData_V1 = {
|
|
300
432
|
challengePools: nextPools,
|
|
301
433
|
proofs: [proof],
|
|
302
434
|
revocationInfo,
|
|
303
|
-
frameDetails
|
|
435
|
+
frameDetails,
|
|
436
|
+
checkpointDetails,
|
|
304
437
|
};
|
|
305
438
|
|
|
306
439
|
// 7. Commit
|
|
@@ -409,9 +542,24 @@ export class KeystoneService_V1 {
|
|
|
409
542
|
const finalPools = [...replenishedExistingPools, ...newPools];
|
|
410
543
|
|
|
411
544
|
// 6. Construct New Data
|
|
545
|
+
const n = (prevData.n ?? 0) + 1;
|
|
546
|
+
let checkpointDetails: any | undefined;
|
|
547
|
+
if (n % KEYSTONE_CHECKPOINT_FREQUENCY === 0) {
|
|
548
|
+
const currentFrameView: KeystoneIbGib_V1 = {
|
|
549
|
+
...latestKeystone,
|
|
550
|
+
data: { ...prevData, challengePools: finalPools }
|
|
551
|
+
};
|
|
552
|
+
checkpointDetails = await this.getAggregateDetails({
|
|
553
|
+
latestKeystone: currentFrameView,
|
|
554
|
+
metaspace,
|
|
555
|
+
space
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
|
|
412
559
|
const newData: KeystoneData_V1 = {
|
|
413
560
|
challengePools: finalPools,
|
|
414
561
|
proofs: [proof], // The proof authorizes the structure change
|
|
562
|
+
checkpointDetails,
|
|
415
563
|
};
|
|
416
564
|
|
|
417
565
|
// 7. Commit
|
|
@@ -430,4 +578,64 @@ export class KeystoneService_V1 {
|
|
|
430
578
|
if (logalot) { console.log(`${lc} complete.`); }
|
|
431
579
|
}
|
|
432
580
|
}
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Consolidates the state of a Keystone identity across its history.
|
|
584
|
+
* Walks back until it hits a checkpoint or genesis.
|
|
585
|
+
*/
|
|
586
|
+
async getAggregateDetails({
|
|
587
|
+
latestKeystone,
|
|
588
|
+
metaspace,
|
|
589
|
+
space,
|
|
590
|
+
}: {
|
|
591
|
+
latestKeystone: KeystoneIbGib_V1;
|
|
592
|
+
metaspace: MetaspaceService;
|
|
593
|
+
space?: IbGibSpaceAny;
|
|
594
|
+
}): Promise<any> {
|
|
595
|
+
const lc = `${this.lc}[${this.getAggregateDetails.name}]`;
|
|
596
|
+
try {
|
|
597
|
+
let aggregated: any = {};
|
|
598
|
+
let current = latestKeystone;
|
|
599
|
+
|
|
600
|
+
while (current) {
|
|
601
|
+
const data = current.data!;
|
|
602
|
+
|
|
603
|
+
// 1. If we hit a checkpoint, merge it and STOP.
|
|
604
|
+
if (data.checkpointDetails) {
|
|
605
|
+
aggregated = mergeMapsOrArrays_Naive({
|
|
606
|
+
dominant: aggregated,
|
|
607
|
+
recessive: data.checkpointDetails
|
|
608
|
+
});
|
|
609
|
+
break;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
// 2. Merge this frame's details
|
|
613
|
+
if (data.frameDetails) {
|
|
614
|
+
aggregated = mergeMapsOrArrays_Naive({
|
|
615
|
+
dominant: aggregated,
|
|
616
|
+
recessive: data.frameDetails
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
// 3. Genesis check (n=0)
|
|
621
|
+
if (data.n === 0) { break; }
|
|
622
|
+
|
|
623
|
+
// 4. Walk back
|
|
624
|
+
const past = current.rel8ns?.past;
|
|
625
|
+
const prevAddr = (past && past.length > 0) ? past[past.length - 1] : undefined;
|
|
626
|
+
if (!prevAddr) { break; }
|
|
627
|
+
|
|
628
|
+
const res = await metaspace.get({ addr: prevAddr, space });
|
|
629
|
+
if (!res.success || !res.ibGibs || res.ibGibs.length === 0) {
|
|
630
|
+
throw new Error(`Could not find previous keystone frame at ${prevAddr} (E: e3d069b22e11e550e58844889ddb5325)`);
|
|
631
|
+
}
|
|
632
|
+
current = res.ibGibs[0] as KeystoneIbGib_V1;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
return aggregated;
|
|
636
|
+
} catch (error) {
|
|
637
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
638
|
+
throw error;
|
|
639
|
+
}
|
|
640
|
+
}
|
|
433
641
|
}
|