@optimystic/db-p2p 0.24.2 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{readme.md → README.md} +688 -668
- package/dist/src/cluster/block-transfer-service.d.ts +133 -10
- package/dist/src/cluster/block-transfer-service.d.ts.map +1 -1
- package/dist/src/cluster/block-transfer-service.js +155 -9
- package/dist/src/cluster/block-transfer-service.js.map +1 -1
- package/dist/src/cluster/block-transfer.d.ts +67 -7
- package/dist/src/cluster/block-transfer.d.ts.map +1 -1
- package/dist/src/cluster/block-transfer.js +127 -24
- package/dist/src/cluster/block-transfer.js.map +1 -1
- package/dist/src/cluster/certified-claims.d.ts +170 -0
- package/dist/src/cluster/certified-claims.d.ts.map +1 -0
- package/dist/src/cluster/certified-claims.js +200 -0
- package/dist/src/cluster/certified-claims.js.map +1 -0
- package/dist/src/cluster/client-signature-verifier.d.ts +23 -0
- package/dist/src/cluster/client-signature-verifier.d.ts.map +1 -0
- package/dist/src/cluster/client-signature-verifier.js +33 -0
- package/dist/src/cluster/client-signature-verifier.js.map +1 -0
- package/dist/src/cluster/cluster-policy.d.ts +9 -3
- package/dist/src/cluster/cluster-policy.d.ts.map +1 -1
- package/dist/src/cluster/cluster-policy.js +111 -27
- package/dist/src/cluster/cluster-policy.js.map +1 -1
- package/dist/src/cluster/cluster-repo.d.ts +140 -11
- package/dist/src/cluster/cluster-repo.d.ts.map +1 -1
- package/dist/src/cluster/cluster-repo.js +485 -29
- package/dist/src/cluster/cluster-repo.js.map +1 -1
- package/dist/src/cluster/commit-proof.d.ts +134 -0
- package/dist/src/cluster/commit-proof.d.ts.map +1 -0
- package/dist/src/cluster/commit-proof.js +263 -0
- package/dist/src/cluster/commit-proof.js.map +1 -0
- package/dist/src/cluster/quorum-restore.d.ts +95 -8
- package/dist/src/cluster/quorum-restore.d.ts.map +1 -1
- package/dist/src/cluster/quorum-restore.js +113 -14
- package/dist/src/cluster/quorum-restore.js.map +1 -1
- package/dist/src/cluster/rebalance-monitor.d.ts +84 -0
- package/dist/src/cluster/rebalance-monitor.d.ts.map +1 -1
- package/dist/src/cluster/rebalance-monitor.js +207 -5
- package/dist/src/cluster/rebalance-monitor.js.map +1 -1
- package/dist/src/cluster/reconcile-block.d.ts +27 -7
- package/dist/src/cluster/reconcile-block.d.ts.map +1 -1
- package/dist/src/cluster/reconcile-block.js +179 -38
- package/dist/src/cluster/reconcile-block.js.map +1 -1
- package/dist/src/cluster/service.d.ts +13 -4
- package/dist/src/cluster/service.d.ts.map +1 -1
- package/dist/src/cluster/service.js +17 -18
- package/dist/src/cluster/service.js.map +1 -1
- package/dist/src/cluster/spread-on-churn.d.ts +8 -2
- package/dist/src/cluster/spread-on-churn.d.ts.map +1 -1
- package/dist/src/cluster/spread-on-churn.js +7 -7
- package/dist/src/cluster/spread-on-churn.js.map +1 -1
- package/dist/src/cohort-topic/host.d.ts.map +1 -1
- package/dist/src/cohort-topic/host.js +8 -7
- package/dist/src/cohort-topic/host.js.map +1 -1
- package/dist/src/cohort-topic/stream-util.d.ts +7 -6
- package/dist/src/cohort-topic/stream-util.d.ts.map +1 -1
- package/dist/src/cohort-topic/stream-util.js +14 -41
- package/dist/src/cohort-topic/stream-util.js.map +1 -1
- package/dist/src/dispute/cascade.d.ts +7 -8
- package/dist/src/dispute/cascade.d.ts.map +1 -1
- package/dist/src/dispute/cascade.js +24 -7
- package/dist/src/dispute/cascade.js.map +1 -1
- package/dist/src/dispute/dispute-service.d.ts +5 -0
- package/dist/src/dispute/dispute-service.d.ts.map +1 -1
- package/dist/src/dispute/dispute-service.js +13 -3
- package/dist/src/dispute/dispute-service.js.map +1 -1
- package/dist/src/dispute/invalidation.d.ts +33 -15
- package/dist/src/dispute/invalidation.d.ts.map +1 -1
- package/dist/src/dispute/invalidation.js +127 -34
- package/dist/src/dispute/invalidation.js.map +1 -1
- package/dist/src/dispute/service.d.ts.map +1 -1
- package/dist/src/dispute/service.js +2 -1
- package/dist/src/dispute/service.js.map +1 -1
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p-key-network.d.ts +14 -10
- package/dist/src/libp2p-key-network.d.ts.map +1 -1
- package/dist/src/libp2p-key-network.js +28 -58
- package/dist/src/libp2p-key-network.js.map +1 -1
- package/dist/src/libp2p-node-base.d.ts +38 -7
- package/dist/src/libp2p-node-base.d.ts.map +1 -1
- package/dist/src/libp2p-node-base.js +148 -63
- package/dist/src/libp2p-node-base.js.map +1 -1
- package/dist/src/network/open-protocol-stream.d.ts +56 -0
- package/dist/src/network/open-protocol-stream.d.ts.map +1 -0
- package/dist/src/network/open-protocol-stream.js +60 -0
- package/dist/src/network/open-protocol-stream.js.map +1 -0
- package/dist/src/network/register-protocol-handler.d.ts +66 -0
- package/dist/src/network/register-protocol-handler.d.ts.map +1 -0
- package/dist/src/network/register-protocol-handler.js +51 -0
- package/dist/src/network/register-protocol-handler.js.map +1 -0
- package/dist/src/peer-address-book.d.ts +60 -2
- package/dist/src/peer-address-book.d.ts.map +1 -1
- package/dist/src/peer-address-book.js +89 -1
- package/dist/src/peer-address-book.js.map +1 -1
- package/dist/src/pend-validation.d.ts +65 -0
- package/dist/src/pend-validation.d.ts.map +1 -0
- package/dist/src/pend-validation.js +69 -0
- package/dist/src/pend-validation.js.map +1 -0
- package/dist/src/reactivity/notify-transport.d.ts.map +1 -1
- package/dist/src/reactivity/notify-transport.js +2 -1
- package/dist/src/reactivity/notify-transport.js.map +1 -1
- package/dist/src/reactivity/push-state-gossip.d.ts.map +1 -1
- package/dist/src/reactivity/push-state-gossip.js +2 -1
- package/dist/src/reactivity/push-state-gossip.js.map +1 -1
- package/dist/src/repo/cluster-coordinator.d.ts +32 -6
- package/dist/src/repo/cluster-coordinator.d.ts.map +1 -1
- package/dist/src/repo/cluster-coordinator.js +44 -10
- package/dist/src/repo/cluster-coordinator.js.map +1 -1
- package/dist/src/repo/coordinator-repo.d.ts +181 -25
- package/dist/src/repo/coordinator-repo.d.ts.map +1 -1
- package/dist/src/repo/coordinator-repo.js +650 -62
- package/dist/src/repo/coordinator-repo.js.map +1 -1
- package/dist/src/repo/served-repo-proxy.d.ts +30 -0
- package/dist/src/repo/served-repo-proxy.d.ts.map +1 -0
- package/dist/src/repo/served-repo-proxy.js +50 -0
- package/dist/src/repo/served-repo-proxy.js.map +1 -0
- package/dist/src/repo/service.d.ts +16 -1
- package/dist/src/repo/service.d.ts.map +1 -1
- package/dist/src/repo/service.js +18 -16
- package/dist/src/repo/service.js.map +1 -1
- package/dist/src/reputation/types.d.ts +3 -1
- package/dist/src/reputation/types.d.ts.map +1 -1
- package/dist/src/reputation/types.js +3 -1
- package/dist/src/reputation/types.js.map +1 -1
- package/dist/src/rn.d.ts +24 -2
- package/dist/src/rn.d.ts.map +1 -1
- package/dist/src/rn.js +33 -4
- package/dist/src/rn.js.map +1 -1
- package/dist/src/storage/block-archive.d.ts +153 -0
- package/dist/src/storage/block-archive.d.ts.map +1 -0
- package/dist/src/storage/block-archive.js +194 -0
- package/dist/src/storage/block-archive.js.map +1 -0
- package/dist/src/storage/block-latch.d.ts +92 -0
- package/dist/src/storage/block-latch.d.ts.map +1 -0
- package/dist/src/storage/block-latch.js +132 -0
- package/dist/src/storage/block-latch.js.map +1 -0
- package/dist/src/storage/block-storage.d.ts +169 -12
- package/dist/src/storage/block-storage.d.ts.map +1 -1
- package/dist/src/storage/block-storage.js +415 -152
- package/dist/src/storage/block-storage.js.map +1 -1
- package/dist/src/storage/cached-raw-storage.d.ts +5 -1
- package/dist/src/storage/cached-raw-storage.d.ts.map +1 -1
- package/dist/src/storage/cached-raw-storage.js +16 -1
- package/dist/src/storage/cached-raw-storage.js.map +1 -1
- package/dist/src/storage/cached-store-driver.d.ts +14 -4
- package/dist/src/storage/cached-store-driver.d.ts.map +1 -1
- package/dist/src/storage/cached-store-driver.js +39 -5
- package/dist/src/storage/cached-store-driver.js.map +1 -1
- package/dist/src/storage/i-block-storage.d.ts +70 -19
- package/dist/src/storage/i-block-storage.d.ts.map +1 -1
- package/dist/src/storage/i-block-storage.js +21 -1
- package/dist/src/storage/i-block-storage.js.map +1 -1
- package/dist/src/storage/i-raw-storage.d.ts +38 -0
- package/dist/src/storage/i-raw-storage.d.ts.map +1 -1
- package/dist/src/storage/kv-raw-storage.d.ts +14 -8
- package/dist/src/storage/kv-raw-storage.d.ts.map +1 -1
- package/dist/src/storage/kv-raw-storage.js +29 -9
- package/dist/src/storage/kv-raw-storage.js.map +1 -1
- package/dist/src/storage/memory-store-driver.d.ts +4 -1
- package/dist/src/storage/memory-store-driver.d.ts.map +1 -1
- package/dist/src/storage/memory-store-driver.js +22 -2
- package/dist/src/storage/memory-store-driver.js.map +1 -1
- package/dist/src/storage/raw-store-codec.js +2 -2
- package/dist/src/storage/raw-store-driver.d.ts +44 -3
- package/dist/src/storage/raw-store-driver.d.ts.map +1 -1
- package/dist/src/storage/shared-cache-pool.d.ts +60 -3
- package/dist/src/storage/shared-cache-pool.d.ts.map +1 -1
- package/dist/src/storage/shared-cache-pool.js +68 -4
- package/dist/src/storage/shared-cache-pool.js.map +1 -1
- package/dist/src/storage/storage-repo.d.ts +204 -26
- package/dist/src/storage/storage-repo.d.ts.map +1 -1
- package/dist/src/storage/storage-repo.js +422 -119
- package/dist/src/storage/storage-repo.js.map +1 -1
- package/dist/src/storage/store-identity.d.ts +21 -0
- package/dist/src/storage/store-identity.d.ts.map +1 -0
- package/dist/src/storage/store-identity.js +33 -0
- package/dist/src/storage/store-identity.js.map +1 -0
- package/dist/src/storage/struct.d.ts +15 -0
- package/dist/src/storage/struct.d.ts.map +1 -1
- package/dist/src/storage/with-read-cache.d.ts +92 -0
- package/dist/src/storage/with-read-cache.d.ts.map +1 -0
- package/dist/src/storage/with-read-cache.js +132 -0
- package/dist/src/storage/with-read-cache.js.map +1 -0
- package/dist/src/sync/service.d.ts +13 -3
- package/dist/src/sync/service.d.ts.map +1 -1
- package/dist/src/sync/service.js +7 -30
- package/dist/src/sync/service.js.map +1 -1
- package/dist/src/testing/mesh-harness.d.ts +75 -2
- package/dist/src/testing/mesh-harness.d.ts.map +1 -1
- package/dist/src/testing/mesh-harness.js +193 -81
- package/dist/src/testing/mesh-harness.js.map +1 -1
- package/dist/src/testing/raw-storage-conformance.d.ts +8 -0
- package/dist/src/testing/raw-storage-conformance.d.ts.map +1 -1
- package/dist/src/testing/raw-storage-conformance.js +97 -2
- package/dist/src/testing/raw-storage-conformance.js.map +1 -1
- package/package.json +5 -6
- package/src/cluster/block-transfer-service.ts +528 -312
- package/src/cluster/block-transfer.ts +547 -424
- package/src/cluster/certified-claims.ts +319 -0
- package/src/cluster/client-signature-verifier.ts +34 -0
- package/src/cluster/cluster-policy.ts +294 -203
- package/src/cluster/cluster-repo.ts +2501 -2034
- package/src/cluster/commit-proof.ts +344 -0
- package/src/cluster/quorum-restore.ts +348 -223
- package/src/cluster/rebalance-monitor.ts +539 -254
- package/src/cluster/reconcile-block.ts +404 -203
- package/src/cluster/service.ts +23 -20
- package/src/cluster/spread-on-churn.ts +352 -346
- package/src/cohort-topic/host.ts +8 -7
- package/src/cohort-topic/stream-util.ts +14 -43
- package/src/dispute/cascade.ts +31 -15
- package/src/dispute/dispute-service.ts +706 -696
- package/src/dispute/invalidation.ts +162 -52
- package/src/dispute/service.ts +126 -125
- package/src/index.ts +7 -0
- package/src/libp2p-key-network.ts +1204 -1235
- package/src/libp2p-node-base.ts +185 -70
- package/src/network/open-protocol-stream.ts +87 -0
- package/src/network/register-protocol-handler.ts +85 -0
- package/src/peer-address-book.ts +96 -2
- package/src/pend-validation.ts +89 -0
- package/src/reactivity/notify-transport.ts +2 -1
- package/src/reactivity/push-state-gossip.ts +2 -1
- package/src/repo/cluster-coordinator.ts +65 -11
- package/src/repo/coordinator-repo.ts +729 -71
- package/src/repo/served-repo-proxy.ts +55 -0
- package/src/repo/service.ts +25 -16
- package/src/reputation/types.ts +3 -1
- package/src/rn.ts +34 -4
- package/src/storage/block-archive.ts +242 -0
- package/src/storage/block-latch.ts +144 -0
- package/src/storage/block-storage.ts +787 -498
- package/src/storage/cached-raw-storage.ts +21 -1
- package/src/storage/cached-store-driver.ts +898 -859
- package/src/storage/i-block-storage.ts +172 -116
- package/src/storage/i-raw-storage.ts +40 -0
- package/src/storage/kv-raw-storage.ts +34 -9
- package/src/storage/memory-store-driver.ts +26 -2
- package/src/storage/raw-store-codec.ts +42 -42
- package/src/storage/raw-store-driver.ts +45 -3
- package/src/storage/shared-cache-pool.ts +516 -452
- package/src/storage/storage-repo.ts +1421 -1014
- package/src/storage/store-identity.ts +41 -0
- package/src/storage/struct.ts +52 -34
- package/src/storage/with-read-cache.ts +182 -0
- package/src/sync/service.ts +178 -198
- package/src/testing/mesh-harness.ts +524 -344
- package/src/testing/raw-storage-conformance.ts +114 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../../src/dispute/cascade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EACpC,sBAAsB,EAAE,aAAa,EAAE,cAAc,EACrD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAA8D,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOvH,MAAM,MAAM,aAAa,GAAG;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,0EAA0E;IAC1E,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,aAGpC,CAAC;AAIF;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../../src/dispute/cascade.ts"],"names":[],"mappings":"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"}
|
|
@@ -119,6 +119,18 @@ export async function cascadeInvalidate(input) {
|
|
|
119
119
|
const children = [];
|
|
120
120
|
const affectedCollections = new Set(input.seed.map(s => s.collectionId));
|
|
121
121
|
const unevaluable = [];
|
|
122
|
+
/**
|
|
123
|
+
* Park a candidate whose fate the cascade could not decide, at most once. Both callers below mean
|
|
124
|
+
* the same thing — this dependent is neither retained nor reverted, so it must not leave the
|
|
125
|
+
* frontier as if it were fine — and both must mark its collection affected, or the `unevaluable`
|
|
126
|
+
* escalation would not name the collection that needs the re-sync.
|
|
127
|
+
*/
|
|
128
|
+
const markUnevaluable = (cand) => {
|
|
129
|
+
if (!unevaluable.some(u => u.collectionId === cand.collectionId && u.actionId === cand.actionId)) {
|
|
130
|
+
unevaluable.push(standing(cand));
|
|
131
|
+
}
|
|
132
|
+
affectedCollections.add(cand.collectionId);
|
|
133
|
+
};
|
|
122
134
|
let retained = [];
|
|
123
135
|
let rounds = 0;
|
|
124
136
|
let escalation;
|
|
@@ -158,10 +170,7 @@ export async function cascadeInvalidate(input) {
|
|
|
158
170
|
continue;
|
|
159
171
|
}
|
|
160
172
|
if (verdict === 'unevaluable') {
|
|
161
|
-
|
|
162
|
-
unevaluable.push(standing(cand));
|
|
163
|
-
}
|
|
164
|
-
affectedCollections.add(cand.collectionId);
|
|
173
|
+
markUnevaluable(cand);
|
|
165
174
|
continue;
|
|
166
175
|
}
|
|
167
176
|
// invalidate — but never START a new transaction past the horizon. An already-counted
|
|
@@ -174,7 +183,7 @@ export async function cascadeInvalidate(input) {
|
|
|
174
183
|
continue;
|
|
175
184
|
}
|
|
176
185
|
const env = cand.env;
|
|
177
|
-
const result = await applyInvalidation({ log: env.log, createBlockStorage: env.createBlockStorage
|
|
186
|
+
const result = await applyInvalidation({ log: env.log, createBlockStorage: env.createBlockStorage }, {
|
|
178
187
|
invalidatedActionId: cand.actionId,
|
|
179
188
|
invalidatedRev: cand.rev,
|
|
180
189
|
blockIds: cand.blockIds,
|
|
@@ -187,9 +196,17 @@ export async function cascadeInvalidate(input) {
|
|
|
187
196
|
// exists (prior cascade run / restart). Treat it as invalidated and reuse its reverted blocks
|
|
188
197
|
// so the frontier still grows and the cascade reconverges without a second entry.
|
|
189
198
|
if (!result.applied && result.reason !== 'already-applied') {
|
|
190
|
-
//
|
|
191
|
-
//
|
|
199
|
+
// The child was decided-to-invalidate but the reversal did not happen, so we do NOT know
|
|
200
|
+
// whether this dependent still holds — it must not be dropped from the frontier as if it
|
|
201
|
+
// were fine. Deliberately keyed on "not applied", not on a specific reason, so a reason
|
|
202
|
+
// added later cannot re-open the silent-drop hole:
|
|
203
|
+
// - `stale-revision` — the compensating write was refused wholesale (nothing written,
|
|
204
|
+
// nothing appended). The reachable case.
|
|
205
|
+
// - `invalid-certificate` — should be impossible here (the child verifies the ROOT proof
|
|
206
|
+
// against the root's target, and that proof is a valid challenger-wins cert), but if it
|
|
207
|
+
// ever fires, an undecided dependent is the honest report.
|
|
192
208
|
log('child-apply-rejected actionId=%s reason=%s', cand.actionId, result.reason);
|
|
209
|
+
markUnevaluable(cand);
|
|
193
210
|
continue;
|
|
194
211
|
}
|
|
195
212
|
processedEntries.add(entryKey(cand.collectionId, cand.actionId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../../src/dispute/cascade.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAA0B,MAAM,mBAAmB,CAAC;AACvH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAepC,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACpD,eAAe,EAAE,EAAE;IACnB,sBAAsB,EAAE,IAAI;CAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../../src/dispute/cascade.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,11 @@ export declare class DisputeService {
|
|
|
110
110
|
* Derives the invalidation target — the committed action, its revision, the blocks it wrote, and
|
|
111
111
|
* its owning collection — from the disputed record. Prefers the commit operation (the disputed
|
|
112
112
|
* transaction is committed); falls back to the pend operation defensively.
|
|
113
|
+
*
|
|
114
|
+
* The `collectionId` fallbacks read the hash-covered `record.message.coordinatingBlockIds`. On the
|
|
115
|
+
* commit arm that field is now always present (the coordinator derives it from `commit.blockIds[0]`,
|
|
116
|
+
* the very key it selected the cohort by), so the middle fallback resolves to the same id the final
|
|
117
|
+
* `commit.blockIds[0]` fallback used to produce — the branch taken changed, the id did not.
|
|
113
118
|
*/
|
|
114
119
|
private static extractInvalidationTarget;
|
|
115
120
|
/** Broadcast resolution to all interested parties */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispute-service.d.ts","sourceRoot":"","sources":["../../../src/dispute/dispute-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,qBAAqB,EAAE,iBAAiB,EAA4C,MAAM,qBAAqB,CAAC;AAGxJ,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM5D,OAAO,KAAK,EACX,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,0DAA0D;AAC1D,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC;AAEpE,2EAA2E;AAC3E,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;AAEvG,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,YAAY,CAAC;IAC1B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC;;;;;;OAMG;IACH,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnI;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtE;AAED;;;;;;GAMG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0C;IAC5E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAuC;IAEvE,6CAA6C;IAC7C,OAAO,CAAC,cAAc,CAA4C;IAClE,kDAAkD;IAClD,OAAO,CAAC,gBAAgB,CAA6C;IACrE,8DAA8D;IAC9D,OAAO,CAAC,kBAAkB,CAA4C;IACtE,qEAAqE;IACrE,OAAO,CAAC,oBAAoB,CAA0B;IACtD,wGAAwG;IACxG,OAAO,CAAC,uBAAuB,CAA0B;gBAE7C,IAAI,EAAE,kBAAkB;IAYpC,oCAAoC;IACpC,eAAe,IAAI,mBAAmB;IAItC,oCAAoC;IACpC,SAAS,IAAI,OAAO;IAIpB,uDAAuD;IACvD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAmBhE;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"dispute-service.d.ts","sourceRoot":"","sources":["../../../src/dispute/dispute-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,7 +106,12 @@ export class DisputeService {
|
|
|
106
106
|
const expiration = timestamp + Math.max(defaultTtl, this.config.disputeArbitrationTimeoutMs);
|
|
107
107
|
// Select the arbitrator set FIRST so the challenge can carry it: each arbitrator folds the set's
|
|
108
108
|
// digest into the v3 vote it signs, binding every vote to the legitimately-selected set (#1).
|
|
109
|
-
|
|
109
|
+
// Read off the hash-covered `record.message`; there is no top-level copy (see `ClusterRecord`).
|
|
110
|
+
// Every coordinator-built record now carries this field — `ClusterCoordinator` derives it from the
|
|
111
|
+
// cohort key — so the `record.messageHash` fallback below is reached only by a record built outside
|
|
112
|
+
// that path. Disputes over a commit/cancel therefore draw arbitrators by the same block key that
|
|
113
|
+
// selected the cohort, rather than by an opaque message hash, which is the intended draw.
|
|
114
|
+
const blockIds = record.message.coordinatingBlockIds ?? [];
|
|
110
115
|
const blockId = blockIds[0] ?? record.messageHash;
|
|
111
116
|
const originalPeers = Object.keys(record.peers);
|
|
112
117
|
const arbitratorCount = this.config.arbitratorCount ?? originalPeers.length;
|
|
@@ -415,6 +420,11 @@ export class DisputeService {
|
|
|
415
420
|
* Derives the invalidation target — the committed action, its revision, the blocks it wrote, and
|
|
416
421
|
* its owning collection — from the disputed record. Prefers the commit operation (the disputed
|
|
417
422
|
* transaction is committed); falls back to the pend operation defensively.
|
|
423
|
+
*
|
|
424
|
+
* The `collectionId` fallbacks read the hash-covered `record.message.coordinatingBlockIds`. On the
|
|
425
|
+
* commit arm that field is now always present (the coordinator derives it from `commit.blockIds[0]`,
|
|
426
|
+
* the very key it selected the cohort by), so the middle fallback resolves to the same id the final
|
|
427
|
+
* `commit.blockIds[0]` fallback used to produce — the branch taken changed, the id did not.
|
|
418
428
|
*/
|
|
419
429
|
static extractInvalidationTarget(record) {
|
|
420
430
|
for (const operation of record.message.operations) {
|
|
@@ -424,7 +434,7 @@ export class DisputeService {
|
|
|
424
434
|
actionId: commit.actionId,
|
|
425
435
|
rev: commit.rev,
|
|
426
436
|
blockIds: commit.blockIds,
|
|
427
|
-
collectionId: commit.headerId ?? record.coordinatingBlockIds?.[0] ?? commit.blockIds[0],
|
|
437
|
+
collectionId: commit.headerId ?? record.message.coordinatingBlockIds?.[0] ?? commit.blockIds[0],
|
|
428
438
|
};
|
|
429
439
|
}
|
|
430
440
|
}
|
|
@@ -436,7 +446,7 @@ export class DisputeService {
|
|
|
436
446
|
actionId: pend.actionId,
|
|
437
447
|
rev: pend.rev ?? 0,
|
|
438
448
|
blockIds,
|
|
439
|
-
collectionId: record.coordinatingBlockIds?.[0] ?? blockIds[0],
|
|
449
|
+
collectionId: record.message.coordinatingBlockIds?.[0] ?? blockIds[0],
|
|
440
450
|
};
|
|
441
451
|
}
|
|
442
452
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispute-service.js","sourceRoot":"","sources":["../../../src/dispute/dispute-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dispute-service.js","sourceRoot":"","sources":["../../../src/dispute/dispute-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -223,16 +223,6 @@ export type InvalidationContext = {
|
|
|
223
223
|
readonly log: Log<unknown>;
|
|
224
224
|
/** Resolves a block's storage so the compensating revision can be written. */
|
|
225
225
|
readonly createBlockStorage: (blockId: BlockId) => IBlockStorage;
|
|
226
|
-
/**
|
|
227
|
-
* Runs `fn` while holding the same per-block commit latch `StorageRepo.commit` and
|
|
228
|
-
* `saveReplicatedBlock` hold, so the compensating `saveReplica`/`saveDeletion` read-modify-write of
|
|
229
|
-
* `meta.latest` is mutually exclusive with a concurrent local commit on that block. Without it, an
|
|
230
|
-
* invalidation advancing `latest` outside that latch is invisible to commit's staleness guard, so a
|
|
231
|
-
* commit that read a stale `latest` can clobber it back down — a lost-update / non-monotonic
|
|
232
|
-
* regression. Optional: when omitted (unit tests / non-`StorageRepo` hosts) the write runs unlatched,
|
|
233
|
-
* preserving today's behavior. The host supplies `StorageRepo`'s `withBlockCommitLatch`.
|
|
234
|
-
*/
|
|
235
|
-
readonly withBlockCommitLatch?: <T>(blockId: BlockId, fn: () => Promise<T>) => Promise<T>;
|
|
236
226
|
};
|
|
237
227
|
export type ApplyInvalidationParams = {
|
|
238
228
|
readonly invalidatedActionId: ActionId;
|
|
@@ -243,8 +233,19 @@ export type ApplyInvalidationParams = {
|
|
|
243
233
|
readonly proof: DisputeResolutionProof;
|
|
244
234
|
/**
|
|
245
235
|
* Consensus-assigned revision slot for the compensating revision (collection-global). When
|
|
246
|
-
* omitted, computed as one past the highest current tip across the reverted blocks —
|
|
247
|
-
*
|
|
236
|
+
* omitted, computed as one past the highest current tip across the reverted blocks — read under
|
|
237
|
+
* the blocks' write latches, so an omitted slot is strictly past every tip and its compensating
|
|
238
|
+
* writes can never be refused by the monotonic guard.
|
|
239
|
+
*
|
|
240
|
+
* An explicit slot at or below any affected block's tip is refused wholesale (`applied: false`,
|
|
241
|
+
* reason `stale-revision`) rather than partially written.
|
|
242
|
+
*
|
|
243
|
+
* NOTE: nothing on the wire supplies this today. `InvalidateRequest`
|
|
244
|
+
* (`db-core/src/network/struct.ts`) carries `invalidatedActionId` / `invalidatedRev` / `blockIds` /
|
|
245
|
+
* `collectionId` / `resolution` and NO compensating-revision field, so the network-facing apply
|
|
246
|
+
* path leaves this undefined and every member computes its own slot locally. The `stale-revision`
|
|
247
|
+
* path is therefore reachable only from tests and from a future caller that does pass an agreed
|
|
248
|
+
* slot; adding that wire field is out of scope here.
|
|
248
249
|
*/
|
|
249
250
|
readonly rev?: number;
|
|
250
251
|
/**
|
|
@@ -269,7 +270,18 @@ export type ApplyInvalidationParams = {
|
|
|
269
270
|
};
|
|
270
271
|
export type ApplyInvalidationResult = {
|
|
271
272
|
readonly applied: boolean;
|
|
272
|
-
|
|
273
|
+
/**
|
|
274
|
+
* - `already-applied` — a re-receipt; the log already holds this `(invalidatedActionId, disputeId)`.
|
|
275
|
+
* `reverted` carries the EXISTING entry's blocks, so a caller can reuse them.
|
|
276
|
+
* - `invalid-certificate` — the proof is not a valid challenger-wins certificate for the target.
|
|
277
|
+
* - `stale-revision` — at least one affected block already sits at or past the compensating
|
|
278
|
+
* revision slot, so the compensating write would be refused by the monotonic guard. Nothing was
|
|
279
|
+
* written and nothing was appended (all-or-nothing); the invalidation is safely re-deliverable
|
|
280
|
+
* once the caller supplies a slot past every affected block's tip. Reachable only when the
|
|
281
|
+
* caller supplies an explicit {@link ApplyInvalidationParams.rev} — a slot this function
|
|
282
|
+
* computes itself is strictly past every tip by construction.
|
|
283
|
+
*/
|
|
284
|
+
readonly reason?: 'already-applied' | 'invalid-certificate' | 'stale-revision';
|
|
273
285
|
readonly rev?: number;
|
|
274
286
|
readonly reverted: ReadonlyArray<RevertedBlock>;
|
|
275
287
|
};
|
|
@@ -282,10 +294,16 @@ export type ApplyInvalidationResult = {
|
|
|
282
294
|
* 1. **Dedup** — if the log already holds an invalidation for `(invalidatedActionId, disputeId)`,
|
|
283
295
|
* this is a re-receipt (rebroadcast / sync / retry): no-op, append nothing.
|
|
284
296
|
* 2. **Certificate** — reject (append nothing) unless `proof` is a valid challenger-wins certificate.
|
|
285
|
-
* 3. **Reverted revisions** —
|
|
286
|
-
* new monotonic revision (a forward compensating
|
|
297
|
+
* 3. **Reverted revisions** — holding EVERY affected block's write latch, recompute each block's
|
|
298
|
+
* as-if-`T_inv`-absent content and write a new monotonic revision (a forward compensating
|
|
299
|
+
* transform; prior revisions are retained). All-or-nothing: if any block already sits at or past
|
|
300
|
+
* the compensating slot, nothing is written and nothing is appended.
|
|
287
301
|
* 4. **Log entry** — append the {@link InvalidationEntry} carrying the proof and `reverted` targets,
|
|
288
302
|
* making `committed-invalidated` durable and recoverable on sync.
|
|
303
|
+
*
|
|
304
|
+
* The `reverted` entries an applied result carries therefore describe writes that ACTUALLY landed,
|
|
305
|
+
* at the revision and with the content hash they name — the property `cascade.ts` relies on when it
|
|
306
|
+
* decides a read-dependent's fate by comparing observed content against `restoredContentHash`.
|
|
289
307
|
*/
|
|
290
308
|
export declare function applyInvalidation(ctx: InvalidationContext, params: ApplyInvalidationParams): Promise<ApplyInvalidationResult>;
|
|
291
309
|
//# sourceMappingURL=invalidation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidation.d.ts","sourceRoot":"","sources":["../../../src/dispute/invalidation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,
|
|
1
|
+
{"version":3,"file":"invalidation.d.ts","sourceRoot":"","sources":["../../../src/dispute/invalidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
2
2
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
3
3
|
import { applyTransform, hashString } from '@optimystic/db-core';
|
|
4
|
+
import { acquireBlockWriteLatches } from '../storage/block-latch.js';
|
|
4
5
|
import { createLogger } from '../logger.js';
|
|
5
6
|
const log = createLogger('invalidation');
|
|
6
7
|
/**
|
|
@@ -334,6 +335,21 @@ export async function computeRevertedBlock(blockStorage, invalidatedRev) {
|
|
|
334
335
|
export async function hashBlockContent(block) {
|
|
335
336
|
return await hashString(stableStringify(block));
|
|
336
337
|
}
|
|
338
|
+
/**
|
|
339
|
+
* Boundary invariant for the compensating write: the effective `ActionRev` a forward write returns
|
|
340
|
+
* must be the one we intended. The precheck above already establishes that, so a mismatch means a
|
|
341
|
+
* write path refused for a reason the precheck does not model — an internal contradiction (a write
|
|
342
|
+
* refused while its latch was held and its tip was checked), not a condition to degrade around. It
|
|
343
|
+
* throws rather than returning `applied: false`: `ClusterRepo.applyConsensusInvalidation` tolerates a
|
|
344
|
+
* sink throw, logs it, and rolls back its dedup marker so a re-broadcast retries.
|
|
345
|
+
*/
|
|
346
|
+
function assertWriteLanded(blockId, intended, effective) {
|
|
347
|
+
if (effective.rev !== intended.rev || effective.actionId !== intended.actionId) {
|
|
348
|
+
throw new Error(`Invalidation compensating write did not land for block ${blockId}: intended ` +
|
|
349
|
+
`{ rev: ${intended.rev}, actionId: ${intended.actionId} }, effective ` +
|
|
350
|
+
`{ rev: ${effective.rev}, actionId: ${effective.actionId} }`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
337
353
|
/**
|
|
338
354
|
* Deterministically applies a single-collection invalidation: the durable reversal primitive every
|
|
339
355
|
* cluster member runs identically (it carries the `reverted` targets and proof, exactly as the
|
|
@@ -343,14 +359,28 @@ export async function hashBlockContent(block) {
|
|
|
343
359
|
* 1. **Dedup** — if the log already holds an invalidation for `(invalidatedActionId, disputeId)`,
|
|
344
360
|
* this is a re-receipt (rebroadcast / sync / retry): no-op, append nothing.
|
|
345
361
|
* 2. **Certificate** — reject (append nothing) unless `proof` is a valid challenger-wins certificate.
|
|
346
|
-
* 3. **Reverted revisions** —
|
|
347
|
-
* new monotonic revision (a forward compensating
|
|
362
|
+
* 3. **Reverted revisions** — holding EVERY affected block's write latch, recompute each block's
|
|
363
|
+
* as-if-`T_inv`-absent content and write a new monotonic revision (a forward compensating
|
|
364
|
+
* transform; prior revisions are retained). All-or-nothing: if any block already sits at or past
|
|
365
|
+
* the compensating slot, nothing is written and nothing is appended.
|
|
348
366
|
* 4. **Log entry** — append the {@link InvalidationEntry} carrying the proof and `reverted` targets,
|
|
349
367
|
* making `committed-invalidated` durable and recoverable on sync.
|
|
368
|
+
*
|
|
369
|
+
* The `reverted` entries an applied result carries therefore describe writes that ACTUALLY landed,
|
|
370
|
+
* at the revision and with the content hash they name — the property `cascade.ts` relies on when it
|
|
371
|
+
* decides a read-dependent's fate by comparing observed content against `restoredContentHash`.
|
|
350
372
|
*/
|
|
351
373
|
export async function applyInvalidation(ctx, params) {
|
|
352
374
|
const { invalidatedActionId, invalidatedRev, blockIds, proof } = params;
|
|
353
375
|
// 1. Idempotent re-receipt — keyed on (invalidatedActionId, disputeId).
|
|
376
|
+
// NOTE: this read is outside the block latches taken in step 3, so two OVERLAPPING applies of the
|
|
377
|
+
// same invalidation would both pass here and both write a compensating revision (the second at a
|
|
378
|
+
// slot one past the first), appending two entries for one invalidation. Not reachable today: the
|
|
379
|
+
// network path serializes through consensus and dedups in memory first
|
|
380
|
+
// (`ClusterRepo.applyConsensusInvalidation`), and the cascade applies its children sequentially.
|
|
381
|
+
// If a caller ever applies the same invalidation concurrently, this dedup has to move inside the
|
|
382
|
+
// critical section — which means keying it on something the block latches actually cover, since
|
|
383
|
+
// `ctx.log` is not latched by them.
|
|
354
384
|
const existing = await ctx.log.findInvalidation(invalidatedActionId);
|
|
355
385
|
if (existing && existing.resolution.disputeId === proof.disputeId) {
|
|
356
386
|
log('apply-skip-duplicate actionId=%s disputeId=%s', invalidatedActionId, proof.disputeId);
|
|
@@ -367,43 +397,106 @@ export async function applyInvalidation(ctx, params) {
|
|
|
367
397
|
log('apply-reject-certificate actionId=%s disputeId=%s outcome=%s', invalidatedActionId, proof.disputeId, proof.outcome);
|
|
368
398
|
return { applied: false, reason: 'invalid-certificate', reverted: [] };
|
|
369
399
|
}
|
|
370
|
-
// 3.
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
400
|
+
// 3. Compensating revisions — ONE critical section spanning every affected block.
|
|
401
|
+
//
|
|
402
|
+
// Latch discipline: hold ALL affected blocks' write latches across compute → revision slot →
|
|
403
|
+
// precheck → writes. `acquireBlockWriteLatches` is the package's single multi-latch entry point
|
|
404
|
+
// (it dedups and acquires in the one global sorted order), so this cannot deadlock against the
|
|
405
|
+
// other multi-latch holder, `StorageRepo.commit`. (The previous code took each block's latch
|
|
406
|
+
// around only its own write, which left the tips it computed from — and the revision slot derived
|
|
407
|
+
// from them — read outside any latch: a concurrent commit could land a newer revision in the gap,
|
|
408
|
+
// the monotonic guard in saveReplica/saveDeletion would correctly refuse the compensating write,
|
|
409
|
+
// and the log entry appended in step 4 would then assert a restore that never happened.)
|
|
410
|
+
//
|
|
411
|
+
// Collapsing duplicate ids is why `uniqueBlockIds` drives the writes and `reverted` too: one
|
|
412
|
+
// latched block yields one compensating write and one entry. The certificate target above
|
|
413
|
+
// deliberately still uses the caller's `blockIds` verbatim — the arbitrators signed over that list.
|
|
414
|
+
const uniqueBlockIds = Array.from(new Set(blockIds));
|
|
415
|
+
const { latches, release } = await acquireBlockWriteLatches(uniqueBlockIds);
|
|
416
|
+
let reverted;
|
|
417
|
+
let rev;
|
|
418
|
+
try {
|
|
419
|
+
// --- Start of critical section ---
|
|
420
|
+
// Compute compensating content from tips read UNDER the latches. `computeRevertedBlock` reads
|
|
421
|
+
// only through getLatest/listRevisions/getBlock/getTransaction — none of which acquire a latch
|
|
422
|
+
// or touch the network (`BlockStorage.getBlock` throws `RevisionNotCoveredError` rather than
|
|
423
|
+
// restoring; the healing re-read lives one layer up in `StorageRepo.get`), so it is safe to
|
|
424
|
+
// call while holding them. Keep it that way: routing it through the healing path, which
|
|
425
|
+
// restores under the block latch, would self-deadlock here.
|
|
426
|
+
//
|
|
427
|
+
// NOTE: this compute now runs inside the critical section, so every commit and pend on these
|
|
428
|
+
// blocks queues behind it, and its cost grows with the number of revisions between T_inv and
|
|
429
|
+
// the tip (`listRevisions` + a transform apply each). Fine at invalidation's rate — a reversal
|
|
430
|
+
// is rare and its blocks are few. If invalidations ever become frequent, or reversals of very
|
|
431
|
+
// old transactions show up delaying commits, compute optimistically outside the latches and
|
|
432
|
+
// re-verify the tips inside (recomputing only the blocks that moved).
|
|
433
|
+
const computations = await Promise.all(uniqueBlockIds.map(async (blockId) => {
|
|
434
|
+
const storage = ctx.createBlockStorage(blockId);
|
|
435
|
+
return {
|
|
436
|
+
blockId,
|
|
437
|
+
storage,
|
|
438
|
+
latch: latches.get(blockId),
|
|
439
|
+
latest: await storage.getLatest(),
|
|
440
|
+
computation: await computeRevertedBlock(storage, invalidatedRev),
|
|
441
|
+
};
|
|
442
|
+
}));
|
|
443
|
+
const maxFromRev = computations.reduce((max, c) => Math.max(max, c.computation.fromRev), invalidatedRev);
|
|
444
|
+
rev = params.rev ?? maxFromRev + 1;
|
|
445
|
+
// All-or-nothing precheck, mirroring the monotonic guard in `BlockStorage.saveForwardRevision`
|
|
446
|
+
// (`meta.latest.rev >= rev` ⇒ refuse). With the tips read under these same latches, a computed
|
|
447
|
+
// slot is strictly greater than every tip by construction, so this can only trip when the CALLER
|
|
448
|
+
// supplied an explicit `rev` at or below a current tip. Writing nothing is the right outcome:
|
|
449
|
+
// skipping the block or retrying at a higher slot would make one member's durable entry differ
|
|
450
|
+
// from another's for the same invalidation, and step 1 dedups on (invalidatedActionId, disputeId)
|
|
451
|
+
// so an invalidation that appended nothing is simply re-deliverable.
|
|
452
|
+
const stale = computations.find(c => c.latest !== undefined && c.latest.rev >= rev);
|
|
453
|
+
if (stale) {
|
|
454
|
+
log('apply-reject-stale-revision actionId=%s disputeId=%s rev=%d blockId=%s held=%d', invalidatedActionId, proof.disputeId, rev, stale.blockId, stale.latest.rev);
|
|
455
|
+
return { applied: false, reason: 'stale-revision', reverted: [] };
|
|
397
456
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
457
|
+
reverted = [];
|
|
458
|
+
for (const { blockId, storage, latch, computation } of computations) {
|
|
459
|
+
// Deterministic compensating-revision actionId — identical on every member, so all converge on
|
|
460
|
+
// the same (rev, actionId) for both the restore and the tombstone path.
|
|
461
|
+
const revertActionId = await hashString(`inv:${invalidatedActionId}:${proof.disputeId}:${blockId}:${rev}`);
|
|
462
|
+
const intended = { rev, actionId: revertActionId };
|
|
463
|
+
let effective;
|
|
464
|
+
if (computation.kind === 'delete') {
|
|
465
|
+
// Block-creation reversal: physically remove the created block by writing a forward tombstone
|
|
466
|
+
// revision. The `restoredContentHash` is the DELETED_BLOCK_RESTORE sentinel — a deleted block
|
|
467
|
+
// has no content hash, and the sentinel tells dependents "observed content is gone → invalidate".
|
|
468
|
+
effective = await storage.saveDeletion(intended, latch);
|
|
469
|
+
assertWriteLanded(blockId, intended, effective);
|
|
470
|
+
log('apply-delete-restore blockId=%s invalidatedRev=%d rev=%d', blockId, invalidatedRev, rev);
|
|
471
|
+
reverted.push({ blockId, fromRev: computation.fromRev, restoredContentHash: DELETED_BLOCK_RESTORE });
|
|
472
|
+
continue;
|
|
473
|
+
}
|
|
474
|
+
if (computation.laterActions > 0) {
|
|
475
|
+
// Surviving later actions were replayed verbatim; true read-dependents are out of scope here.
|
|
476
|
+
log('apply-replayed-later-actions blockId=%s count=%d', blockId, computation.laterActions);
|
|
477
|
+
}
|
|
478
|
+
effective = await storage.saveReplica(computation.block, intended, undefined, latch);
|
|
479
|
+
assertWriteLanded(blockId, intended, effective);
|
|
480
|
+
reverted.push({ blockId, fromRev: computation.fromRev, restoredContentHash: computation.restoredContentHash });
|
|
401
481
|
}
|
|
402
|
-
|
|
403
|
-
|
|
482
|
+
// --- End of critical section ---
|
|
483
|
+
}
|
|
484
|
+
finally {
|
|
485
|
+
// Every acquired latch is released even if a compute or a write threw.
|
|
486
|
+
release();
|
|
404
487
|
}
|
|
405
488
|
// 4. Durable, append-only invalidation entry (the source of truth for committed-invalidated).
|
|
489
|
+
// Appended OUTSIDE the block latches on purpose: `ctx.log` writes through a `BlockStore` that may
|
|
490
|
+
// itself be repo-backed, and `Latches` has no re-entrancy — appending under a block latch could
|
|
491
|
+
// self-deadlock.
|
|
406
492
|
// `cascadeRoot` is set when this is a cascade step (a reverted read-dependent), undefined for a root.
|
|
493
|
+
//
|
|
494
|
+
// NOTE: the gap between the writes landing and this append is a crash window — a crash inside it
|
|
495
|
+
// leaves compensating revisions with no entry naming them. Deliberate, and the recoverable
|
|
496
|
+
// direction of the invariant this function establishes: an entry never over-claims, it can only
|
|
497
|
+
// under-claim, and re-delivery re-applies (step 1 dedups on the entry, which is not there). The
|
|
498
|
+
// asymmetry only stops being acceptable if a consumer starts treating "revision present, entry
|
|
499
|
+
// absent" as authoritative rather than as a state to re-sync.
|
|
407
500
|
await ctx.log.addInvalidation(invalidatedActionId, invalidatedRev, proof, reverted, rev, params.cascadeRoot, params.timestamp);
|
|
408
501
|
log('apply-complete actionId=%s disputeId=%s rev=%d blocks=%d', invalidatedActionId, proof.disputeId, rev, reverted.length);
|
|
409
502
|
return { applied: true, rev, reverted };
|