@did-btcr2/method 0.28.0 → 0.32.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.
Files changed (193) hide show
  1. package/README.md +13 -5
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/browser.js +34125 -44647
  4. package/dist/browser.mjs +26409 -36931
  5. package/dist/cjs/index.js +2869 -679
  6. package/dist/esm/core/aggregation/beacon-strategy.js +62 -0
  7. package/dist/esm/core/aggregation/beacon-strategy.js.map +1 -0
  8. package/dist/esm/core/aggregation/cohort.js +31 -8
  9. package/dist/esm/core/aggregation/cohort.js.map +1 -1
  10. package/dist/esm/core/aggregation/logger.js +15 -0
  11. package/dist/esm/core/aggregation/logger.js.map +1 -0
  12. package/dist/esm/core/aggregation/messages/base.js +12 -1
  13. package/dist/esm/core/aggregation/messages/base.js.map +1 -1
  14. package/dist/esm/core/aggregation/messages/bodies.js +90 -0
  15. package/dist/esm/core/aggregation/messages/bodies.js.map +1 -0
  16. package/dist/esm/core/aggregation/messages/factories.js.map +1 -1
  17. package/dist/esm/core/aggregation/messages/index.js +1 -0
  18. package/dist/esm/core/aggregation/messages/index.js.map +1 -1
  19. package/dist/esm/core/aggregation/participant.js +39 -46
  20. package/dist/esm/core/aggregation/participant.js.map +1 -1
  21. package/dist/esm/core/aggregation/runner/participant-runner.js +33 -7
  22. package/dist/esm/core/aggregation/runner/participant-runner.js.map +1 -1
  23. package/dist/esm/core/aggregation/runner/service-runner.js +198 -19
  24. package/dist/esm/core/aggregation/runner/service-runner.js.map +1 -1
  25. package/dist/esm/core/aggregation/service.js +143 -15
  26. package/dist/esm/core/aggregation/service.js.map +1 -1
  27. package/dist/esm/core/aggregation/signing-session.js +44 -5
  28. package/dist/esm/core/aggregation/signing-session.js.map +1 -1
  29. package/dist/esm/core/aggregation/transport/didcomm.js +9 -0
  30. package/dist/esm/core/aggregation/transport/didcomm.js.map +1 -1
  31. package/dist/esm/core/aggregation/transport/factory.js +15 -6
  32. package/dist/esm/core/aggregation/transport/factory.js.map +1 -1
  33. package/dist/esm/core/aggregation/transport/http/client.js +350 -0
  34. package/dist/esm/core/aggregation/transport/http/client.js.map +1 -0
  35. package/dist/esm/core/aggregation/transport/http/envelope.js +126 -0
  36. package/dist/esm/core/aggregation/transport/http/envelope.js.map +1 -0
  37. package/dist/esm/core/aggregation/transport/http/errors.js +11 -0
  38. package/dist/esm/core/aggregation/transport/http/errors.js.map +1 -0
  39. package/dist/esm/core/aggregation/transport/http/inbox-buffer.js +45 -0
  40. package/dist/esm/core/aggregation/transport/http/inbox-buffer.js.map +1 -0
  41. package/dist/esm/core/aggregation/transport/http/index.js +12 -0
  42. package/dist/esm/core/aggregation/transport/http/index.js.map +1 -0
  43. package/dist/esm/core/aggregation/transport/http/nonce-cache.js +38 -0
  44. package/dist/esm/core/aggregation/transport/http/nonce-cache.js.map +1 -0
  45. package/dist/esm/core/aggregation/transport/http/protocol.js +28 -0
  46. package/dist/esm/core/aggregation/transport/http/protocol.js.map +1 -0
  47. package/dist/esm/core/aggregation/transport/http/rate-limiter.js +45 -0
  48. package/dist/esm/core/aggregation/transport/http/rate-limiter.js.map +1 -0
  49. package/dist/esm/core/aggregation/transport/http/request-auth.js +100 -0
  50. package/dist/esm/core/aggregation/transport/http/request-auth.js.map +1 -0
  51. package/dist/esm/core/aggregation/transport/http/server.js +481 -0
  52. package/dist/esm/core/aggregation/transport/http/server.js.map +1 -0
  53. package/dist/esm/core/aggregation/transport/http/sse-stream.js +110 -0
  54. package/dist/esm/core/aggregation/transport/http/sse-stream.js.map +1 -0
  55. package/dist/esm/core/aggregation/transport/http/sse-writer.js +25 -0
  56. package/dist/esm/core/aggregation/transport/http/sse-writer.js.map +1 -0
  57. package/dist/esm/core/aggregation/transport/index.js +1 -0
  58. package/dist/esm/core/aggregation/transport/index.js.map +1 -1
  59. package/dist/esm/core/aggregation/transport/nostr.js +245 -16
  60. package/dist/esm/core/aggregation/transport/nostr.js.map +1 -1
  61. package/dist/esm/core/beacon/beacon.js +295 -63
  62. package/dist/esm/core/beacon/beacon.js.map +1 -1
  63. package/dist/esm/core/beacon/cas-beacon.js +3 -3
  64. package/dist/esm/core/beacon/cas-beacon.js.map +1 -1
  65. package/dist/esm/core/beacon/singleton-beacon.js +3 -3
  66. package/dist/esm/core/beacon/singleton-beacon.js.map +1 -1
  67. package/dist/esm/core/beacon/smt-beacon.js +3 -3
  68. package/dist/esm/core/beacon/smt-beacon.js.map +1 -1
  69. package/dist/esm/core/beacon/utils.js +14 -9
  70. package/dist/esm/core/beacon/utils.js.map +1 -1
  71. package/dist/esm/core/updater.js +63 -55
  72. package/dist/esm/core/updater.js.map +1 -1
  73. package/dist/esm/did-btcr2.js +0 -4
  74. package/dist/esm/did-btcr2.js.map +1 -1
  75. package/dist/esm/index.js +2 -0
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/esm/utils/did-document.js +2 -2
  78. package/dist/esm/utils/did-document.js.map +1 -1
  79. package/dist/types/core/aggregation/beacon-strategy.d.ts +52 -0
  80. package/dist/types/core/aggregation/beacon-strategy.d.ts.map +1 -0
  81. package/dist/types/core/aggregation/cohort.d.ts +20 -3
  82. package/dist/types/core/aggregation/cohort.d.ts.map +1 -1
  83. package/dist/types/core/aggregation/logger.d.ts +22 -0
  84. package/dist/types/core/aggregation/logger.d.ts.map +1 -0
  85. package/dist/types/core/aggregation/messages/base.d.ts +13 -1
  86. package/dist/types/core/aggregation/messages/base.d.ts.map +1 -1
  87. package/dist/types/core/aggregation/messages/bodies.d.ts +130 -0
  88. package/dist/types/core/aggregation/messages/bodies.d.ts.map +1 -0
  89. package/dist/types/core/aggregation/messages/factories.d.ts +1 -0
  90. package/dist/types/core/aggregation/messages/factories.d.ts.map +1 -1
  91. package/dist/types/core/aggregation/messages/index.d.ts +1 -0
  92. package/dist/types/core/aggregation/messages/index.d.ts.map +1 -1
  93. package/dist/types/core/aggregation/participant.d.ts +2 -0
  94. package/dist/types/core/aggregation/participant.d.ts.map +1 -1
  95. package/dist/types/core/aggregation/runner/events.d.ts +32 -6
  96. package/dist/types/core/aggregation/runner/events.d.ts.map +1 -1
  97. package/dist/types/core/aggregation/runner/participant-runner.d.ts +7 -5
  98. package/dist/types/core/aggregation/runner/participant-runner.d.ts.map +1 -1
  99. package/dist/types/core/aggregation/runner/service-runner.d.ts +33 -3
  100. package/dist/types/core/aggregation/runner/service-runner.d.ts.map +1 -1
  101. package/dist/types/core/aggregation/service.d.ts +33 -2
  102. package/dist/types/core/aggregation/service.d.ts.map +1 -1
  103. package/dist/types/core/aggregation/signing-session.d.ts +5 -1
  104. package/dist/types/core/aggregation/signing-session.d.ts.map +1 -1
  105. package/dist/types/core/aggregation/transport/didcomm.d.ts +3 -0
  106. package/dist/types/core/aggregation/transport/didcomm.d.ts.map +1 -1
  107. package/dist/types/core/aggregation/transport/factory.d.ts +22 -7
  108. package/dist/types/core/aggregation/transport/factory.d.ts.map +1 -1
  109. package/dist/types/core/aggregation/transport/http/client.d.ts +48 -0
  110. package/dist/types/core/aggregation/transport/http/client.d.ts.map +1 -0
  111. package/dist/types/core/aggregation/transport/http/envelope.d.ts +64 -0
  112. package/dist/types/core/aggregation/transport/http/envelope.d.ts.map +1 -0
  113. package/dist/types/core/aggregation/transport/http/errors.d.ts +9 -0
  114. package/dist/types/core/aggregation/transport/http/errors.d.ts.map +1 -0
  115. package/dist/types/core/aggregation/transport/http/inbox-buffer.d.ts +32 -0
  116. package/dist/types/core/aggregation/transport/http/inbox-buffer.d.ts.map +1 -0
  117. package/dist/types/core/aggregation/transport/http/index.d.ts +12 -0
  118. package/dist/types/core/aggregation/transport/http/index.d.ts.map +1 -0
  119. package/dist/types/core/aggregation/transport/http/nonce-cache.d.ts +26 -0
  120. package/dist/types/core/aggregation/transport/http/nonce-cache.d.ts.map +1 -0
  121. package/dist/types/core/aggregation/transport/http/protocol.d.ts +53 -0
  122. package/dist/types/core/aggregation/transport/http/protocol.d.ts.map +1 -0
  123. package/dist/types/core/aggregation/transport/http/rate-limiter.d.ts +41 -0
  124. package/dist/types/core/aggregation/transport/http/rate-limiter.d.ts.map +1 -0
  125. package/dist/types/core/aggregation/transport/http/request-auth.d.ts +50 -0
  126. package/dist/types/core/aggregation/transport/http/request-auth.d.ts.map +1 -0
  127. package/dist/types/core/aggregation/transport/http/server.d.ts +110 -0
  128. package/dist/types/core/aggregation/transport/http/server.d.ts.map +1 -0
  129. package/dist/types/core/aggregation/transport/http/sse-stream.d.ts +34 -0
  130. package/dist/types/core/aggregation/transport/http/sse-stream.d.ts.map +1 -0
  131. package/dist/types/core/aggregation/transport/http/sse-writer.d.ts +12 -0
  132. package/dist/types/core/aggregation/transport/http/sse-writer.d.ts.map +1 -0
  133. package/dist/types/core/aggregation/transport/index.d.ts +1 -0
  134. package/dist/types/core/aggregation/transport/index.d.ts.map +1 -1
  135. package/dist/types/core/aggregation/transport/nostr.d.ts +99 -1
  136. package/dist/types/core/aggregation/transport/nostr.d.ts.map +1 -1
  137. package/dist/types/core/aggregation/transport/transport.d.ts +26 -1
  138. package/dist/types/core/aggregation/transport/transport.d.ts.map +1 -1
  139. package/dist/types/core/beacon/beacon.d.ts +149 -22
  140. package/dist/types/core/beacon/beacon.d.ts.map +1 -1
  141. package/dist/types/core/beacon/cas-beacon.d.ts +3 -3
  142. package/dist/types/core/beacon/cas-beacon.d.ts.map +1 -1
  143. package/dist/types/core/beacon/singleton-beacon.d.ts +3 -3
  144. package/dist/types/core/beacon/singleton-beacon.d.ts.map +1 -1
  145. package/dist/types/core/beacon/smt-beacon.d.ts +3 -3
  146. package/dist/types/core/beacon/smt-beacon.d.ts.map +1 -1
  147. package/dist/types/core/beacon/utils.d.ts +2 -2
  148. package/dist/types/core/beacon/utils.d.ts.map +1 -1
  149. package/dist/types/core/updater.d.ts +27 -12
  150. package/dist/types/core/updater.d.ts.map +1 -1
  151. package/dist/types/did-btcr2.d.ts.map +1 -1
  152. package/dist/types/index.d.ts +2 -0
  153. package/dist/types/index.d.ts.map +1 -1
  154. package/package.json +5 -7
  155. package/src/core/aggregation/beacon-strategy.ts +123 -0
  156. package/src/core/aggregation/cohort.ts +34 -8
  157. package/src/core/aggregation/logger.ts +33 -0
  158. package/src/core/aggregation/messages/base.ts +20 -5
  159. package/src/core/aggregation/messages/bodies.ts +223 -0
  160. package/src/core/aggregation/messages/factories.ts +1 -0
  161. package/src/core/aggregation/messages/index.ts +1 -0
  162. package/src/core/aggregation/participant.ts +40 -46
  163. package/src/core/aggregation/runner/events.ts +27 -3
  164. package/src/core/aggregation/runner/participant-runner.ts +41 -7
  165. package/src/core/aggregation/runner/service-runner.ts +227 -19
  166. package/src/core/aggregation/service.ts +189 -20
  167. package/src/core/aggregation/signing-session.ts +65 -7
  168. package/src/core/aggregation/transport/didcomm.ts +17 -0
  169. package/src/core/aggregation/transport/factory.ts +48 -12
  170. package/src/core/aggregation/transport/http/client.ts +409 -0
  171. package/src/core/aggregation/transport/http/envelope.ts +204 -0
  172. package/src/core/aggregation/transport/http/errors.ts +11 -0
  173. package/src/core/aggregation/transport/http/inbox-buffer.ts +53 -0
  174. package/src/core/aggregation/transport/http/index.ts +11 -0
  175. package/src/core/aggregation/transport/http/nonce-cache.ts +43 -0
  176. package/src/core/aggregation/transport/http/protocol.ts +57 -0
  177. package/src/core/aggregation/transport/http/rate-limiter.ts +75 -0
  178. package/src/core/aggregation/transport/http/request-auth.ts +164 -0
  179. package/src/core/aggregation/transport/http/server.ts +615 -0
  180. package/src/core/aggregation/transport/http/sse-stream.ts +121 -0
  181. package/src/core/aggregation/transport/http/sse-writer.ts +23 -0
  182. package/src/core/aggregation/transport/index.ts +1 -0
  183. package/src/core/aggregation/transport/nostr.ts +266 -23
  184. package/src/core/aggregation/transport/transport.ts +34 -1
  185. package/src/core/beacon/beacon.ts +411 -79
  186. package/src/core/beacon/cas-beacon.ts +4 -4
  187. package/src/core/beacon/singleton-beacon.ts +4 -4
  188. package/src/core/beacon/smt-beacon.ts +4 -4
  189. package/src/core/beacon/utils.ts +16 -11
  190. package/src/core/updater.ts +113 -67
  191. package/src/did-btcr2.ts +0 -5
  192. package/src/index.ts +2 -0
  193. package/src/utils/did-document.ts +2 -2
