@did-btcr2/method 0.36.1 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/browser.js +1149 -126
- package/dist/browser.mjs +1149 -126
- package/dist/cjs/index.js +1244 -208
- package/dist/esm/core/aggregation/beacon-strategy.js +19 -6
- package/dist/esm/core/aggregation/beacon-strategy.js.map +1 -1
- package/dist/esm/core/aggregation/cohort.js +142 -33
- package/dist/esm/core/aggregation/cohort.js.map +1 -1
- package/dist/esm/core/aggregation/conditions.js +27 -0
- package/dist/esm/core/aggregation/conditions.js.map +1 -1
- package/dist/esm/core/aggregation/fallback-spend.js +132 -0
- package/dist/esm/core/aggregation/fallback-spend.js.map +1 -0
- package/dist/esm/core/aggregation/messages/base.js.map +1 -1
- package/dist/esm/core/aggregation/messages/bodies.js +46 -1
- package/dist/esm/core/aggregation/messages/bodies.js.map +1 -1
- package/dist/esm/core/aggregation/messages/constants.js +11 -0
- package/dist/esm/core/aggregation/messages/constants.js.map +1 -1
- package/dist/esm/core/aggregation/messages/factories.js +27 -1
- package/dist/esm/core/aggregation/messages/factories.js.map +1 -1
- package/dist/esm/core/aggregation/messages/guards.js +4 -1
- package/dist/esm/core/aggregation/messages/guards.js.map +1 -1
- package/dist/esm/core/aggregation/participant.js +210 -21
- package/dist/esm/core/aggregation/participant.js.map +1 -1
- package/dist/esm/core/aggregation/phases.js +6 -0
- package/dist/esm/core/aggregation/phases.js.map +1 -1
- package/dist/esm/core/aggregation/recovery-policy.js +156 -0
- package/dist/esm/core/aggregation/recovery-policy.js.map +1 -0
- package/dist/esm/core/aggregation/recovery-spend.js +106 -0
- package/dist/esm/core/aggregation/recovery-spend.js.map +1 -0
- package/dist/esm/core/aggregation/runner/aggregation-runner.js +12 -3
- package/dist/esm/core/aggregation/runner/aggregation-runner.js.map +1 -1
- package/dist/esm/core/aggregation/runner/participant-runner.js +74 -22
- package/dist/esm/core/aggregation/runner/participant-runner.js.map +1 -1
- package/dist/esm/core/aggregation/runner/service-runner.js +104 -11
- package/dist/esm/core/aggregation/runner/service-runner.js.map +1 -1
- package/dist/esm/core/aggregation/service.js +221 -11
- package/dist/esm/core/aggregation/service.js.map +1 -1
- package/dist/esm/core/aggregation/signing-session.js +3 -3
- package/dist/esm/core/aggregation/signing-session.js.map +1 -1
- package/dist/esm/core/aggregation/transport/http/envelope.js +3 -3
- package/dist/esm/core/aggregation/transport/http/inbox-buffer.js +1 -1
- package/dist/esm/core/aggregation/transport/http/nonce-cache.js +1 -1
- package/dist/esm/core/aggregation/transport/http/rate-limiter.js +1 -1
- package/dist/esm/core/aggregation/transport/http/request-auth.js +1 -1
- package/dist/esm/core/aggregation/transport/http/server.js +1 -1
- package/dist/esm/core/aggregation/transport/http/sse-stream.js +1 -1
- package/dist/esm/core/aggregation/transport/http/sse-writer.js +1 -1
- package/dist/esm/core/aggregation/transport/in-memory.js +1 -1
- package/dist/esm/core/aggregation/transport/nostr.js +6 -6
- package/dist/esm/core/beacon/beacon.js +116 -20
- package/dist/esm/core/beacon/beacon.js.map +1 -1
- package/dist/esm/core/beacon/cas-beacon.js +6 -6
- package/dist/esm/core/beacon/cas-beacon.js.map +1 -1
- package/dist/esm/core/beacon/fee-estimator.js +8 -0
- package/dist/esm/core/beacon/fee-estimator.js.map +1 -1
- package/dist/esm/core/beacon/singleton-beacon.js +2 -2
- package/dist/esm/core/beacon/singleton-beacon.js.map +1 -1
- package/dist/esm/core/beacon/smt-beacon.js +3 -3
- package/dist/esm/core/beacon/smt-beacon.js.map +1 -1
- package/dist/esm/core/resolver.js +8 -8
- package/dist/esm/core/resolver.js.map +1 -1
- package/dist/esm/core/updater.js +6 -6
- package/dist/esm/core/updater.js.map +1 -1
- package/dist/esm/did-btcr2.js +2 -2
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/core/aggregation/beacon-strategy.d.ts +8 -4
- package/dist/types/core/aggregation/beacon-strategy.d.ts.map +1 -1
- package/dist/types/core/aggregation/cohort.d.ts +88 -17
- package/dist/types/core/aggregation/cohort.d.ts.map +1 -1
- package/dist/types/core/aggregation/conditions.d.ts +28 -0
- package/dist/types/core/aggregation/conditions.d.ts.map +1 -1
- package/dist/types/core/aggregation/fallback-spend.d.ts +94 -0
- package/dist/types/core/aggregation/fallback-spend.d.ts.map +1 -0
- package/dist/types/core/aggregation/logger.d.ts +1 -1
- package/dist/types/core/aggregation/messages/base.d.ts +6 -0
- package/dist/types/core/aggregation/messages/base.d.ts.map +1 -1
- package/dist/types/core/aggregation/messages/bodies.d.ts +50 -2
- package/dist/types/core/aggregation/messages/bodies.d.ts.map +1 -1
- package/dist/types/core/aggregation/messages/constants.d.ts +8 -0
- package/dist/types/core/aggregation/messages/constants.d.ts.map +1 -1
- package/dist/types/core/aggregation/messages/factories.d.ts +40 -0
- package/dist/types/core/aggregation/messages/factories.d.ts.map +1 -1
- package/dist/types/core/aggregation/messages/guards.d.ts.map +1 -1
- package/dist/types/core/aggregation/participant.d.ts +41 -7
- package/dist/types/core/aggregation/participant.d.ts.map +1 -1
- package/dist/types/core/aggregation/phases.d.ts +8 -2
- package/dist/types/core/aggregation/phases.d.ts.map +1 -1
- package/dist/types/core/aggregation/recovery-policy.d.ts +132 -0
- package/dist/types/core/aggregation/recovery-policy.d.ts.map +1 -0
- package/dist/types/core/aggregation/recovery-spend.d.ts +94 -0
- package/dist/types/core/aggregation/recovery-spend.d.ts.map +1 -0
- package/dist/types/core/aggregation/runner/aggregation-runner.d.ts +19 -3
- package/dist/types/core/aggregation/runner/aggregation-runner.d.ts.map +1 -1
- package/dist/types/core/aggregation/runner/events.d.ts +28 -7
- package/dist/types/core/aggregation/runner/events.d.ts.map +1 -1
- package/dist/types/core/aggregation/runner/participant-runner.d.ts +3 -3
- package/dist/types/core/aggregation/runner/participant-runner.d.ts.map +1 -1
- package/dist/types/core/aggregation/runner/service-runner.d.ts +47 -5
- package/dist/types/core/aggregation/runner/service-runner.d.ts.map +1 -1
- package/dist/types/core/aggregation/service.d.ts +26 -2
- package/dist/types/core/aggregation/service.d.ts.map +1 -1
- package/dist/types/core/aggregation/signing-session.d.ts +2 -2
- package/dist/types/core/aggregation/signing-session.d.ts.map +1 -1
- package/dist/types/core/aggregation/transport/http/envelope.d.ts +3 -3
- package/dist/types/core/aggregation/transport/http/inbox-buffer.d.ts +1 -1
- package/dist/types/core/aggregation/transport/http/nonce-cache.d.ts +1 -1
- package/dist/types/core/aggregation/transport/http/rate-limiter.d.ts +1 -1
- package/dist/types/core/aggregation/transport/http/request-auth.d.ts +1 -1
- package/dist/types/core/aggregation/transport/http/server.d.ts +1 -1
- package/dist/types/core/aggregation/transport/http/sse-stream.d.ts +2 -2
- package/dist/types/core/aggregation/transport/http/sse-writer.d.ts +1 -1
- package/dist/types/core/aggregation/transport/in-memory.d.ts +1 -1
- package/dist/types/core/aggregation/transport/nostr.d.ts +4 -4
- package/dist/types/core/aggregation/transport/transport.d.ts +4 -4
- package/dist/types/core/aggregation/transport/transport.d.ts.map +1 -1
- package/dist/types/core/beacon/beacon.d.ts +66 -10
- package/dist/types/core/beacon/beacon.d.ts.map +1 -1
- package/dist/types/core/beacon/cas-beacon.d.ts +2 -2
- package/dist/types/core/beacon/fee-estimator.d.ts +8 -0
- package/dist/types/core/beacon/fee-estimator.d.ts.map +1 -1
- package/dist/types/core/beacon/interfaces.d.ts +1 -1
- package/dist/types/core/resolver.d.ts +3 -3
- package/dist/types/core/updater.d.ts +4 -4
- package/dist/types/did-btcr2.d.ts +2 -2
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/core/aggregation/beacon-strategy.ts +27 -9
- package/src/core/aggregation/cohort.ts +171 -35
- package/src/core/aggregation/conditions.ts +56 -0
- package/src/core/aggregation/fallback-spend.ts +223 -0
- package/src/core/aggregation/logger.ts +1 -1
- package/src/core/aggregation/messages/base.ts +6 -0
- package/src/core/aggregation/messages/bodies.ts +94 -1
- package/src/core/aggregation/messages/constants.ts +12 -0
- package/src/core/aggregation/messages/factories.ts +57 -0
- package/src/core/aggregation/messages/guards.ts +6 -0
- package/src/core/aggregation/participant.ts +255 -23
- package/src/core/aggregation/phases.ts +9 -0
- package/src/core/aggregation/recovery-policy.ts +237 -0
- package/src/core/aggregation/recovery-spend.ts +192 -0
- package/src/core/aggregation/runner/aggregation-runner.ts +34 -5
- package/src/core/aggregation/runner/events.ts +26 -7
- package/src/core/aggregation/runner/participant-runner.ts +75 -23
- package/src/core/aggregation/runner/service-runner.ts +144 -12
- package/src/core/aggregation/service.ts +260 -14
- package/src/core/aggregation/signing-session.ts +3 -3
- package/src/core/aggregation/transport/http/envelope.ts +3 -3
- package/src/core/aggregation/transport/http/inbox-buffer.ts +1 -1
- package/src/core/aggregation/transport/http/nonce-cache.ts +1 -1
- package/src/core/aggregation/transport/http/rate-limiter.ts +1 -1
- package/src/core/aggregation/transport/http/request-auth.ts +1 -1
- package/src/core/aggregation/transport/http/server.ts +1 -1
- package/src/core/aggregation/transport/http/sse-stream.ts +2 -2
- package/src/core/aggregation/transport/http/sse-writer.ts +1 -1
- package/src/core/aggregation/transport/in-memory.ts +1 -1
- package/src/core/aggregation/transport/nostr.ts +6 -6
- package/src/core/aggregation/transport/transport.ts +4 -4
- package/src/core/beacon/beacon.ts +149 -25
- package/src/core/beacon/cas-beacon.ts +7 -7
- package/src/core/beacon/fee-estimator.ts +9 -0
- package/src/core/beacon/interfaces.ts +1 -1
- package/src/core/beacon/singleton-beacon.ts +2 -2
- package/src/core/beacon/smt-beacon.ts +3 -3
- package/src/core/resolver.ts +8 -8
- package/src/core/updater.ts +6 -6
- package/src/did-btcr2.ts +2 -2
- package/src/index.ts +3 -0
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { canonicalize } from '@did-btcr2/common';
|
|
2
2
|
import { BIP340Cryptosuite, SchnorrMultikey } from '@did-btcr2/cryptosuite';
|
|
3
|
-
import {
|
|
3
|
+
import { schnorr } from '@noble/curves/secp256k1.js';
|
|
4
|
+
import { bytesToHex, hexToBytes } from '@noble/hashes/utils';
|
|
4
5
|
import { getBeaconStrategy } from './beacon-strategy.js';
|
|
5
6
|
import { AggregationCohort } from './cohort.js';
|
|
6
7
|
import { validateCohortConditions } from './conditions.js';
|
|
7
8
|
import { AggregationServiceError } from './errors.js';
|
|
9
|
+
import { buildFallbackSpend, fallbackSighash } from './fallback-spend.js';
|
|
10
|
+
import { buildFallbackLeaf } from './recovery-policy.js';
|
|
8
11
|
import { AGGREGATION_WIRE_VERSION } from './messages/base.js';
|
|
9
|
-
import { COHORT_OPT_IN, NONCE_CONTRIBUTION, SIGNATURE_AUTHORIZATION, SUBMIT_UPDATE, VALIDATION_ACK, } from './messages/constants.js';
|
|
10
|
-
import { createAggregatedNonceMessage, createAuthorizationRequestMessage, createCohortAdvertMessage, createCohortOptInAcceptMessage, createCohortReadyMessage, createDistributeAggregatedDataMessage, } from './messages/factories.js';
|
|
12
|
+
import { COHORT_OPT_IN, FALLBACK_SIGNATURE, NONCE_CONTRIBUTION, SIGNATURE_AUTHORIZATION, SUBMIT_NONINCLUDED, SUBMIT_UPDATE, VALIDATION_ACK, } from './messages/constants.js';
|
|
13
|
+
import { createAggregatedNonceMessage, createAuthorizationRequestMessage, createCohortAdvertMessage, createCohortOptInAcceptMessage, createCohortReadyMessage, createDistributeAggregatedDataMessage, createFallbackAuthorizationRequestMessage, } from './messages/factories.js';
|
|
11
14
|
import { ServiceCohortPhase } from './phases.js';
|
|
12
15
|
import { BeaconSigningSession } from './signing-session.js';
|
|
13
16
|
/** Default maximum canonicalized byte-length of a submitted BTCR2 update. */
|
|
@@ -36,7 +39,7 @@ export class AggregationService {
|
|
|
36
39
|
}
|
|
37
40
|
receive(message) {
|
|
38
41
|
// Reject messages whose wire version doesn't match what this build speaks.
|
|
39
|
-
// Missing version
|
|
42
|
+
// Missing version, treat as legacy and drop: bumping the protocol must be
|
|
40
43
|
// coordinated across all participants.
|
|
41
44
|
const version = message.version;
|
|
42
45
|
if (version === undefined || version !== AGGREGATION_WIRE_VERSION) {
|
|
@@ -59,6 +62,9 @@ export class AggregationService {
|
|
|
59
62
|
case SUBMIT_UPDATE:
|
|
60
63
|
this.#handleSubmitUpdate(message);
|
|
61
64
|
break;
|
|
65
|
+
case SUBMIT_NONINCLUDED:
|
|
66
|
+
this.#handleSubmitNonInclusion(message);
|
|
67
|
+
break;
|
|
62
68
|
case VALIDATION_ACK:
|
|
63
69
|
this.#handleValidationAck(message);
|
|
64
70
|
break;
|
|
@@ -68,8 +74,11 @@ export class AggregationService {
|
|
|
68
74
|
case SIGNATURE_AUTHORIZATION:
|
|
69
75
|
this.#handleSignatureAuthorization(message);
|
|
70
76
|
break;
|
|
77
|
+
case FALLBACK_SIGNATURE:
|
|
78
|
+
this.#handleFallbackSignature(message);
|
|
79
|
+
break;
|
|
71
80
|
default:
|
|
72
|
-
// Unknown message type
|
|
81
|
+
// Unknown message type - silently ignore
|
|
73
82
|
break;
|
|
74
83
|
}
|
|
75
84
|
}
|
|
@@ -88,7 +97,7 @@ export class AggregationService {
|
|
|
88
97
|
}
|
|
89
98
|
/**
|
|
90
99
|
* Create a new cohort with the given config. Returns the cohort ID.
|
|
91
|
-
* Cohort starts in `Created` phase
|
|
100
|
+
* Cohort starts in `Created` phase - call `advertise()` to broadcast.
|
|
92
101
|
*/
|
|
93
102
|
createCohort(config) {
|
|
94
103
|
// Fail fast on invalid conditions rather than discovering them at finalize.
|
|
@@ -101,6 +110,10 @@ export class AggregationService {
|
|
|
101
110
|
minParticipants: config.minParticipants,
|
|
102
111
|
network: config.network,
|
|
103
112
|
beaconType: config.beaconType,
|
|
113
|
+
recoveryKey: hexToBytes(config.recoveryKey),
|
|
114
|
+
recoverySequence: config.recoverySequence,
|
|
115
|
+
fundingModel: config.fundingModel,
|
|
116
|
+
fallbackThreshold: config.fallbackThreshold,
|
|
104
117
|
});
|
|
105
118
|
this.#cohortStates.set(cohort.id, {
|
|
106
119
|
phase: ServiceCohortPhase.Created,
|
|
@@ -167,7 +180,7 @@ export class AggregationService {
|
|
|
167
180
|
return;
|
|
168
181
|
// Reject re-opt-in from already-accepted participants. Without this guard a
|
|
169
182
|
// participant could send a second opt-in with a different key, overwriting
|
|
170
|
-
// pendingOptIns[did] while cohortKeys still holds the original key
|
|
183
|
+
// pendingOptIns[did] while cohortKeys still holds the original key - opening
|
|
171
184
|
// a desync window where #verifySubmittedUpdate accepts updates signed with
|
|
172
185
|
// a key that is NOT in the MuSig2 cohort.
|
|
173
186
|
if (state.acceptedParticipants.has(participantDid))
|
|
@@ -280,7 +293,7 @@ export class AggregationService {
|
|
|
280
293
|
}
|
|
281
294
|
// Cap the canonicalized update size before doing any heavier verification
|
|
282
295
|
// work. Without this guard, a participant could submit multi-MB payloads
|
|
283
|
-
// that the service would canonicalize, hash, and aggregate
|
|
296
|
+
// that the service would canonicalize, hash, and aggregate - cheap DoS.
|
|
284
297
|
const canonicalSize = canonicalize(signedUpdate).length;
|
|
285
298
|
if (canonicalSize > this.maxUpdateSizeBytes) {
|
|
286
299
|
state.rejections.push({
|
|
@@ -302,11 +315,77 @@ export class AggregationService {
|
|
|
302
315
|
});
|
|
303
316
|
return;
|
|
304
317
|
}
|
|
318
|
+
// One response per round. A member that already declined cannot also submit,
|
|
319
|
+
// and a member that already submitted cannot resubmit (a silent overwrite
|
|
320
|
+
// would corrupt the aggregated data the member already validated against).
|
|
321
|
+
// Both are dropped as rejections, symmetric with #handleSubmitNonInclusion.
|
|
322
|
+
if (state.cohort.nonIncluded.has(message.from)) {
|
|
323
|
+
state.rejections.push({
|
|
324
|
+
from: message.from,
|
|
325
|
+
code: 'UPDATE_MALFORMED',
|
|
326
|
+
reason: 'Participant already declined this round; cannot also submit an update',
|
|
327
|
+
});
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
if (state.cohort.pendingUpdates.has(message.from)) {
|
|
331
|
+
state.rejections.push({
|
|
332
|
+
from: message.from,
|
|
333
|
+
code: 'UPDATE_MALFORMED',
|
|
334
|
+
reason: 'Participant already submitted an update this round; cannot resubmit',
|
|
335
|
+
});
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
305
338
|
state.cohort.addUpdate(message.from, signedUpdate);
|
|
306
339
|
if (state.phase === ServiceCohortPhase.CohortSet) {
|
|
307
340
|
state.phase = ServiceCohortPhase.CollectingUpdates;
|
|
308
341
|
}
|
|
309
|
-
if (state.cohort.
|
|
342
|
+
if (state.cohort.hasAllResponses()) {
|
|
343
|
+
state.phase = ServiceCohortPhase.UpdatesCollected;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Handle an incoming SUBMIT_NONINCLUDED message: a member declares it has no
|
|
348
|
+
* update this round (cooperative non-inclusion). Membership is proven by the
|
|
349
|
+
* signed transport envelope, so the body carries only the cohortId. The member
|
|
350
|
+
* stays in the cohort and still signs; it is absent from the CAS map and
|
|
351
|
+
* carries a non-inclusion leaf in the SMT.
|
|
352
|
+
*/
|
|
353
|
+
#handleSubmitNonInclusion(message) {
|
|
354
|
+
const cohortId = message.body?.cohortId;
|
|
355
|
+
if (!cohortId)
|
|
356
|
+
return;
|
|
357
|
+
const state = this.#cohortStates.get(cohortId);
|
|
358
|
+
if (!state)
|
|
359
|
+
return;
|
|
360
|
+
if (state.phase !== ServiceCohortPhase.CohortSet && state.phase !== ServiceCohortPhase.CollectingUpdates)
|
|
361
|
+
return;
|
|
362
|
+
// Membership is proven by the signed envelope sender. A non-member decline is
|
|
363
|
+
// dropped as a rejection, never thrown: addNonInclusion would otherwise throw
|
|
364
|
+
// UNKNOWN_PARTICIPANT out of receive() and fail the whole cohort, a DoS any
|
|
365
|
+
// non-member could trigger. Mirrors the SUBMIT_UPDATE verification path.
|
|
366
|
+
if (!state.cohort.participants.includes(message.from)) {
|
|
367
|
+
state.rejections.push({
|
|
368
|
+
from: message.from,
|
|
369
|
+
code: 'UPDATE_MALFORMED',
|
|
370
|
+
reason: 'Sender is not a member of this cohort',
|
|
371
|
+
});
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
// One response per round: already submitted or already declined. Surface the
|
|
375
|
+
// conflict as a rejection, symmetric with the double-submit guard above.
|
|
376
|
+
if (state.cohort.pendingUpdates.has(message.from) || state.cohort.nonIncluded.has(message.from)) {
|
|
377
|
+
state.rejections.push({
|
|
378
|
+
from: message.from,
|
|
379
|
+
code: 'UPDATE_MALFORMED',
|
|
380
|
+
reason: 'Participant already responded this round',
|
|
381
|
+
});
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
state.cohort.addNonInclusion(message.from);
|
|
385
|
+
if (state.phase === ServiceCohortPhase.CohortSet) {
|
|
386
|
+
state.phase = ServiceCohortPhase.CollectingUpdates;
|
|
387
|
+
}
|
|
388
|
+
if (state.cohort.hasAllResponses()) {
|
|
310
389
|
state.phase = ServiceCohortPhase.UpdatesCollected;
|
|
311
390
|
}
|
|
312
391
|
}
|
|
@@ -421,7 +500,7 @@ export class AggregationService {
|
|
|
421
500
|
}
|
|
422
501
|
/**
|
|
423
502
|
* Start a signing session by creating auth requests for all participants.
|
|
424
|
-
* The caller provides the transaction data
|
|
503
|
+
* The caller provides the transaction data - typically built via
|
|
425
504
|
* `buildBeaconTransaction()` against a Bitcoin connection.
|
|
426
505
|
*/
|
|
427
506
|
startSigning(cohortId, txData) {
|
|
@@ -521,7 +600,7 @@ export class AggregationService {
|
|
|
521
600
|
return;
|
|
522
601
|
state.signingSession.addPartialSignature(message.from, partialSignature);
|
|
523
602
|
if (state.signingSession.partialSignatures.size === state.cohort.participants.length) {
|
|
524
|
-
// All partial sigs received
|
|
603
|
+
// All partial sigs received - generate final signature
|
|
525
604
|
const signature = state.signingSession.generateFinalSignature();
|
|
526
605
|
// Set Taproot key-path witness (finalScriptWitness injects the aggregated MuSig2 sig)
|
|
527
606
|
state.signingSession.pendingTx.updateInput(0, { finalScriptWitness: [signature] });
|
|
@@ -529,10 +608,141 @@ export class AggregationService {
|
|
|
529
608
|
cohortId,
|
|
530
609
|
signature,
|
|
531
610
|
signedTx: state.signingSession.pendingTx,
|
|
611
|
+
path: 'key-path',
|
|
532
612
|
};
|
|
533
613
|
state.phase = ServiceCohortPhase.Complete;
|
|
534
614
|
}
|
|
535
615
|
}
|
|
616
|
+
/**
|
|
617
|
+
* Abandon the optimistic n-of-n key path and ask members to authorize the
|
|
618
|
+
* k-of-n fallback (script-path) spend of the SAME beacon transaction (graceful
|
|
619
|
+
* liveness, ADR 042). Reuses the in-flight signing session's transaction and
|
|
620
|
+
* spent output, so the announcement and its outputs are unchanged: only the
|
|
621
|
+
* witness path differs. Returns one FALLBACK_AUTHORIZATION_REQUEST per
|
|
622
|
+
* participant.
|
|
623
|
+
*
|
|
624
|
+
* Callable once optimistic signing has started (the session and its tx exist)
|
|
625
|
+
* and before it completes. A cohort can take exactly one of the two paths: the
|
|
626
|
+
* caller (runner) must commit to fallback and stop driving the optimistic path.
|
|
627
|
+
*/
|
|
628
|
+
startFallbackSigning(cohortId) {
|
|
629
|
+
const state = this.#cohortStates.get(cohortId);
|
|
630
|
+
if (!state) {
|
|
631
|
+
throw new AggregationServiceError(`Cohort ${cohortId} not found.`, 'COHORT_NOT_FOUND', { cohortId });
|
|
632
|
+
}
|
|
633
|
+
if (!state.signingSession) {
|
|
634
|
+
throw new AggregationServiceError(`Cannot start fallback for cohort ${cohortId}: no signing session.`, 'NO_SIGNING_SESSION', { cohortId });
|
|
635
|
+
}
|
|
636
|
+
const signingPhases = [
|
|
637
|
+
ServiceCohortPhase.SigningStarted,
|
|
638
|
+
ServiceCohortPhase.NoncesCollected,
|
|
639
|
+
ServiceCohortPhase.AwaitingPartialSigs,
|
|
640
|
+
];
|
|
641
|
+
if (!signingPhases.includes(state.phase)) {
|
|
642
|
+
throw new AggregationServiceError(`Cannot start fallback for cohort ${cohortId}: phase is ${state.phase}.`, 'INVALID_PHASE', { cohortId, phase: state.phase });
|
|
643
|
+
}
|
|
644
|
+
const session = state.signingSession;
|
|
645
|
+
const prevOutScript = session.prevOutScripts[0];
|
|
646
|
+
const prevOutValue = session.prevOutValues[0];
|
|
647
|
+
if (!prevOutScript || prevOutValue === undefined) {
|
|
648
|
+
throw new AggregationServiceError(`Cannot start fallback for cohort ${cohortId}: signing session missing prevout data.`, 'MISSING_PREV_OUT', { cohortId });
|
|
649
|
+
}
|
|
650
|
+
const fallbackLeaf = buildFallbackLeaf({
|
|
651
|
+
cohortKeys: state.cohort.cohortKeys,
|
|
652
|
+
fallbackThreshold: state.cohort.effectiveFallbackThreshold,
|
|
653
|
+
});
|
|
654
|
+
state.fallbackSignatures = new Map();
|
|
655
|
+
state.phase = ServiceCohortPhase.FallbackRequested;
|
|
656
|
+
const messages = [];
|
|
657
|
+
for (const participantDid of state.cohort.participants) {
|
|
658
|
+
messages.push(createFallbackAuthorizationRequestMessage({
|
|
659
|
+
from: this.did,
|
|
660
|
+
to: participantDid,
|
|
661
|
+
cohortId,
|
|
662
|
+
sessionId: session.id,
|
|
663
|
+
pendingTx: session.pendingTx.hex,
|
|
664
|
+
prevOutScriptHex: bytesToHex(prevOutScript),
|
|
665
|
+
prevOutValue: prevOutValue.toString(),
|
|
666
|
+
fallbackLeafScriptHex: bytesToHex(fallbackLeaf),
|
|
667
|
+
}));
|
|
668
|
+
}
|
|
669
|
+
return messages;
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* Handle an incoming FALLBACK_SIGNATURE: a member's standalone BIP-340
|
|
673
|
+
* signature over the fallback script-path sighash. The signature is
|
|
674
|
+
* authenticated to the sender (its `signerPk` must be the sender's own cohort
|
|
675
|
+
* key and the signature must verify against the sighash) and collected. Once k
|
|
676
|
+
* valid signatures are in, the k-of-n fallback spend is assembled and the
|
|
677
|
+
* cohort completes via the script path.
|
|
678
|
+
*/
|
|
679
|
+
#handleFallbackSignature(message) {
|
|
680
|
+
const cohortId = message.body?.cohortId;
|
|
681
|
+
if (!cohortId)
|
|
682
|
+
return;
|
|
683
|
+
const state = this.#cohortStates.get(cohortId);
|
|
684
|
+
if (!state || !state.signingSession || !state.fallbackSignatures)
|
|
685
|
+
return;
|
|
686
|
+
if (state.phase !== ServiceCohortPhase.FallbackRequested)
|
|
687
|
+
return;
|
|
688
|
+
const sessionId = message.body?.sessionId;
|
|
689
|
+
if (sessionId !== state.signingSession.id)
|
|
690
|
+
return;
|
|
691
|
+
const signerPk = message.body?.signerPk;
|
|
692
|
+
const fallbackSignature = message.body?.fallbackSignature;
|
|
693
|
+
if (!signerPk || !fallbackSignature)
|
|
694
|
+
return;
|
|
695
|
+
const prevOutScript = state.signingSession.prevOutScripts[0];
|
|
696
|
+
const prevOutValue = state.signingSession.prevOutValues[0];
|
|
697
|
+
if (!prevOutScript || prevOutValue === undefined)
|
|
698
|
+
return;
|
|
699
|
+
// Authenticate the signature to the sender: signerPk must be the sender's own
|
|
700
|
+
// cohort key (x-only). A non-member or a mismatched key is dropped as a
|
|
701
|
+
// rejection, never thrown, so one bad contribution cannot stall the fallback.
|
|
702
|
+
const memberKey = state.cohort.participantKeys.get(message.from);
|
|
703
|
+
if (!memberKey) {
|
|
704
|
+
state.rejections.push({ from: message.from, code: 'UPDATE_MALFORMED', reason: 'Fallback signature from a non-member' });
|
|
705
|
+
return;
|
|
706
|
+
}
|
|
707
|
+
const memberXOnly = memberKey.slice(1);
|
|
708
|
+
if (signerPk.length !== 32 || !memberXOnly.every((b, i) => b === signerPk[i])) {
|
|
709
|
+
state.rejections.push({ from: message.from, code: 'UPDATE_MALFORMED', reason: 'Fallback signerPk does not match the sender cohort key' });
|
|
710
|
+
return;
|
|
711
|
+
}
|
|
712
|
+
const fallbackLeaf = buildFallbackLeaf({
|
|
713
|
+
cohortKeys: state.cohort.cohortKeys,
|
|
714
|
+
fallbackThreshold: state.cohort.effectiveFallbackThreshold,
|
|
715
|
+
});
|
|
716
|
+
const sighash = fallbackSighash(state.signingSession.pendingTx, 0, prevOutScript, prevOutValue, fallbackLeaf);
|
|
717
|
+
let valid = false;
|
|
718
|
+
try {
|
|
719
|
+
valid = fallbackSignature.length === 64 && schnorr.verify(fallbackSignature, sighash, signerPk);
|
|
720
|
+
}
|
|
721
|
+
catch {
|
|
722
|
+
valid = false;
|
|
723
|
+
}
|
|
724
|
+
if (!valid) {
|
|
725
|
+
state.rejections.push({ from: message.from, code: 'UPDATE_VERIFICATION_FAILED', reason: 'Fallback signature failed verification' });
|
|
726
|
+
return;
|
|
727
|
+
}
|
|
728
|
+
state.fallbackSignatures.set(message.from, { pubKey: signerPk, signature: fallbackSignature });
|
|
729
|
+
if (state.fallbackSignatures.size >= state.cohort.effectiveFallbackThreshold) {
|
|
730
|
+
const signedTx = buildFallbackSpend({
|
|
731
|
+
pendingTx: state.signingSession.pendingTx,
|
|
732
|
+
cohortKeys: state.cohort.cohortKeys,
|
|
733
|
+
fallbackThreshold: state.cohort.effectiveFallbackThreshold,
|
|
734
|
+
recoveryKey: state.cohort.recoveryKey,
|
|
735
|
+
recoverySequence: state.cohort.recoverySequence,
|
|
736
|
+
fundingModel: state.cohort.fundingModel,
|
|
737
|
+
network: state.cohort.network,
|
|
738
|
+
prevOutScript,
|
|
739
|
+
prevOutValue,
|
|
740
|
+
signatures: [...state.fallbackSignatures.values()],
|
|
741
|
+
});
|
|
742
|
+
state.result = { cohortId, signature: new Uint8Array(), signedTx, path: 'script-path' };
|
|
743
|
+
state.phase = ServiceCohortPhase.Complete;
|
|
744
|
+
}
|
|
745
|
+
}
|
|
536
746
|
getResult(cohortId) {
|
|
537
747
|
return this.#cohortStates.get(cohortId)?.result;
|
|
538
748
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../src/core/aggregation/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../src/core/aggregation/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAyB,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,4BAA4B,EAC5B,iCAAiC,EACjC,yBAAyB,EACzB,8BAA8B,EAC9B,wBAAwB,EACxB,qCAAqC,EACrC,yCAAyC,GAC1C,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAyF5D,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,GAAG,IAAI,CAAC;AAmBxD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,kBAAkB;IACpB,GAAG,CAAS;IACZ,SAAS,CAA+B;IACxC,kBAAkB,CAAS;IAEpC,2CAA2C;IAC3C,aAAa,GAAoC,IAAI,GAAG,EAAE,CAAC;IAE3D,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAA4B;QAC1E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,IAAI,6BAA6B,CAAC;IAChF,CAAC;IAGD,OAAO,CAAC,OAAoB;QAC1B,2EAA2E;QAC3E,0EAA0E;QAC1E,uCAAuC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,wBAAwB,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;YACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,IAAG,KAAK,EAAE,CAAC;gBACT,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;oBACpB,IAAI,EAAK,OAAO,CAAC,IAAI;oBACrB,IAAI,EAAK,eAAe;oBACxB,MAAM,EAAG,yBAAyB,wBAAwB,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE;iBACrF,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,QAAO,IAAI,EAAE,CAAC;YACZ,KAAK,aAAa;gBAChB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,kBAAkB;gBACrB,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,cAAc;gBACjB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,kBAAkB;gBACrB,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,uBAAuB;gBAC1B,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,kBAAkB;gBACrB,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM;YACR;gBACE,yCAAyC;gBACzC,MAAM;QACV,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,QAAgB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;QAC7B,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC;IACb,CAAC;IAGD;;;OAGG;IACH,YAAY,CAAC,MAAoB;QAC/B,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,uBAAuB,CAC/B,8BAA8B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACnD,2BAA2B,EAAE,EAAE,QAAQ,EAAE,CAC1C,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;YACnC,UAAU,EAAU,IAAI,CAAC,GAAG;YAC5B,eAAe,EAAK,MAAM,CAAC,eAAe;YAC1C,OAAO,EAAa,MAAM,CAAC,OAAO;YAClC,UAAU,EAAU,MAAM,CAAC,UAAU;YACrC,WAAW,EAAS,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;YAClD,gBAAgB,EAAI,MAAM,CAAC,gBAAgB;YAC3C,YAAY,EAAQ,MAAM,CAAC,YAAY;YACvC,iBAAiB,EAAG,MAAM,CAAC,iBAAiB;SAC7C,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;YAChC,KAAK,EAAkB,kBAAkB,CAAC,OAAO;YACjD,MAAM;YACN,MAAM;YACN,aAAa,EAAU,IAAI,GAAG,EAAE;YAChC,oBAAoB,EAAG,IAAI,GAAG,EAAE;YAChC,UAAU,EAAa,EAAE;SAC1B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,EAAE,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,QAAgB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,uBAAuB,CAAC,UAAU,QAAQ,aAAa,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,IAAI,uBAAuB,CAC/B,2BAA2B,QAAQ,cAAc,KAAK,CAAC,KAAK,GAAG,EAC/D,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAClD,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,yEAAyE;QACzE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QAChD,MAAM,OAAO,GAAG,yBAAyB,CAAC;YACxC,IAAI,EAAc,IAAI,CAAC,GAAG;YAC1B,QAAQ;YACR,OAAO;YACP,eAAe,EAAG,IAAI,CAAC,SAAS,CAAC,UAAU;YAC3C,GAAG,UAAU;SACd,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC;QAC5C,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,kDAAkD;IAClD,aAAa,CAAC,QAAgB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QAC5B,qCAAqC;QACrC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC5C,KAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,YAAY,CAAC,OAAoB;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC,IAAG,CAAC,QAAQ;YAAE,OAAO;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK;YAAE,OAAO;QAClB,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,UAAU;YAAE,OAAO;QAEzD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;QACpC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC;QAClD,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;QACtD,IAAG,CAAC,aAAa,IAAI,CAAC,eAAe;YAAE,OAAO;QAE9C,4EAA4E;QAC5E,2EAA2E;QAC3E,6EAA6E;QAC7E,2EAA2E;QAC3E,0CAA0C;QAC1C,IAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,OAAO;QAE1D,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE;YACtC,QAAQ;YACR,cAAc;YACd,aAAa;YACb,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,QAAgB,EAAE,cAAsB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,uBAAuB,CAAC,UAAU,QAAQ,aAAa,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACtD,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,uBAAuB,CAC/B,0BAA0B,cAAc,eAAe,QAAQ,GAAG,EAClE,WAAW,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAC1C,CAAC;QACJ,CAAC;QACD,IAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,uBAAuB,CAC/B,eAAe,cAAc,iCAAiC,QAAQ,GAAG,EACzE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CACjD,CAAC;QACJ,CAAC;QACD,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;QACrD,IAAG,eAAe,KAAK,SAAS,IAAI,KAAK,CAAC,oBAAoB,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC;YACvF,MAAM,IAAI,uBAAuB,CAC/B,UAAU,QAAQ,aAAa,eAAe,iCAAiC,EAC/E,aAAa,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CAC7C,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC/C,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QACtE,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAE5E,OAAO,CAAC,8BAA8B,CAAC;gBACrC,IAAI,EAAG,IAAI,CAAC,GAAG;gBACf,EAAE,EAAK,cAAc;gBACrB,QAAQ;aACT,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,QAAgB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,uBAAuB,CAAC,UAAU,QAAQ,aAAa,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,UAAU,EAAE,CAAC;YACjD,MAAM,IAAI,uBAAuB,CAC/B,qCAAqC,QAAQ,cAAc,KAAK,CAAC,KAAK,GAAG,EACzE,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAClD,CAAC;QACJ,CAAC;QACD,IAAG,KAAK,CAAC,oBAAoB,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAClE,MAAM,IAAI,uBAAuB,CAC/B,UAAU,QAAQ,aAAa,KAAK,CAAC,oBAAoB,CAAC,IAAI,gCAAgC,KAAK,CAAC,MAAM,CAAC,eAAe,GAAG,EAC7H,yBAAyB,EAAE,EAAE,QAAQ,EAAE,CACxC,CAAC;QACJ,CAAC;QACD,2EAA2E;QAC3E,qDAAqD;QACrD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC;QACrD,IAAG,eAAe,KAAK,SAAS,IAAI,KAAK,CAAC,oBAAoB,CAAC,IAAI,GAAG,eAAe,EAAE,CAAC;YACtF,MAAM,IAAI,uBAAuB,CAC/B,UAAU,QAAQ,QAAQ,KAAK,CAAC,oBAAoB,CAAC,IAAI,uCAAuC,eAAe,GAAG,EAClH,uBAAuB,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CACvD,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC1D,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC;QAE3C,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAI,MAAM,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC;gBACrC,IAAI,EAAY,IAAI,CAAC,GAAG;gBACxB,EAAE,EAAc,cAAc;gBAC9B,QAAQ;gBACR,aAAa;gBACb,UAAU,EAAM,KAAK,CAAC,MAAM,CAAC,UAAU;aACxC,CAAC,CAAC,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,6CAA6C;IAC7C,gBAAgB,CAAC,QAAgB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,OAAoB;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC,IAAG,CAAC,QAAQ;YAAE,OAAO;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK;YAAE,OAAO;QAClB,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,iBAAiB;YAAE,OAAO;QAEhH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,YAA6C,CAAC;QACjF,IAAG,CAAC,YAAY,EAAE,CAAC;YACjB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAK,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAK,kBAAkB;gBAC3B,MAAM,EAAG,yCAAyC;aACnD,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,0EAA0E;QAC1E,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,aAAa,GAAG,YAAY,CAAC,YAAkD,CAAC,CAAC,MAAM,CAAC;QAC9F,IAAG,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAK,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAK,kBAAkB;gBAC3B,MAAM,EAAG,2BAA2B,aAAa,0BAA0B,IAAI,CAAC,kBAAkB,EAAE;aACrG,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,kFAAkF;QAClF,gFAAgF;QAChF,8EAA8E;QAC9E,sDAAsD;QACtD,IAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;YACnE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAK,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAK,4BAA4B;gBACrC,MAAM,EAAG,kDAAkD;aAC5D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,6EAA6E;QAC7E,0EAA0E;QAC1E,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAK,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAK,kBAAkB;gBAC3B,MAAM,EAAG,uEAAuE;aACjF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAK,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAK,kBAAkB;gBAC3B,MAAM,EAAG,qEAAqE;aAC/E,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAEnD,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS,EAAE,CAAC;YAChD,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;QACrD,CAAC;QACD,IAAG,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;YAClC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,gBAAgB,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,yBAAyB,CAAC,OAAoB;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC,IAAG,CAAC,QAAQ;YAAE,OAAO;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK;YAAE,OAAO;QAClB,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,iBAAiB;YAAE,OAAO;QAEhH,8EAA8E;QAC9E,8EAA8E;QAC9E,4EAA4E;QAC5E,yEAAyE;QACzE,IAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAK,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAK,kBAAkB;gBAC3B,MAAM,EAAG,uCAAuC;aACjD,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,6EAA6E;QAC7E,yEAAyE;QACzE,IAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/F,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAK,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAK,kBAAkB;gBAC3B,MAAM,EAAG,0CAA0C;aACpD,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS,EAAE,CAAC;YAChD,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;QACrD,CAAC;QACD,IAAG,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;YAClC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,gBAAgB,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,sBAAsB,CACpB,KAAyB,EACzB,MAAc,EACd,YAA+B;QAE/B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACjC,IAAG,CAAC,KAAK,EAAE,kBAAkB,IAAI,CAAC,KAAK,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAEjE,kEAAkE;QAClE,iDAAiD;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAG,KAAK,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAElC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAG,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAExB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC;gBAC7C,EAAE,EAAe,KAAK,CAAC,kBAAkB;gBACzC,UAAU,EAAO,MAAM;gBACvB,cAAc,EAAG,KAAK,CAAC,aAAa;aACrC,CAAoB,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC9C,OAAO,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAGD;;;OAGG;IACH,kBAAkB,CAAC,QAAgB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,uBAAuB,CAAC,UAAU,QAAQ,aAAa,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;YACvD,MAAM,IAAI,uBAAuB,CAC/B,2CAA2C,QAAQ,cAAc,KAAK,CAAC,KAAK,GAAG,EAC/E,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAClD,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAG,CAAC,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,uBAAuB,CAC/B,4BAA4B,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EACrD,yBAAyB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAC7E,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3C,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,WAAY,CAAC,CAAC;QAC7D,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,eAAe,CAAC;QAEjD,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAI,MAAM,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC5E,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC;gBAClD,IAAI,EAAc,IAAI,CAAC,GAAG;gBAC1B,EAAE,EAAgB,cAAc;gBAChC,QAAQ;gBACR,UAAU,EAAQ,KAAK,CAAC,MAAM,CAAC,UAAU;gBACzC,cAAc;gBACd,eAAe,EAAG,OAAO,CAAC,eAAe;gBACzC,QAAQ,EAAU,OAAO,CAAC,QAAQ;aACnC,CAAC,CAAC,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kBAAkB,CAAC,QAAgB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACpF,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC;QACnD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,OAAO;YACL,QAAQ;YACR,QAAQ;YACR,OAAO;YACP,KAAK,EAAG,eAAe,CAAC,IAAI;SAC7B,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,OAAoB;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC,IAAG,CAAC,QAAQ;YAAE,OAAO;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK;YAAE,OAAO;QAClB,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,eAAe;YAAE,OAAO;QAE9D,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC,IAAG,QAAQ,KAAK,SAAS;YAAE,OAAO;QAElC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEnD,+DAA+D;QAC/D,4EAA4E;QAC5E,IAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACnC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC;QAC7C,CAAC;aAAM,IAAG,KAAK,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,CAAC;YACnD,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC;QAC1C,CAAC;IACH,CAAC;IAGD;;;;OAIG;IACH,YAAY,CAAC,QAAgB,EAAE,MAAqB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,uBAAuB,CAAC,UAAU,QAAQ,aAAa,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,SAAS,EAAE,CAAC;YAChD,MAAM,IAAI,uBAAuB,CAC/B,mCAAmC,QAAQ,cAAc,KAAK,CAAC,KAAK,GAAG,EACvE,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAClD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC;YACvC,MAAM,EAAW,KAAK,CAAC,MAAM;YAC7B,SAAS,EAAQ,MAAM,CAAC,EAAE;YAC1B,cAAc,EAAG,MAAM,CAAC,cAAc;YACtC,aAAa,EAAI,MAAM,CAAC,aAAa;SACtC,CAAC,CAAC;QACH,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;QAC/B,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC;QAEhD,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAG,CAAC,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,uBAAuB,CAC/B,mCAAmC,QAAQ,wCAAwC,EACnF,yBAAyB,EAAE,EAAE,QAAQ,EAAE,CACxC,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAI,MAAM,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC;gBAC9C,IAAI,EAAe,IAAI,CAAC,GAAG;gBAC3B,EAAE,EAAiB,cAAc;gBACjC,QAAQ;gBACR,SAAS,EAAU,OAAO,CAAC,EAAE;gBAC7B,SAAS,EAAU,MAAM,CAAC,EAAE,CAAC,GAAG;gBAChC,gBAAgB,EAAG,UAAU,CAAC,aAAa,CAAC;gBAC5C,YAAY,EAAO,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG;aAC9D,CAAC,CAAC,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,wBAAwB,CAAC,OAAoB;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC,IAAG,CAAC,QAAQ;YAAE,OAAO;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,OAAO;QAC3C,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,cAAc;YAAE,OAAO;QAE7D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;QAC1C,IAAG,SAAS,KAAK,KAAK,CAAC,cAAc,CAAC,EAAE;YAAE,OAAO;QAEjD,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC;QAC1D,IAAG,CAAC,iBAAiB;YAAE,OAAO;QAE9B,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAE3E,IAAG,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACrF,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,eAAe,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,QAAgB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,uBAAuB,CAAC,UAAU,QAAQ,aAAa,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC/E,MAAM,IAAI,uBAAuB,CAC/B,2CAA2C,QAAQ,cAAc,KAAK,CAAC,KAAK,GAAG,EAC/E,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAClD,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;QACvE,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,mBAAmB,CAAC;QAErD,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAI,MAAM,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC;gBACzC,IAAI,EAAQ,IAAI,CAAC,GAAG;gBACpB,EAAE,EAAU,cAAc;gBAC1B,QAAQ;gBACR,SAAS,EAAG,KAAK,CAAC,cAAc,CAAC,EAAE;gBACnC,eAAe;aAChB,CAAC,CAAC,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,6BAA6B,CAAC,OAAoB;QAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC,IAAG,CAAC,QAAQ;YAAE,OAAO;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,OAAO;QAC3C,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,mBAAmB;YAAE,OAAO;QAElE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;QAC1C,IAAG,SAAS,KAAK,KAAK,CAAC,cAAc,CAAC,EAAE;YAAE,OAAO;QAEjD,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC;QACxD,IAAG,CAAC,gBAAgB;YAAE,OAAO;QAE7B,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAEzE,IAAG,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACpF,uDAAuD;YACvD,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC;YAEhE,sFAAsF;YACtF,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAEnF,KAAK,CAAC,MAAM,GAAG;gBACb,QAAQ;gBACR,SAAS;gBACT,QAAQ,EAAG,KAAK,CAAC,cAAc,CAAC,SAAS;gBACzC,IAAI,EAAO,UAAU;aACtB,CAAC;YACF,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC;QAC5C,CAAC;IACH,CAAC;IAGD;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,QAAgB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,uBAAuB,CAAC,UAAU,QAAQ,aAAa,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,IAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,uBAAuB,CAC/B,oCAAoC,QAAQ,uBAAuB,EACnE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CACnC,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAA6B;YAC9C,kBAAkB,CAAC,cAAc;YACjC,kBAAkB,CAAC,eAAe;YAClC,kBAAkB,CAAC,mBAAmB;SACvC,CAAC;QACF,IAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,uBAAuB,CAC/B,oCAAoC,QAAQ,cAAc,KAAK,CAAC,KAAK,GAAG,EACxE,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAClD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC;QACrC,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAG,CAAC,aAAa,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAChD,MAAM,IAAI,uBAAuB,CAC/B,oCAAoC,QAAQ,yCAAyC,EACrF,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CACjC,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,iBAAiB,CAAC;YACrC,UAAU,EAAU,KAAK,CAAC,MAAM,CAAC,UAAU;YAC3C,iBAAiB,EAAG,KAAK,CAAC,MAAM,CAAC,0BAA0B;SAC5D,CAAC,CAAC;QAEH,KAAK,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;QAEnD,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAI,MAAM,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,yCAAyC,CAAC;gBACtD,IAAI,EAAoB,IAAI,CAAC,GAAG;gBAChC,EAAE,EAAsB,cAAc;gBACtC,QAAQ;gBACR,SAAS,EAAe,OAAO,CAAC,EAAE;gBAClC,SAAS,EAAe,OAAO,CAAC,SAAS,CAAC,GAAG;gBAC7C,gBAAgB,EAAQ,UAAU,CAAC,aAAa,CAAC;gBACjD,YAAY,EAAY,YAAY,CAAC,QAAQ,EAAE;gBAC/C,qBAAqB,EAAG,UAAU,CAAC,YAAY,CAAC;aACjD,CAAC,CAAC,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACH,wBAAwB,CAAC,OAAoB;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxC,IAAG,CAAC,QAAQ;YAAE,OAAO;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,kBAAkB;YAAE,OAAO;QACxE,IAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,iBAAiB;YAAE,OAAO;QAEhE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;QAC1C,IAAG,SAAS,KAAK,KAAK,CAAC,cAAc,CAAC,EAAE;YAAE,OAAO;QAEjD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAkC,CAAC;QAClE,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,iBAA2C,CAAC;QACpF,IAAG,CAAC,QAAQ,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAE3C,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAG,CAAC,aAAa,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO;QAExD,8EAA8E;QAC9E,wEAAwE;QACxE,8EAA8E;QAC9E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjE,IAAG,CAAC,SAAS,EAAE,CAAC;YACd,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACxH,OAAO;QACT,CAAC;QACD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,IAAG,QAAQ,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,wDAAwD,EAAE,CAAC,CAAC;YAC1I,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,iBAAiB,CAAC;YACrC,UAAU,EAAU,KAAK,CAAC,MAAM,CAAC,UAAU;YAC3C,iBAAiB,EAAG,KAAK,CAAC,MAAM,CAAC,0BAA0B;SAC5D,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAC9G,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YAAC,KAAK,GAAG,iBAAiB,CAAC,MAAM,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,KAAK,GAAG,KAAK,CAAC;QAAC,CAAC;QACjI,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC,CAAC;YACpI,OAAO;QACT,CAAC;QAED,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAE/F,IAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;YAC5E,MAAM,QAAQ,GAAG,kBAAkB,CAAC;gBAClC,SAAS,EAAW,KAAK,CAAC,cAAc,CAAC,SAAS;gBAClD,UAAU,EAAU,KAAK,CAAC,MAAM,CAAC,UAAU;gBAC3C,iBAAiB,EAAG,KAAK,CAAC,MAAM,CAAC,0BAA0B;gBAC3D,WAAW,EAAS,KAAK,CAAC,MAAM,CAAC,WAAY;gBAC7C,gBAAgB,EAAI,KAAK,CAAC,MAAM,CAAC,gBAAiB;gBAClD,YAAY,EAAQ,KAAK,CAAC,MAAM,CAAC,YAAY;gBAC7C,OAAO,EAAa,KAAK,CAAC,MAAM,CAAC,OAAO;gBACxC,aAAa;gBACb,YAAY;gBACZ,UAAU,EAAU,CAAE,GAAG,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAE;aAC7D,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YACxF,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC;QAC5C,CAAC;IACH,CAAC;IAGD,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClD,CAAC;IAED,cAAc,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjD,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -24,11 +24,11 @@ export class BeaconSigningSession {
|
|
|
24
24
|
prevOutScripts;
|
|
25
25
|
/** Previous output values for Taproot sighash computation. */
|
|
26
26
|
prevOutValues;
|
|
27
|
-
/** Map of participant publicKey-hex
|
|
27
|
+
/** Map of participant publicKey-hex to public nonce contribution. */
|
|
28
28
|
nonceContributions = new Map();
|
|
29
29
|
/** Aggregated MuSig2 nonce (66 bytes). */
|
|
30
30
|
aggregatedNonce;
|
|
31
|
-
/** Map of participant DID
|
|
31
|
+
/** Map of participant DID to partial signature. */
|
|
32
32
|
partialSignatures = new Map();
|
|
33
33
|
/** Final 64-byte Schnorr signature. */
|
|
34
34
|
signature;
|
|
@@ -163,7 +163,7 @@ export class BeaconSigningSession {
|
|
|
163
163
|
throw new SigningSessionError('Aggregated nonce not available.', 'MISSING_AGGREGATED_NONCE');
|
|
164
164
|
}
|
|
165
165
|
if (!this.#secretNonce) {
|
|
166
|
-
throw new SigningSessionError('Secret nonce not available
|
|
166
|
+
throw new SigningSessionError('Secret nonce not available - generateNonceContribution() must be called first.', 'MISSING_SECRET_NONCE');
|
|
167
167
|
}
|
|
168
168
|
const session = new musig2.Session(this.aggregatedNonce, this.cohort.cohortKeys, this.sigHash, [this.cohort.tapTweak], [true]);
|
|
169
169
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signing-session.js","sourceRoot":"","sources":["../../../../src/core/aggregation/signing-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAalD;;;;;;;;;GASG;AACH,MAAM,OAAO,oBAAoB;IAC/B,kDAAkD;IAC3C,EAAE,CAAS;IAElB,yCAAyC;IAClC,MAAM,CAAoB;IAEjC,4CAA4C;IACrC,SAAS,CAAc;IAE9B,yEAAyE;IAClE,cAAc,CAAe;IAEpC,8DAA8D;IACvD,aAAa,CAAW;IAE/B,
|
|
1
|
+
{"version":3,"file":"signing-session.js","sourceRoot":"","sources":["../../../../src/core/aggregation/signing-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { DEFAULT_CLOCK_SKEW_SEC, DEFAULT_NONCE_LEN_BYTES, HTTP_ENVELOPE_VERSION,
|
|
|
5
5
|
/**
|
|
6
6
|
* Build a {@link SignedEnvelope} around `message`.
|
|
7
7
|
*
|
|
8
|
-
* Pure function
|
|
8
|
+
* Pure function - no I/O beyond `randomBytes` for nonce generation (which
|
|
9
9
|
* uses the platform's cryptographic RNG: `crypto.getRandomValues` in browsers,
|
|
10
10
|
* `node:crypto` in Node). Deterministic when both `nonce` and `timestamp` are
|
|
11
11
|
* supplied via {@link SignEnvelopeOptions}.
|
|
@@ -31,7 +31,7 @@ export function signEnvelope(message, sender, opts = {}) {
|
|
|
31
31
|
* communication public key. Throws {@link HttpTransportError} on any failure;
|
|
32
32
|
* returns normally on success.
|
|
33
33
|
*
|
|
34
|
-
* Does NOT check nonce uniqueness
|
|
34
|
+
* Does NOT check nonce uniqueness - replay protection is the caller's
|
|
35
35
|
* responsibility (the server-side transport maintains an LRU cache).
|
|
36
36
|
*/
|
|
37
37
|
export function verifyEnvelope(envelope, senderPk, opts = {}) {
|
|
@@ -82,7 +82,7 @@ function normalizeMessage(message) {
|
|
|
82
82
|
*
|
|
83
83
|
* Without this, `JSON.stringify` serializes a `Uint8Array` as an index-keyed
|
|
84
84
|
* object (`{"0":1,"1":2,...}`), which `canonicalize` then re-parses into a
|
|
85
|
-
* plain object
|
|
85
|
+
* plain object - the receiver cannot reconstruct the original bytes even
|
|
86
86
|
* though the signature still verifies.
|
|
87
87
|
*/
|
|
88
88
|
export function normalizeForWire(value) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* When a subscriber (re)connects with a `Last-Event-ID` header, the server
|
|
5
5
|
* uses {@link since} to replay everything that arrived while the subscriber
|
|
6
6
|
* was disconnected. Events older than the replay window (evicted from the
|
|
7
|
-
* ring) are unrecoverable
|
|
7
|
+
* ring) are unrecoverable - callers should choose `capacity` based on
|
|
8
8
|
* expected message rate × acceptable reconnect window.
|
|
9
9
|
*/
|
|
10
10
|
export class InboxBuffer {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Bounded anti-replay cache for `(did, nonce)` pairs.
|
|
3
3
|
*
|
|
4
|
-
* Replay windowing is the caller's responsibility
|
|
4
|
+
* Replay windowing is the caller's responsibility - this cache only detects
|
|
5
5
|
* duplicates. Callers are expected to reject envelopes/headers whose timestamp
|
|
6
6
|
* is outside the clock-skew window *before* consulting the cache, so entries
|
|
7
7
|
* here are always within the protocol's acceptable window.
|
|
@@ -12,7 +12,7 @@ export class InMemoryRateLimitStore {
|
|
|
12
12
|
* sender DID). Tokens refill linearly at `rps` up to `burst`. Each `consume`
|
|
13
13
|
* call atomically debits one token or returns `false` to reject.
|
|
14
14
|
*
|
|
15
|
-
* The limiter is synchronous and deterministic given `nowMs`
|
|
15
|
+
* The limiter is synchronous and deterministic given `nowMs` - tests can
|
|
16
16
|
* drive it with a fixed clock to exercise exact boundaries.
|
|
17
17
|
*/
|
|
18
18
|
export class RateLimiter {
|
|
@@ -31,7 +31,7 @@ export function buildRequestAuth(did, keys, path, opts = {}) {
|
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Parse a `BTCR2-Sig` auth header value into its structured fields. Does NOT
|
|
34
|
-
* verify the signature
|
|
34
|
+
* verify the signature: call {@link verifyRequestAuth} for that.
|
|
35
35
|
*/
|
|
36
36
|
export function parseRequestAuth(headerValue) {
|
|
37
37
|
const prefix = `${REQUEST_AUTH_SCHEME} `;
|
|
@@ -13,7 +13,7 @@ const INBOX_PATH_SUFFIX = '/inbox';
|
|
|
13
13
|
const DEFAULT_ADVERT_TTL_MS = 5 * 60 * 1000;
|
|
14
14
|
const DEFAULT_HEARTBEAT_MS = 20_000;
|
|
15
15
|
/**
|
|
16
|
-
* Server-side HTTP transport. Sans-I/O
|
|
16
|
+
* Server-side HTTP transport. Sans-I/O - the caller mounts
|
|
17
17
|
* {@link handleRequest} and {@link handleSse} under their HTTP framework of
|
|
18
18
|
* choice; the transport owns only in-memory state (actors, inboxes, advert
|
|
19
19
|
* cache, replay / rate-limit policies).
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* CR-only line terminators are not supported (every mainstream SSE
|
|
8
8
|
* implementation emits LF or CRLF).
|
|
9
9
|
*
|
|
10
|
-
* Pure, runtime-agnostic
|
|
10
|
+
* Pure, runtime-agnostic - works anywhere `ReadableStream<Uint8Array>` and
|
|
11
11
|
* `TextDecoder` exist (browsers and Node 22+).
|
|
12
12
|
*
|
|
13
13
|
* The caller owns stream lifecycle: cancellation should be effected via an
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Format an SSE event frame. Pairs with {@link parseSseStream}.
|
|
3
3
|
*
|
|
4
|
-
* Multi-line `data` is split across multiple `data:` lines per the SSE spec
|
|
4
|
+
* Multi-line `data` is split across multiple `data:` lines per the SSE spec -
|
|
5
5
|
* each embedded `\n` becomes its own line, and the parser rejoins them.
|
|
6
6
|
*
|
|
7
7
|
* The returned string includes a trailing blank line (the dispatch marker).
|
|
@@ -2,7 +2,7 @@ import { bytesToHex, hexToBytes } from '@noble/hashes/utils';
|
|
|
2
2
|
/**
|
|
3
3
|
* In-process message bus connecting one or more {@link InMemoryTransport}
|
|
4
4
|
* instances. Routes broadcasts to every registered actor and directed messages
|
|
5
|
-
* to the actor that owns the recipient DID
|
|
5
|
+
* to the actor that owns the recipient DID, with no relay, server, or network.
|
|
6
6
|
*
|
|
7
7
|
* Each delivery does a JSON round-trip (Uint8Array preserved as `__bytes` hex)
|
|
8
8
|
* so handlers receive an isolated, serialization-faithful copy, exactly as a
|
|
@@ -28,9 +28,9 @@ export const DEFAULT_BROADCAST_LOOKBACK_MS = 5 * 60 * 1000;
|
|
|
28
28
|
* sending or receiving.
|
|
29
29
|
*
|
|
30
30
|
* Message routing:
|
|
31
|
-
* - Keygen messages (COHORT_ADVERT, COHORT_OPT_IN, COHORT_OPT_IN_ACCEPT, COHORT_READY)
|
|
32
|
-
* - Update messages (SUBMIT_UPDATE, DISTRIBUTE_AGGREGATED_DATA, VALIDATION_ACK)
|
|
33
|
-
* - Sign messages
|
|
31
|
+
* - Keygen messages (COHORT_ADVERT, COHORT_OPT_IN, COHORT_OPT_IN_ACCEPT, COHORT_READY) to kind 1 (plaintext)
|
|
32
|
+
* - Update messages (SUBMIT_UPDATE, DISTRIBUTE_AGGREGATED_DATA, VALIDATION_ACK) to kind 1059 (NIP-44 encrypted)
|
|
33
|
+
* - Sign messages to kind 1059 (NIP-44 encrypted)
|
|
34
34
|
*
|
|
35
35
|
* @class NostrTransport
|
|
36
36
|
* @implements {Transport}
|
|
@@ -280,13 +280,13 @@ export class NostrTransport {
|
|
|
280
280
|
* backfill historical events to late subscribers: republishing gives late
|
|
281
281
|
* joiners a window to discover the message without requiring protocol
|
|
282
282
|
* changes. Relay rate-limit / publish failures inside the interval are
|
|
283
|
-
* caught and logged rather than propagated
|
|
283
|
+
* caught and logged rather than propagated - the caller should stop the
|
|
284
284
|
* repeater once the protocol condition is satisfied.
|
|
285
285
|
*/
|
|
286
286
|
publishRepeating(message, sender, intervalMs, recipient) {
|
|
287
287
|
let stopped = false;
|
|
288
288
|
// Fire the first publish eagerly; any error surfaces as a rejected
|
|
289
|
-
// promise that we swallow to avoid unhandled rejections
|
|
289
|
+
// promise that we swallow to avoid unhandled rejections - the caller can
|
|
290
290
|
// observe delivery via receive-side handlers.
|
|
291
291
|
void this.sendMessage(message, sender, recipient).catch((err) => {
|
|
292
292
|
this.#logger.debug('publishRepeating first send failed:', err);
|
|
@@ -343,7 +343,7 @@ export class NostrTransport {
|
|
|
343
343
|
// Relay self-echo: sendMessage() adds the sender's own pubkey to the
|
|
344
344
|
// event's `p` tags (so recipients can reply). The directed subscription
|
|
345
345
|
// filter `{'#p': [actor_pk]}` therefore matches every event this actor
|
|
346
|
-
// publishes. Skip
|
|
346
|
+
// publishes. Skip - we don't need to process our own outgoing events,
|
|
347
347
|
// and attempting to NIP-44-decrypt them fails with "invalid MAC" because
|
|
348
348
|
// the content was encrypted for the recipient, not self.
|
|
349
349
|
if (event.pubkey === bytesToHex(actor.keys.publicKey.x))
|