@@ -0,0 +1,62 @@
1
+ import { canonicalize } from '@did-btcr2/common';
2
+ import { blockHash, didToIndex, hashToHex, hexToHash, verifySerializedProof } from '@did-btcr2/smt';
3
+ const CAS_STRATEGY = {
4
+ type: 'CASBeacon',
5
+ buildAggregatedData(cohort) {
6
+ cohort.buildCASAnnouncement();
7
+ },
8
+ getDistributePayload(cohort) {
9
+ return { casAnnouncement: cohort.casAnnouncement };
10
+ },
11
+ validateParticipantView({ participantDid, expectedHash, body }) {
12
+ const casAnnouncement = body.casAnnouncement;
13
+ if (!casAnnouncement)
14
+ return { matches: false };
15
+ return {
16
+ matches: casAnnouncement[participantDid] === expectedHash,
17
+ casAnnouncement,
18
+ };
19
+ },
20
+ };
21
+ const SMT_STRATEGY = {
22
+ type: 'SMTBeacon',
23
+ buildAggregatedData(cohort) {
24
+ cohort.buildSMTTree();
25
+ },
26
+ getDistributePayload(cohort, participantDid) {
27
+ const proof = cohort.smtProofs?.get(participantDid);
28
+ return { smtProof: proof };
29
+ },
30
+ validateParticipantView({ participantDid, submittedUpdate, body }) {
31
+ const smtProof = body.smtProof;
32
+ if (!smtProof?.updateId || !smtProof?.nonce)
33
+ return { matches: false };
34
+ // Verify updateId matches the canonicalized update hash
35
+ const canonicalBytes = new TextEncoder().encode(canonicalize(submittedUpdate));
36
+ const expectedUpdateId = hashToHex(blockHash(canonicalBytes));
37
+ if (smtProof.updateId !== expectedUpdateId) {
38
+ return { matches: false, smtProof };
39
+ }
40
+ // Verify Merkle inclusion
41
+ const index = didToIndex(participantDid);
42
+ const candidateHash = blockHash(blockHash(hexToHash(smtProof.nonce)), hexToHash(smtProof.updateId));
43
+ return {
44
+ matches: verifySerializedProof(smtProof, index, candidateHash),
45
+ smtProof,
46
+ };
47
+ },
48
+ };
49
+ /** Registered strategies keyed by `beaconType` string. */
50
+ const STRATEGIES = new Map([
51
+ [CAS_STRATEGY.type, CAS_STRATEGY],
52
+ [SMT_STRATEGY.type, SMT_STRATEGY],
53
+ ]);
54
+ /** Register a custom beacon strategy. Overwrites any existing entry with the same type. */
55
+ export function registerBeaconStrategy(strategy) {
56
+ STRATEGIES.set(strategy.type, strategy);
57
+ }
58
+ /** Look up a registered beacon strategy by type, or undefined if not registered. */
59
+ export function getBeaconStrategy(type) {
60
+ return STRATEGIES.get(type);
61
+ }
62
+ //# sourceMappingURL=beacon-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beacon-strategy.js","sourceRoot":"","sources":["../../../../src/core/aggregation/beacon-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAqDpG,MAAM,YAAY,GAA4B;IAC5C,IAAI,EAAG,WAAW;IAElB,mBAAmB,CAAC,MAAM;QACxB,MAAM,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,oBAAoB,CAAC,MAAM;QACzB,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;IACrD,CAAC;IAED,uBAAuB,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAG,CAAC,eAAe;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/C,OAAO;YACL,OAAO,EAAG,eAAe,CAAC,cAAc,CAAC,KAAK,YAAY;YAC1D,eAAe;SAChB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,YAAY,GAA4B;IAC5C,IAAI,EAAG,WAAW;IAElB,mBAAmB,CAAC,MAAM;QACxB,MAAM,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,oBAAoB,CAAC,MAAM,EAAE,cAAc;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;QACpD,OAAO,EAAE,QAAQ,EAAE,KAAuD,EAAE,CAAC;IAC/E,CAAC;IAED,uBAAuB,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAqD,CAAC;QAC5E,IAAG,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,QAAQ,EAAE,KAAK;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtE,wDAAwD;QACxD,MAAM,cAAc,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,eAAqD,CAAC,CAAC,CAAC;QACrH,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9D,IAAG,QAAQ,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACtC,CAAC;QACD,0BAA0B;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpG,OAAO;YACL,OAAO,EAAG,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC;YAC/D,QAAQ;SACT,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,0DAA0D;AAC1D,MAAM,UAAU,GAAyC,IAAI,GAAG,CAAC;IAC/D,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC;IACjC,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC;CAClC,CAAC,CAAC;AAEH,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB,CAAC,QAAiC;IACtE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { canonicalHash, canonicalize, hash } from '@did-btcr2/common';
2
2
  import { BTCR2MerkleTree } from '@did-btcr2/smt';
3
+ import { schnorr } from '@noble/curves/secp256k1.js';
3
4
  import { hexToBytes, randomBytes } from '@noble/hashes/utils';
5
+ import { p2tr } from '@scure/btc-signer';
4
6
  import { keyAggExport, keyAggregate, sortKeys } from '@scure/btc-signer/musig2';
5
- import { crypto as btcCrypto, payments } from 'bitcoinjs-lib';
6
7
  import { AggregationCohortError } from './errors.js';
7
8
  /**
8
9
  * Represents an Aggregation Cohort — a set of Aggregation Participants who
@@ -30,10 +31,21 @@ export class AggregationCohort {
30
31
  beaconType;
31
32
  /** List of participant DIDs that have been accepted into the cohort. */
32
33
  participants = [];
34
+ /**
35
+ * Mapping from participant DID → their compressed secp256k1 public key.
36
+ * Distinct from {@link cohortKeys} (which is sorted per BIP-327) — this lets
37
+ * callers look up a participant's key without knowing their position in the
38
+ * sorted array. Populated by the service at `acceptParticipant` time.
39
+ */
40
+ participantKeys = new Map();
33
41
  /** Sorted list of cohort participants' compressed public keys. */
34
42
  #cohortKeys = [];
35
- /** Taproot tweak (BIP-341 key-path-only). */
36
- trMerkleRoot = new Uint8Array();
43
+ /**
44
+ * BIP-341 TapTweak — `taggedHash("TapTweak", internalPubkey)` for a key-path-only
45
+ * Taproot output. Despite prior naming, this is NOT a Merkle root: key-path-only
46
+ * spends have no script tree.
47
+ */
48
+ tapTweak = new Uint8Array();
37
49
  /** The n-of-n MuSig2 Taproot beacon address. */
38
50
  beaconAddress = '';
39
51
  /** Pending DID updates submitted by participants, keyed by DID. */
@@ -64,7 +76,7 @@ export class AggregationCohort {
64
76
  }
65
77
  /**
66
78
  * Computes the n-of-n MuSig2 Taproot beacon address from cohort keys.
67
- * Sets `trMerkleRoot` to the BIP-341 key-path-only tweak.
79
+ * Sets `tapTweak` to the BIP-341 key-path-only tweak.
68
80
  */
69
81
  computeBeaconAddress() {
70
82
  if (this.#cohortKeys.length === 0) {
@@ -72,10 +84,10 @@ export class AggregationCohort {
72
84
  }
73
85
  const keyAggContext = keyAggregate(this.#cohortKeys);
74
86
  const aggPubkey = keyAggExport(keyAggContext);
75
- const payment = payments.p2tr({ internalPubkey: aggPubkey });
76
- // BIP-341: key-path-only P2TR has no script tree, so payment.hash is null.
77
- // Compute the tweak: taggedHash("TapTweak", internalPubkey).
78
- this.trMerkleRoot = payment.hash ?? btcCrypto.taggedHash('TapTweak', aggPubkey);
87
+ const payment = p2tr(aggPubkey);
88
+ // BIP-341: key-path-only P2TR has no script tree. Compute the tweak:
89
+ // taggedHash("TapTweak", internalPubkey).
90
+ this.tapTweak = schnorr.utils.taggedHash('TapTweak', aggPubkey);
79
91
  if (!payment.address) {
80
92
  throw new AggregationCohortError('Failed to compute Taproot address', 'BEACON_ADDRESS_ERROR', { cohortId: this.id });
81
93
  }
@@ -97,6 +109,17 @@ export class AggregationCohort {
97
109
  throw new AggregationCohortError(`Computed beacon address ${computed} does not match expected ${expectedBeaconAddress}.`, 'BEACON_ADDRESS_MISMATCH', { cohortId: this.id, computed, expected: expectedBeaconAddress });
98
110
  }
99
111
  }
112
+ /**
113
+ * Returns the position of a participant's public key in the sorted
114
+ * {@link cohortKeys} array, or -1 if the participant is not in the cohort.
115
+ * Required by MuSig2 partial-sig verification which indexes by signer position.
116
+ */
117
+ indexOfParticipant(did) {
118
+ const pk = this.participantKeys.get(did);
119
+ if (!pk)
120
+ return -1;
121
+ return this.#cohortKeys.findIndex(k => k.length === pk.length && k.every((b, i) => b === pk[i]));
122
+ }
100
123
  addUpdate(participantDid, signedUpdate) {
101
124
  if (!this.participants.includes(participantDid)) {
102
125
  throw new AggregationCohortError(`Participant ${participantDid} is not in cohort ${this.id}.`, 'UNKNOWN_PARTICIPANT', { cohortId: this.id, participantDid });
@@ -1 +1 @@
1
- {"version":3,"file":"cohort.js","sourceRoot":"","sources":["../../../../src/core/aggregation/cohort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cohort.js","sourceRoot":"","sources":["../../../../src/core/aggregation/cohort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** Console-backed logger. Default for runners and transports. */
2
+ export const CONSOLE_LOGGER = {
3
+ debug: (msg, ...args) => console.debug(msg, ...args),
4
+ info: (msg, ...args) => console.info(msg, ...args),
5
+ warn: (msg, ...args) => console.warn(msg, ...args),
6
+ error: (msg, ...args) => console.error(msg, ...args),
7
+ };
8
+ /** No-op logger. Useful for tests and production environments with own logging pipeline. */
9
+ export const SILENT_LOGGER = {
10
+ debug: () => { },
11
+ info: () => { },
12
+ warn: () => { },
13
+ error: () => { },
14
+ };
15
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/core/aggregation/logger.ts"],"names":[],"mappings":"AAkBA,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,KAAK,EAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IACrD,IAAI,EAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IACpD,IAAI,EAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IACpD,KAAK,EAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;CACtD,CAAC;AAEF,4FAA4F;AAC5F,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,KAAK,EAAG,GAAG,EAAE,GAAE,CAAC;IAChB,IAAI,EAAI,GAAG,EAAE,GAAE,CAAC;IAChB,IAAI,EAAI,GAAG,EAAE,GAAE,CAAC;IAChB,KAAK,EAAG,GAAG,EAAE,GAAE,CAAC;CACjB,CAAC"}
@@ -1,10 +1,20 @@
1
+ /**
2
+ * Current on-the-wire protocol version.
3
+ *
4
+ * Receivers reject messages with an unknown (mismatched) version. Bumping this
5
+ * requires coordinated updates across all participants and any intermediate
6
+ * relays that inspect message content.
7
+ */
8
+ export const AGGREGATION_WIRE_VERSION = 1;
1
9
  export class BaseMessage {
2
10
  type;
11
+ version;
3
12
  to;
4
13
  from;
5
14
  body;
6
- constructor({ type, to, from, body }) {
15
+ constructor({ type, version, to, from, body }) {
7
16
  this.type = type;
17
+ this.version = version ?? AGGREGATION_WIRE_VERSION;
8
18
  this.to = to;
9
19
  this.from = from;
10
20
  this.body = body;
@@ -16,6 +26,7 @@ export class BaseMessage {
16
26
  toJSON() {
17
27
  return {
18
28
  type: this.type,
29
+ version: this.version,
19
30
  to: this.to,
20
31
  from: this.from,
21
32
  body: this.body
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/messages/base.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,WAAW;IACf,IAAI,CAAS;IACb,EAAE,CAAU;IACZ,IAAI,CAAS;IACb,IAAI,CAAY;IAEvB,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAQ;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,OAAO;YACL,IAAI,EAAG,IAAI,CAAC,IAAI;YAChB,EAAE,EAAK,IAAI,CAAC,EAAE;YACd,IAAI,EAAG,IAAI,CAAC,IAAI;YAChB,IAAI,EAAG,IAAI,CAAC,IAAI;SACjB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/messages/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAmC1C,MAAM,OAAO,WAAW;IACf,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,EAAE,CAAU;IACZ,IAAI,CAAS;IACb,IAAI,CAAY;IAEvB,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAQ;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,wBAAwB,CAAC;QACnD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,OAAO;YACL,IAAI,EAAM,IAAI,CAAC,IAAI;YACnB,OAAO,EAAG,IAAI,CAAC,OAAO;YACtB,EAAE,EAAQ,IAAI,CAAC,EAAE;YACjB,IAAI,EAAM,IAAI,CAAC,IAAI;YACnB,IAAI,EAAM,IAAI,CAAC,IAAI;SACpB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Per-message-type body interfaces and a discriminated {@link AggregationMessage}
3
+ * union.
4
+ *
5
+ * {@link BaseBody} remains the superset-of-all-fields body type used by the
6
+ * raw {@link BaseMessage} class (see `base.ts`). The narrow interfaces here
7
+ * describe what each specific message type is *required* to carry and are
8
+ * exposed alongside type guards for consumers who want compile-time narrowing.
9
+ *
10
+ * Guards validate both `type` and the presence of required body fields so they
11
+ * are safe to use on messages that have round-tripped through JSON / a relay.
12
+ */
13
+ import { AGGREGATED_NONCE, AUTHORIZATION_REQUEST, COHORT_ADVERT, COHORT_OPT_IN, COHORT_OPT_IN_ACCEPT, COHORT_READY, DISTRIBUTE_AGGREGATED_DATA, NONCE_CONTRIBUTION, SIGNATURE_AUTHORIZATION, SUBMIT_UPDATE, VALIDATION_ACK, } from './constants.js';
14
+ // ── Type guards ───────────────────────────────────────────────────────────
15
+ // Each guard validates `type` plus required body fields so it's safe to use
16
+ // on messages that have round-tripped through JSON / a relay.
17
+ const hasStr = (b, k) => !!b && typeof b[k] === 'string';
18
+ const hasNum = (b, k) => !!b && typeof b[k] === 'number';
19
+ const hasBool = (b, k) => !!b && typeof b[k] === 'boolean';
20
+ const hasBytes = (b, k) => !!b && b[k] instanceof Uint8Array;
21
+ const hasBytesArray = (b, k) => {
22
+ const v = b ? b[k] : undefined;
23
+ return Array.isArray(v) && v.every(x => x instanceof Uint8Array);
24
+ };
25
+ export function isCohortAdvertMessage(m) {
26
+ return m.type === COHORT_ADVERT
27
+ && hasStr(m.body, 'cohortId')
28
+ && hasNum(m.body, 'cohortSize')
29
+ && hasStr(m.body, 'beaconType')
30
+ && hasStr(m.body, 'network')
31
+ && hasBytes(m.body, 'communicationPk');
32
+ }
33
+ export function isCohortOptInMessage(m) {
34
+ return m.type === COHORT_OPT_IN
35
+ && hasStr(m.body, 'cohortId')
36
+ && hasBytes(m.body, 'participantPk')
37
+ && hasBytes(m.body, 'communicationPk');
38
+ }
39
+ export function isCohortOptInAcceptMessage(m) {
40
+ return m.type === COHORT_OPT_IN_ACCEPT && hasStr(m.body, 'cohortId');
41
+ }
42
+ export function isCohortReadyMessage(m) {
43
+ return m.type === COHORT_READY
44
+ && hasStr(m.body, 'cohortId')
45
+ && hasStr(m.body, 'beaconAddress')
46
+ && hasBytesArray(m.body, 'cohortKeys');
47
+ }
48
+ export function isSubmitUpdateMessage(m) {
49
+ return m.type === SUBMIT_UPDATE
50
+ && hasStr(m.body, 'cohortId')
51
+ && !!m.body && typeof m.body.signedUpdate === 'object';
52
+ }
53
+ export function isDistributeAggregatedDataMessage(m) {
54
+ return m.type === DISTRIBUTE_AGGREGATED_DATA
55
+ && hasStr(m.body, 'cohortId')
56
+ && hasStr(m.body, 'beaconType')
57
+ && hasStr(m.body, 'signalBytesHex');
58
+ }
59
+ export function isValidationAckMessage(m) {
60
+ return m.type === VALIDATION_ACK
61
+ && hasStr(m.body, 'cohortId')
62
+ && hasBool(m.body, 'approved');
63
+ }
64
+ export function isAuthorizationRequestMessage(m) {
65
+ return m.type === AUTHORIZATION_REQUEST
66
+ && hasStr(m.body, 'cohortId')
67
+ && hasStr(m.body, 'sessionId')
68
+ && hasStr(m.body, 'pendingTx')
69
+ && hasStr(m.body, 'prevOutScriptHex')
70
+ && hasStr(m.body, 'prevOutValue');
71
+ }
72
+ export function isNonceContributionMessage(m) {
73
+ return m.type === NONCE_CONTRIBUTION
74
+ && hasStr(m.body, 'cohortId')
75
+ && hasStr(m.body, 'sessionId')
76
+ && hasBytes(m.body, 'nonceContribution');
77
+ }
78
+ export function isAggregatedNonceMessage(m) {
79
+ return m.type === AGGREGATED_NONCE
80
+ && hasStr(m.body, 'cohortId')
81
+ && hasStr(m.body, 'sessionId')
82
+ && hasBytes(m.body, 'aggregatedNonce');
83
+ }
84
+ export function isSignatureAuthorizationMessage(m) {
85
+ return m.type === SIGNATURE_AUTHORIZATION
86
+ && hasStr(m.body, 'cohortId')
87
+ && hasStr(m.body, 'sessionId')
88
+ && hasBytes(m.body, 'partialSignature');
89
+ }
90
+ //# sourceMappingURL=bodies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bodies.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/messages/bodies.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/messages/factories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/messages/factories.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from './base.js';
2
+ export * from './bodies.js';
2
3
  export * from './constants.js';
3
4
  export * from './factories.js';
4
5
  export * from './guards.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/messages/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/aggregation/messages/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -1,9 +1,10 @@
1
- import { canonicalHash, canonicalize } from '@did-btcr2/common';
2
- import { blockHash, didToIndex, hashToHex, hexToHash, verifySerializedProof } from '@did-btcr2/smt';
3
- import { bytesToHex } from '@noble/hashes/utils';
4
- import { Transaction } from 'bitcoinjs-lib';
1
+ import { canonicalHash } from '@did-btcr2/common';
2
+ import { bytesToHex, hexToBytes } from '@noble/hashes/utils';
3
+ import { Transaction } from '@scure/btc-signer';
4
+ import { getBeaconStrategy } from './beacon-strategy.js';
5
5
  import { AggregationCohort } from './cohort.js';
6
6
  import { AggregationParticipantError } from './errors.js';
7
+ import { AGGREGATION_WIRE_VERSION } from './messages/base.js';
7
8
  import { AGGREGATED_NONCE, AUTHORIZATION_REQUEST, COHORT_ADVERT, COHORT_OPT_IN_ACCEPT, COHORT_READY, DISTRIBUTE_AGGREGATED_DATA, } from './messages/constants.js';
8
9
  import { createCohortOptInMessage, createNonceContributionMessage, createSignatureAuthorizationMessage, createSubmitUpdateMessage, createValidationAckMessage, } from './messages/factories.js';
9
10
  import { ParticipantCohortPhase } from './phases.js';
@@ -32,6 +33,10 @@ export class AggregationParticipant {
32
33
  * outgoing messages — those come exclusively from action methods.
33
34
  */
34
35
  receive(message) {
36
+ // Reject messages whose wire version doesn't match what this build speaks.
37
+ if (message.version === undefined || message.version !== AGGREGATION_WIRE_VERSION) {
38
+ return;
39
+ }
35
40
  const type = message.type;
36
41
  switch (type) {
37
42
  case COHORT_ADVERT:
@@ -192,45 +197,28 @@ export class AggregationParticipant {
192
197
  if (!state.submittedUpdate)
193
198
  return;
194
199
  const beaconType = message.body?.beaconType;
200
+ if (!beaconType)
201
+ return;
202
+ const strategy = getBeaconStrategy(beaconType);
203
+ if (!strategy)
204
+ return;
195
205
  const signalBytesHex = message.body?.signalBytesHex ?? '';
196
206
  const expectedHash = canonicalHash(state.submittedUpdate);
197
- let matches = false;
198
- if (beaconType === 'CASBeacon') {
199
- const casAnnouncement = message.body?.casAnnouncement;
200
- if (casAnnouncement) {
201
- matches = casAnnouncement[this.did] === expectedHash;
202
- state.validation = {
203
- cohortId,
204
- beaconType,
205
- signalBytesHex,
206
- casAnnouncement,
207
- expectedHash,
208
- matches,
209
- };
210
- }
211
- }
212
- else if (beaconType === 'SMTBeacon') {
213
- const smtProof = message.body?.smtProof;
214
- if (smtProof?.updateId && smtProof?.nonce) {
215
- // Verify updateId matches the canonicalized update hash
216
- const canonicalBytes = new TextEncoder().encode(canonicalize(state.submittedUpdate));
217
- const expectedUpdateId = hashToHex(blockHash(canonicalBytes));
218
- if (smtProof.updateId === expectedUpdateId) {
219
- // Verify Merkle inclusion
220
- const index = didToIndex(this.did);
221
- const candidateHash = blockHash(blockHash(hexToHash(smtProof.nonce)), hexToHash(smtProof.updateId));
222
- matches = verifySerializedProof(smtProof, index, candidateHash);
223
- }
224
- state.validation = {
225
- cohortId,
226
- beaconType,
227
- signalBytesHex,
228
- smtProof,
229
- expectedHash,
230
- matches,
231
- };
232
- }
233
- }
207
+ const result = strategy.validateParticipantView({
208
+ participantDid: this.did,
209
+ submittedUpdate: state.submittedUpdate,
210
+ expectedHash,
211
+ body: message.body,
212
+ });
213
+ state.validation = {
214
+ cohortId,
215
+ beaconType,
216
+ signalBytesHex,
217
+ expectedHash,
218
+ matches: result.matches,
219
+ casAnnouncement: result.casAnnouncement,
220
+ smtProof: result.smtProof,
221
+ };
234
222
  state.phase = ParticipantCohortPhase.AwaitingValidation;
235
223
  }
236
224
  /**
@@ -286,13 +274,15 @@ export class AggregationParticipant {
286
274
  return;
287
275
  const sessionId = message.body?.sessionId;
288
276
  const pendingTxHex = message.body?.pendingTx;
277
+ const prevOutScriptHex = message.body?.prevOutScriptHex;
289
278
  const prevOutValue = message.body?.prevOutValue;
290
- if (!sessionId || !pendingTxHex || !prevOutValue)
279
+ if (!sessionId || !pendingTxHex || !prevOutScriptHex || !prevOutValue)
291
280
  return;
292
281
  state.signingRequest = {
293
282
  cohortId,
294
283
  sessionId,
295
284
  pendingTxHex,
285
+ prevOutScriptHex,
296
286
  prevOutValue,
297
287
  };
298
288
  state.phase = ParticipantCohortPhase.AwaitingSigning;
@@ -308,10 +298,13 @@ export class AggregationParticipant {
308
298
  if (!state.signingRequest || !state.cohort) {
309
299
  throw new AggregationParticipantError(`Cohort ${cohortId} missing signing request or cohort state.`, 'MISSING_STATE', { cohortId });
310
300
  }
311
- const tx = Transaction.fromHex(state.signingRequest.pendingTxHex);
312
- // Derive UTXO metadata for Taproot sighash (BIP-341).
313
- // The beacon TX's change output (index 0) uses the same Taproot address as the input.
314
- const prevOutScripts = tx.outs.length > 0 ? [tx.outs[0].script] : [];
301
+ const tx = Transaction.fromRaw(hexToBytes(state.signingRequest.pendingTxHex));
302
+ // Derive UTXO metadata for Taproot sighash (BIP-341). Use the script
303
+ // supplied by the service in AUTHORIZATION_REQUEST rather than reading
304
+ // the change output: input and change may use different scripts in future
305
+ // beacon designs, and the prevOutScript must be the UTXO script, not the
306
+ // change script.
307
+ const prevOutScripts = [hexToBytes(state.signingRequest.prevOutScriptHex)];
315
308
  const prevOutValues = [BigInt(state.signingRequest.prevOutValue)];
316
309
  const session = new BeaconSigningSession({
317
310
  id: state.signingRequest.sessionId,
@@ -1 +1 @@
1
- {"version":3,"file":"participant.js","sourceRoot":"","sources":["../../../../src/core/aggregation/participant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"participant.js","sourceRoot":"","sources":["../../../../src/core/aggregation/participant.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ var _a;
1
2
  import { AGGREGATED_NONCE, AUTHORIZATION_REQUEST, COHORT_ADVERT, COHORT_OPT_IN_ACCEPT, COHORT_READY, DISTRIBUTE_AGGREGATED_DATA, } from '../messages/constants.js';
2
3
  import { AggregationParticipant } from '../participant.js';
3
4
  import { ParticipantCohortPhase } from '../phases.js';
@@ -20,11 +21,7 @@ import { TypedEventEmitter } from './typed-emitter.js';
20
21
  * keys: myKeys,
21
22
  * shouldJoin: async (advert) => advert.beaconType === 'CASBeacon',
22
23
  * onProvideUpdate: async ({ beaconAddress }) => {
23
- <<<<<<< Updated upstream
24
- * return Update.sign(myDid, unsigned, vm, secretKey);
25
- =======
26
24
  * return Updater.sign(myDid, unsigned, vm, secretKey);
27
- >>>>>>> Stashed changes
28
25
  * },
29
26
  * });
30
27
  *
@@ -70,9 +67,28 @@ export class AggregationParticipantRunner extends TypedEventEmitter {
70
67
  async start() {
71
68
  this.#registerHandlers();
72
69
  }
73
- /** Stop the runner. Does not unregister transport handlers. */
70
+ /** Stop the runner and detach transport handlers. Safe to call repeatedly. */
74
71
  stop() {
75
72
  this.#stopped = true;
73
+ this.#unregisterHandlers();
74
+ }
75
+ /** Message types this runner listens for on the transport. */
76
+ static #HANDLED_MESSAGE_TYPES = [
77
+ COHORT_ADVERT,
78
+ COHORT_OPT_IN_ACCEPT,
79
+ COHORT_READY,
80
+ DISTRIBUTE_AGGREGATED_DATA,
81
+ AUTHORIZATION_REQUEST,
82
+ AGGREGATED_NONCE,
83
+ ];
84
+ /** Internal: detach from the transport. Safe to call repeatedly. */
85
+ #unregisterHandlers() {
86
+ if (!this.#handlersRegistered)
87
+ return;
88
+ this.#handlersRegistered = false;
89
+ for (const type of _a.#HANDLED_MESSAGE_TYPES) {
90
+ this.#transport.unregisterMessageHandler(this.#did, type);
91
+ }
76
92
  }
77
93
  /**
78
94
  * Single-shot helper: start, join the first cohort that passes `shouldJoin`,
@@ -80,7 +96,7 @@ export class AggregationParticipantRunner extends TypedEventEmitter {
80
96
  */
81
97
  static async joinFirst(options) {
82
98
  return new Promise((resolve, reject) => {
83
- const runner = new AggregationParticipantRunner(options);
99
+ const runner = new _a(options);
84
100
  runner.once('cohort-complete', (info) => {
85
101
  runner.stop();
86
102
  resolve(info);
@@ -262,7 +278,16 @@ export class AggregationParticipantRunner extends TypedEventEmitter {
262
278
  if (this.session.getCohortPhase(cohortId) === ParticipantCohortPhase.Complete) {
263
279
  const info = this.session.joinedCohorts.get(cohortId);
264
280
  if (info) {
265
- this.emit('cohort-complete', { cohortId, beaconAddress: info.beaconAddress });
281
+ // Surface the sidecar data the participant will need for future resolutions:
282
+ // the CAS Announcement map (CAS beacons) or their SMT inclusion proof.
283
+ const validation = this.session.pendingValidations.get(cohortId);
284
+ this.emit('cohort-complete', {
285
+ cohortId,
286
+ beaconAddress: info.beaconAddress,
287
+ beaconType: validation?.beaconType ?? '',
288
+ casAnnouncement: validation?.casAnnouncement,
289
+ smtProof: validation?.smtProof,
290
+ });
266
291
  }
267
292
  }
268
293
  }
@@ -283,4 +308,5 @@ export class AggregationParticipantRunner extends TypedEventEmitter {
283
308
  }
284
309
  }
285
310
  }
311
+ _a = AggregationParticipantRunner;
286
312
  //# sourceMappingURL=participant-runner.js.map