@did-btcr2/method 0.56.0 → 0.59.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 (63) hide show
  1. package/README.md +12 -4
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/browser.js +3 -3
  4. package/dist/browser.mjs +3 -3
  5. package/dist/cjs/index.js +183 -42
  6. package/dist/esm/core/beacon/beacon.js +19 -2
  7. package/dist/esm/core/beacon/beacon.js.map +1 -1
  8. package/dist/esm/core/beacon/cas-beacon.js +7 -6
  9. package/dist/esm/core/beacon/cas-beacon.js.map +1 -1
  10. package/dist/esm/core/beacon/factory.js +6 -4
  11. package/dist/esm/core/beacon/factory.js.map +1 -1
  12. package/dist/esm/core/beacon/signal-discovery.js +24 -3
  13. package/dist/esm/core/beacon/signal-discovery.js.map +1 -1
  14. package/dist/esm/core/beacon/singleton-beacon.js +2 -2
  15. package/dist/esm/core/beacon/singleton-beacon.js.map +1 -1
  16. package/dist/esm/core/beacon/smt-beacon.js +7 -6
  17. package/dist/esm/core/beacon/smt-beacon.js.map +1 -1
  18. package/dist/esm/core/did-sender-resolver.js +8 -2
  19. package/dist/esm/core/did-sender-resolver.js.map +1 -1
  20. package/dist/esm/core/resolver.js +79 -28
  21. package/dist/esm/core/resolver.js.map +1 -1
  22. package/dist/esm/core/updater.js +17 -4
  23. package/dist/esm/core/updater.js.map +1 -1
  24. package/dist/esm/did-btcr2.js +25 -8
  25. package/dist/esm/did-btcr2.js.map +1 -1
  26. package/dist/esm/utils/appendix.js +36 -5
  27. package/dist/esm/utils/appendix.js.map +1 -1
  28. package/dist/types/core/beacon/beacon.d.ts +10 -1
  29. package/dist/types/core/beacon/beacon.d.ts.map +1 -1
  30. package/dist/types/core/beacon/cas-beacon.d.ts +2 -1
  31. package/dist/types/core/beacon/cas-beacon.d.ts.map +1 -1
  32. package/dist/types/core/beacon/factory.d.ts +3 -1
  33. package/dist/types/core/beacon/factory.d.ts.map +1 -1
  34. package/dist/types/core/beacon/signal-discovery.d.ts +14 -0
  35. package/dist/types/core/beacon/signal-discovery.d.ts.map +1 -1
  36. package/dist/types/core/beacon/singleton-beacon.d.ts +1 -1
  37. package/dist/types/core/beacon/singleton-beacon.d.ts.map +1 -1
  38. package/dist/types/core/beacon/smt-beacon.d.ts +2 -1
  39. package/dist/types/core/beacon/smt-beacon.d.ts.map +1 -1
  40. package/dist/types/core/did-sender-resolver.d.ts.map +1 -1
  41. package/dist/types/core/interfaces.d.ts +13 -0
  42. package/dist/types/core/interfaces.d.ts.map +1 -1
  43. package/dist/types/core/resolver.d.ts +13 -0
  44. package/dist/types/core/resolver.d.ts.map +1 -1
  45. package/dist/types/core/updater.d.ts +11 -4
  46. package/dist/types/core/updater.d.ts.map +1 -1
  47. package/dist/types/did-btcr2.d.ts.map +1 -1
  48. package/dist/types/utils/appendix.d.ts +30 -4
  49. package/dist/types/utils/appendix.d.ts.map +1 -1
  50. package/package.json +5 -5
  51. package/src/core/beacon/beacon.ts +26 -4
  52. package/src/core/beacon/cas-beacon.ts +7 -6
  53. package/src/core/beacon/factory.ts +6 -4
  54. package/src/core/beacon/interfaces.ts +1 -1
  55. package/src/core/beacon/signal-discovery.ts +25 -3
  56. package/src/core/beacon/singleton-beacon.ts +2 -2
  57. package/src/core/beacon/smt-beacon.ts +7 -6
  58. package/src/core/did-sender-resolver.ts +10 -2
  59. package/src/core/interfaces.ts +14 -0
  60. package/src/core/resolver.ts +95 -29
  61. package/src/core/updater.ts +25 -5
  62. package/src/did-btcr2.ts +30 -9
  63. package/src/utils/appendix.ts +37 -5
package/dist/cjs/index.js CHANGED
@@ -32,6 +32,7 @@ __export(index_exports, {
32
32
  CASBeaconError: () => CASBeaconError,
33
33
  CHANGE_OUTPUT_VBYTES: () => CHANGE_OUTPUT_VBYTES,
34
34
  DEFAULT_FEE_ESTIMATOR: () => DEFAULT_FEE_ESTIMATOR,
35
+ DEFAULT_MIN_CONF: () => DEFAULT_MIN_CONF,
35
36
  DID_REGEX: () => DID_REGEX,
36
37
  DUST_LIMIT_SATS: () => DUST_LIMIT_SATS,
37
38
  DidBtcr2: () => DidBtcr2,
@@ -169,6 +170,9 @@ function opReturnScript(signalBytes) {
169
170
  return import_btc_signer.Script.encode(["RETURN", signalBytes]);
170
171
  }
171
172
  var SPENDABLE_DUST_LIMIT_SATS = 546;
173
+ function isConfirmedUtxo(utxo) {
174
+ return utxo.status.confirmed === true;
175
+ }
172
176
  function byDepthThenId(a, b) {
173
177
  if (a.status.block_height !== b.status.block_height) {
174
178
  return a.status.block_height - b.status.block_height;
@@ -184,7 +188,7 @@ function selectSpendableUtxo(utxos, address) {
184
188
  { address }
185
189
  );
186
190
  }
187
- const confirmed = utxos.filter((utxo) => utxo.status.confirmed === true);
191
+ const confirmed = utxos.filter(isConfirmedUtxo);
188
192
  const spendable = confirmed.filter((utxo) => utxo.value > SPENDABLE_DUST_LIMIT_SATS);
189
193
  if (!spendable.length) {
190
194
  const reason = confirmed.length === 0 ? `all ${utxos.length} UTXO(s) are unconfirmed` : `all ${confirmed.length} confirmed UTXO(s) are at or below the ${SPENDABLE_DUST_LIMIT_SATS}-sat dust limit`;
@@ -280,8 +284,18 @@ var SinglePartyBeacon = class {
280
284
  * The Beacon service configuration parsed from the DID Document.
281
285
  */
282
286
  service;
283
- constructor(service) {
287
+ /**
288
+ * The absolute did:btcr2 identifier this beacon instance serves.
289
+ *
290
+ * Injected by the caller rather than recovered from {@link service}. A beacon
291
+ * service `id` is permitted to be a relative DID URL (`#beacon-1`), which
292
+ * carries no DID to strip a fragment from, so deriving the subject from it is
293
+ * only correct for the absolute spelling.
294
+ */
295
+ did;
296
+ constructor(service, did) {
284
297
  this.service = service;
298
+ this.did = did;
285
299
  }
286
300
  /**
287
301
  * Build + sign + broadcast a singleton beacon signal transaction. The beacon
@@ -424,9 +438,10 @@ var CASBeacon = class extends SinglePartyBeacon {
424
438
  /**
425
439
  * Creates an instance of CASBeacon.
426
440
  * @param {BeaconService} service The service of the Beacon.
441
+ * @param {string} did The absolute did:btcr2 identifier this beacon serves.
427
442
  */
428
- constructor(service) {
429
- super({ ...service, type: "CASBeacon" });
443
+ constructor(service, did) {
444
+ super({ ...service, type: "CASBeacon" }, did);
430
445
  }
431
446
  /**
432
447
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-cas-beacon | 7.2.e.1 Process CAS Beacon}.
@@ -444,7 +459,7 @@ var CASBeacon = class extends SinglePartyBeacon {
444
459
  processSignals(signals, sidecar) {
445
460
  const updates = new Array();
446
461
  const needs = new Array();
447
- const did = this.service.id.split("#")[0];
462
+ const did = this.did;
448
463
  for (const signal of signals) {
449
464
  const announcementHash = signal.signalBytes;
450
465
  const casAnnouncement = sidecar.casMap.get(announcementHash);
@@ -497,7 +512,7 @@ var CASBeacon = class extends SinglePartyBeacon {
497
512
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
498
513
  */
499
514
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
500
- const did = this.service.id.split("#")[0];
515
+ const did = this.did;
501
516
  const updateHash = (0, import_common2.canonicalHash)(signedUpdate);
502
517
  const casAnnouncement = { [did]: updateHash };
503
518
  const announcementHash = (0, import_common2.hash)((0, import_common2.canonicalize)(casAnnouncement));
@@ -519,8 +534,8 @@ var SingletonBeacon = class extends SinglePartyBeacon {
519
534
  * Creates an instance of SingletonBeacon.
520
535
  * @param {BeaconService} service The BeaconService object representing the funded beacon to announce the update to.
521
536
  */
522
- constructor(service) {
523
- super({ ...service, type: "SingletonBeacon" });
537
+ constructor(service, did) {
538
+ super({ ...service, type: "SingletonBeacon" }, did);
524
539
  }
525
540
  /**
526
541
  * Processes an array of Beacon Signals associated with a Singleton Beacon Service.
@@ -575,9 +590,10 @@ var SMTBeacon = class extends SinglePartyBeacon {
575
590
  /**
576
591
  * Creates an instance of SMTBeacon.
577
592
  * @param {BeaconService} service The Beacon service.
593
+ * @param {string} did The absolute did:btcr2 identifier this beacon serves.
578
594
  */
579
- constructor(service) {
580
- super({ ...service, type: "SMTBeacon" });
595
+ constructor(service, did) {
596
+ super({ ...service, type: "SMTBeacon" }, did);
581
597
  }
582
598
  /**
583
599
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-smt-beacon | 7.2.e.1 Process SMT Beacon}.
@@ -595,7 +611,7 @@ var SMTBeacon = class extends SinglePartyBeacon {
595
611
  processSignals(signals, sidecar) {
596
612
  const updates = new Array();
597
613
  const needs = new Array();
598
- const did = this.service.id.split("#")[0];
614
+ const did = this.did;
599
615
  for (const signal of signals) {
600
616
  const smtProof = sidecar.smtMap.get(signal.signalBytes);
601
617
  if (!smtProof) {
@@ -659,7 +675,7 @@ var SMTBeacon = class extends SinglePartyBeacon {
659
675
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
660
676
  */
661
677
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
662
- const did = this.service.id.split("#")[0];
678
+ const did = this.did;
663
679
  const canonicalBytes = new TextEncoder().encode((0, import_common4.canonicalize)(signedUpdate));
664
680
  const nonce = (0, import_utils2.randomBytes)(32);
665
681
  const tree = new import_smt.BTCR2MerkleTree();
@@ -676,16 +692,18 @@ var BeaconFactory = class {
676
692
  /**
677
693
  * Establish a Beacon instance based on the provided service and optional sidecar data.
678
694
  * @param {BeaconService} service The beacon service configuration.
695
+ * @param {string} did The absolute did:btcr2 identifier the beacon serves. Supplied
696
+ * by the caller because a beacon service `id` may be a relative DID URL.
679
697
  * @returns {SinglePartyBeacon} The established Beacon instance.
680
698
  */
681
- static establish(service) {
699
+ static establish(service, did) {
682
700
  switch (service.type) {
683
701
  case "SingletonBeacon":
684
- return new SingletonBeacon(service);
702
+ return new SingletonBeacon(service, did);
685
703
  case "CASBeacon":
686
- return new CASBeacon(service);
704
+ return new CASBeacon(service, did);
687
705
  case "SMTBeacon":
688
- return new SMTBeacon(service);
706
+ return new SMTBeacon(service, did);
689
707
  default:
690
708
  throw new import_common5.MethodError("Invalid Beacon Type", "INVALID_BEACON_ERROR", service);
691
709
  }
@@ -706,14 +724,43 @@ var import_dids = require("@web5/dids");
706
724
  var import_common6 = require("@did-btcr2/common");
707
725
  var Appendix = class _Appendix {
708
726
  /**
709
- * Extracts a DID fragment from a given input
710
- * @param {unknown} input The input to extract the DID fragment from
711
- * @returns {string | undefined} The extracted DID fragment or undefined if not found
727
+ * Resolves a DID URL that may be written as a relative reference against the
728
+ * DID it appears under. DID Core permits the `id` of a verification method or
729
+ * service, and the entries of a verification relationship, to be a relative
730
+ * DID URL such as `#initialKey`; it denotes that fragment of `did`. Absolute
731
+ * DID URLs are returned unchanged, so both spellings of the same reference
732
+ * compare equal without discarding the DID being compared.
733
+ *
734
+ * @param {unknown} input The DID URL to resolve. Non-strings yield `undefined`.
735
+ * @param {string} did The DID the relative reference is resolved against.
736
+ * @returns {string | undefined} The absolute DID URL, or `undefined` if `input` is not a usable string.
712
737
  */
713
- static extractDidFragment(input) {
738
+ static absoluteDidUrl(input, did) {
714
739
  if (typeof input !== "string") return void 0;
715
740
  if (input.length === 0) return void 0;
716
- return input;
741
+ return input.startsWith("#") ? `${did}${input}` : input;
742
+ }
743
+ /**
744
+ * Resolves a verification relationship entry to the absolute DID URL of the method it
745
+ * names. A relationship entry is either a reference to a method defined elsewhere in the
746
+ * document, or a method embedded inline, which names itself with its own `id`; either
747
+ * spelling may be a relative DID URL.
748
+ *
749
+ * Every comparison of a relationship entry against a method id goes through this helper,
750
+ * on both the read path and the write path, so the two admit exactly the same spellings.
751
+ *
752
+ * Malformed entries yield `undefined` rather than a placeholder string, so two unusable
753
+ * values never compare equal to each other. Callers comparing a resolved entry must still
754
+ * reject an `undefined` target before comparing, or an unusable target matches an
755
+ * unusable entry.
756
+ *
757
+ * @param {unknown} entry The relationship entry: a reference, or an embedded method.
758
+ * @param {string} did The DID the relative reference is resolved against.
759
+ * @returns {string | undefined} The absolute DID URL, or `undefined` if unusable.
760
+ */
761
+ static relationshipMethodId(entry, did) {
762
+ const id = typeof entry === "object" && entry !== null && !Array.isArray(entry) ? entry.id : entry;
763
+ return _Appendix.absoluteDidUrl(id, did);
717
764
  }
718
765
  /**
719
766
  * Validates that the given object is a DidVerificationMethod
@@ -1200,6 +1247,20 @@ var BeaconSignalDiscovery = class _BeaconSignalDiscovery {
1200
1247
  /**
1201
1248
  * Retrieves the beacon signals for the given array of BeaconService objects
1202
1249
  * using an esplora/electrs REST API connection via a bitcoin I/O driver.
1250
+ *
1251
+ * The address listing includes mempool transactions. The method skips a
1252
+ * transaction whose `status.confirmed` is not `true`. A mempool transaction
1253
+ * has no block height and no block time, so it cannot carry block metadata.
1254
+ * The specification also says that a resolver must not process an
1255
+ * unconfirmed transaction. An absent flag counts as unconfirmed, as it does
1256
+ * for UTXO selection. The check runs before the OP_RETURN parse, so a
1257
+ * mempool transaction costs no prevout fetch. The {@link fullnode} path
1258
+ * needs no such check: it walks mined blocks only.
1259
+ *
1260
+ * The `confirmations` count uses the block count fetched before the listing.
1261
+ * A block that arrives between the two calls yields a count of `0` for its
1262
+ * transactions. The resolver then excludes them, because its minimum is at
1263
+ * least `1`. An under-count is the safe direction, so keep that order.
1203
1264
  * @param {Array<BeaconService>} beaconServices Array of BeaconService objects to retrieve signals for
1204
1265
  * @param {BitcoinConnection} bitcoin Bitcoin network connection to use for REST calls
1205
1266
  * @returns {Promise<Map<BeaconService, Array<BeaconSignal>>>} Map of beacon service to its discovered signals
@@ -1215,6 +1276,10 @@ var BeaconSignalDiscovery = class _BeaconSignalDiscovery {
1215
1276
  continue;
1216
1277
  }
1217
1278
  for (const beaconSignal of beaconSignals) {
1279
+ const status = beaconSignal.status;
1280
+ if (status.confirmed !== true) {
1281
+ continue;
1282
+ }
1218
1283
  const lastSignalVout = beaconSignal.vout.slice(-1)[0];
1219
1284
  if (!lastSignalVout) {
1220
1285
  continue;
@@ -1226,14 +1291,14 @@ var BeaconSignalDiscovery = class _BeaconSignalDiscovery {
1226
1291
  if (!await _BeaconSignalDiscovery.spendsFromAddress(beaconSignal, beaconAddress, bitcoin)) {
1227
1292
  continue;
1228
1293
  }
1229
- const confirmations = currentBlockCount - beaconSignal.status.block_height + 1;
1294
+ const confirmations = currentBlockCount - status.block_height + 1;
1230
1295
  beaconServiceSignals.get(beaconService)?.push({
1231
1296
  tx: beaconSignal,
1232
1297
  signalBytes: updateHash,
1233
1298
  blockMetadata: {
1234
1299
  confirmations,
1235
- height: beaconSignal.status.block_height,
1236
- time: beaconSignal.status.block_time
1300
+ height: status.block_height,
1301
+ time: status.block_time
1237
1302
  }
1238
1303
  });
1239
1304
  }
@@ -1819,6 +1884,7 @@ var Updater = class _Updater {
1819
1884
  }
1820
1885
  const id = verificationMethod.id.slice(hashIdx);
1821
1886
  const multikey = import_cryptosuite.SchnorrMultikey.fromSigner(id, controller, signer);
1887
+ const absoluteMethodId = hashIdx === 0 ? `${did}${id}` : verificationMethod.id;
1822
1888
  const signerKey = multikey.publicKey.multibase.encoded;
1823
1889
  if (verificationMethod.publicKeyMultibase && signerKey !== verificationMethod.publicKeyMultibase) {
1824
1890
  throw new import_common11.UpdateError(
@@ -1840,7 +1906,12 @@ var Updater = class _Updater {
1840
1906
  ],
1841
1907
  cryptosuite: "bip340-jcs-2025",
1842
1908
  type: "DataIntegrityProof",
1843
- verificationMethod: verificationMethod.id,
1909
+ // The proof names the signing method by absolute DID URL, even when the document
1910
+ // spells that method's own id relatively: a proof travels apart from the document
1911
+ // that defines the method, so a bare `#initialKey` in it resolves against nothing.
1912
+ // For a document that already spells its ids absolutely this is the id unchanged,
1913
+ // so proofs over such documents are byte-identical to before.
1914
+ verificationMethod: absoluteMethodId,
1844
1915
  proofPurpose: "capabilityInvocation",
1845
1916
  capability: `urn:zcap:root:${encodeURIComponent(did)}`,
1846
1917
  capabilityAction: "Write"
@@ -1853,6 +1924,8 @@ var Updater = class _Updater {
1853
1924
  * Announces a signed update to the Bitcoin blockchain via the specified beacon.
1854
1925
  *
1855
1926
  * @param {BeaconService} beaconService The beacon service to broadcast through.
1927
+ * @param {string} did The DID being updated. Required because a beacon service
1928
+ * `id` may be a relative DID URL and so cannot supply the subject.
1856
1929
  * @param {SignedBTCR2Update} update The signed update to announce.
1857
1930
  * @param {Signer} signer Signer that produces the ECDSA signature for the Bitcoin transaction.
1858
1931
  * @param {BitcoinConnection} bitcoin The Bitcoin network connection.
@@ -1862,8 +1935,8 @@ var Updater = class _Updater {
1862
1935
  * @returns {Promise<BroadcastResult>} The broadcast artifacts: the signed update, the signal
1863
1936
  * txid, and any per-beacon-type sidecar data (CAS announcement / SMT proof).
1864
1937
  */
1865
- static async announce(beaconService, update, signer, bitcoin, options) {
1866
- const beacon = BeaconFactory.establish(beaconService);
1938
+ static async announce(beaconService, did, update, signer, bitcoin, options) {
1939
+ const beacon = BeaconFactory.establish(beaconService, did);
1867
1940
  return beacon.broadcastSignal(update, signer, bitcoin, options);
1868
1941
  }
1869
1942
  // Private instance wrappers
@@ -1922,7 +1995,8 @@ var Updater = class _Updater {
1922
1995
  needs: [{
1923
1996
  kind: "NeedBroadcast",
1924
1997
  beaconService: this.#beaconService,
1925
- signedUpdate: this.#state.signedUpdate
1998
+ signedUpdate: this.#state.signedUpdate,
1999
+ did: this.#sourceDocument.id
1926
2000
  }]
1927
2001
  };
1928
2002
  }
@@ -2064,7 +2138,8 @@ var DidBtcr2 = class {
2064
2138
  versionId: resolutionOptions.versionId,
2065
2139
  versionTime: resolutionOptions.versionTime,
2066
2140
  genesisDocument: resolutionOptions.sidecar?.genesisDocument,
2067
- maxDiscoveryRounds: resolutionOptions.maxDiscoveryRounds
2141
+ maxDiscoveryRounds: resolutionOptions.maxDiscoveryRounds,
2142
+ minConf: resolutionOptions.minConf
2068
2143
  });
2069
2144
  }
2070
2145
  /**
@@ -2097,7 +2172,11 @@ var DidBtcr2 = class {
2097
2172
  verificationMethodId,
2098
2173
  beaconId
2099
2174
  }) {
2100
- if (!sourceDocument.capabilityInvocation?.some((vr) => vr === verificationMethodId)) {
2175
+ const authorizedMethodId = Appendix.relationshipMethodId(verificationMethodId, sourceDocument.id);
2176
+ const authorized = authorizedMethodId !== void 0 && sourceDocument.capabilityInvocation?.some(
2177
+ (entry) => Appendix.relationshipMethodId(entry, sourceDocument.id) === authorizedMethodId
2178
+ );
2179
+ if (!authorized) {
2101
2180
  throw new import_common12.UpdateError(
2102
2181
  "Invalid verificationMethodId: not authorized for capabilityInvocation",
2103
2182
  import_common12.INVALID_DID_DOCUMENT,
@@ -2126,7 +2205,8 @@ var DidBtcr2 = class {
2126
2205
  verificationMethod
2127
2206
  );
2128
2207
  }
2129
- const beaconService = sourceDocument.service.filter((service) => service.id === beaconId).filter((service) => !!service).shift();
2208
+ const targetBeaconId = Appendix.absoluteDidUrl(beaconId, sourceDocument.id);
2209
+ const beaconService = sourceDocument.service.filter((service) => targetBeaconId !== void 0 && Appendix.absoluteDidUrl(service.id, sourceDocument.id) === targetBeaconId).filter((service) => !!service).shift();
2130
2210
  if (!beaconService) {
2131
2211
  throw new import_common12.UpdateError(
2132
2212
  "No beacon service found for provided beaconId",
@@ -2158,8 +2238,9 @@ var DidBtcr2 = class {
2158
2238
  if (parsedDid && parsedDid.method !== this.methodName) {
2159
2239
  throw new import_common12.MethodError(`Method not supported: ${parsedDid.method}`, import_common12.METHOD_NOT_SUPPORTED, { identifier: didDocument.id });
2160
2240
  }
2161
- const verificationMethod = didDocument.verificationMethod?.find(
2162
- (vm) => Appendix.extractDidFragment(vm.id) === (Appendix.extractDidFragment(methodId) ?? Appendix.extractDidFragment(didDocument.assertionMethod?.[0]))
2241
+ const targetId = Appendix.absoluteDidUrl(methodId, didDocument.id) ?? Appendix.relationshipMethodId(didDocument.assertionMethod?.[0], didDocument.id);
2242
+ const verificationMethod = targetId === void 0 ? void 0 : didDocument.verificationMethod?.find(
2243
+ (vm) => Appendix.absoluteDidUrl(vm.id, didDocument.id) === targetId
2163
2244
  );
2164
2245
  if (!(verificationMethod && verificationMethod.publicKeyMultibase)) {
2165
2246
  throw new import_dids2.DidError(
@@ -2173,6 +2254,7 @@ var DidBtcr2 = class {
2173
2254
 
2174
2255
  // src/core/resolver.ts
2175
2256
  var import_utils6 = require("@noble/curves/utils.js");
2257
+ var DEFAULT_MIN_CONF = 6;
2176
2258
  function isRecord(value) {
2177
2259
  return typeof value === "object" && value !== null && !Array.isArray(value);
2178
2260
  }
@@ -2187,10 +2269,15 @@ function isSMTProof(value) {
2187
2269
  if (!isRecord(value)) return false;
2188
2270
  return typeof value.id === "string" && typeof value.collapsed === "string" && Array.isArray(value.hashes);
2189
2271
  }
2190
- function relationshipMethodId(documentId, entry) {
2191
- const id = isRecord(entry) ? entry.id : entry;
2192
- if (typeof id !== "string" || id.length === 0) return void 0;
2193
- return id.startsWith("#") ? `${documentId}${id}` : id;
2272
+ function validateMinConf(value) {
2273
+ if (value === void 0) return DEFAULT_MIN_CONF;
2274
+ if (typeof value === "number" && Number.isInteger(value) && value >= 1) return value;
2275
+ const shown = typeof value === "string" ? JSON.stringify(value) : String(value);
2276
+ throw new import_common13.ResolveError(
2277
+ `Invalid resolution option minConf: expected a positive integer (minimum 1), got ${shown}.`,
2278
+ import_common13.INVALID_OPTIONS,
2279
+ { minConf: value }
2280
+ );
2194
2281
  }
2195
2282
  var Resolver = class _Resolver {
2196
2283
  // --- Immutable inputs ---
@@ -2231,6 +2318,14 @@ var Resolver = class _Resolver {
2231
2318
  #maxDiscoveryRounds;
2232
2319
  /** Count of beacon-discovery passes driven by updates adding new beacon services. */
2233
2320
  #discoveryRounds = 0;
2321
+ /**
2322
+ * Minimum block confirmations a Beacon Signal must have before this resolver
2323
+ * processes it: `ResolutionOptions.minConf`, default {@link DEFAULT_MIN_CONF}.
2324
+ * Applied at signal intake in the BeaconProcess phase. A signal below the
2325
+ * threshold is excluded from the resolution; the rest of the signals are
2326
+ * processed.
2327
+ */
2328
+ #minConf;
2234
2329
  /**
2235
2330
  * @internal Use {@link DidBtcr2.resolve} to create instances.
2236
2331
  */
@@ -2242,6 +2337,7 @@ var Resolver = class _Resolver {
2242
2337
  this.#versionTime = options?.versionTime;
2243
2338
  const rounds = options?.maxDiscoveryRounds;
2244
2339
  this.#maxDiscoveryRounds = typeof rounds === "number" && rounds > 0 ? rounds : Infinity;
2340
+ this.#minConf = validateMinConf(options?.minConf);
2245
2341
  if (options?.genesisDocument) {
2246
2342
  this.#providedGenesisDocument = options.genesisDocument;
2247
2343
  }
@@ -2331,6 +2427,10 @@ var Resolver = class _Resolver {
2331
2427
  * Version counter and update-hash history carried from earlier discovery rounds.
2332
2428
  * Standalone callers omit it and start fresh at version 1 with an empty history.
2333
2429
  * @returns {DidResolutionResponse} The updated DID Document, number of confirmations, and version id.
2430
+ *
2431
+ * Confirmation depth is not checked here. The BeaconProcess phase excludes a
2432
+ * signal below `ResolutionOptions.minConf` before its update reaches this method,
2433
+ * so every tuple here comes from a block at or above the threshold.
2334
2434
  */
2335
2435
  static updates(currentDocument, unsortedUpdates, versionTime, versionId, resolutionState = { currentVersionId: 1, updateHashHistory: [] }) {
2336
2436
  let currentVersionId = resolutionState.currentVersionId;
@@ -2463,9 +2563,9 @@ var Resolver = class _Resolver {
2463
2563
  if (!verificationMethodId) {
2464
2564
  throw new import_common13.ResolveError("No verificationMethod found in update", import_common13.INVALID_DID_UPDATE, update);
2465
2565
  }
2466
- const authorizedMethodId = relationshipMethodId(currentDocument.id, verificationMethodId);
2566
+ const authorizedMethodId = Appendix.relationshipMethodId(verificationMethodId, currentDocument.id);
2467
2567
  const authorized = authorizedMethodId !== void 0 && currentDocument.capabilityInvocation?.some(
2468
- (entry) => relationshipMethodId(currentDocument.id, entry) === authorizedMethodId
2568
+ (entry) => Appendix.relationshipMethodId(entry, currentDocument.id) === authorizedMethodId
2469
2569
  );
2470
2570
  if (!authorized) {
2471
2571
  throw new import_common13.ResolveError(
@@ -2558,8 +2658,10 @@ var Resolver = class _Resolver {
2558
2658
  const allNeeds = [];
2559
2659
  for (const [service, signals] of this.#beaconServicesSignals) {
2560
2660
  if (this.#processedServices.has(service.id) || !signals.length) continue;
2561
- const beacon = BeaconFactory.establish(service);
2562
- const result = beacon.processSignals(signals, this.#sidecarData);
2661
+ const eligible = this.#eligibleSignals(signals);
2662
+ if (!eligible.length) continue;
2663
+ const beacon = BeaconFactory.establish(service, this.#currentDocument.id);
2664
+ const result = beacon.processSignals(eligible, this.#sidecarData);
2563
2665
  if (result.needs.length > 0) {
2564
2666
  allNeeds.push(...result.needs);
2565
2667
  } else {
@@ -2623,6 +2725,41 @@ var Resolver = class _Resolver {
2623
2725
  }
2624
2726
  }
2625
2727
  }
2728
+ /**
2729
+ * Return the signals of one beacon service that resolution may process: the
2730
+ * signals with at least `#minConf` confirmations. The specification removes a
2731
+ * transaction below the threshold from the set of Beacon Signals, so an
2732
+ * excluded signal emits no data need and applies no update. A signal with no
2733
+ * integer confirmation count is excluded too: that is a mempool transaction
2734
+ * from a driver that did not skip it.
2735
+ *
2736
+ * An eligible signal must carry a finite block height and block time. A
2737
+ * signal that passes the count but lacks them is malformed. It fails fast
2738
+ * here with a typed error, in the style of the {@link provide} guards, and
2739
+ * not later with an invalid date inside {@link updates}.
2740
+ * @param {Array<BeaconSignal>} signals The signals the caller provided for one service.
2741
+ * @returns {Array<BeaconSignal>} The signals at or above the threshold, in the given order.
2742
+ * @throws {ResolveError} `INVALID_DID_UPDATE` for an eligible signal with no valid block metadata.
2743
+ */
2744
+ #eligibleSignals(signals) {
2745
+ const eligible = [];
2746
+ for (const signal of signals) {
2747
+ const block = signal.blockMetadata;
2748
+ const confirmations = block?.confirmations;
2749
+ if (!Number.isInteger(confirmations) || confirmations < this.#minConf) {
2750
+ continue;
2751
+ }
2752
+ if (!Number.isFinite(block?.height) || !Number.isFinite(block?.time)) {
2753
+ throw new import_common13.ResolveError(
2754
+ `Beacon signal ${signal.signalBytes} has ${confirmations} confirmations but no valid block height or block time.`,
2755
+ import_common13.INVALID_DID_UPDATE,
2756
+ { signalBytes: signal.signalBytes, confirmations, height: block?.height, time: block?.time }
2757
+ );
2758
+ }
2759
+ eligible.push(signal);
2760
+ }
2761
+ return eligible;
2762
+ }
2626
2763
  provide(need, data) {
2627
2764
  switch (need.kind) {
2628
2765
  case "NeedGenesisDocument": {
@@ -2720,7 +2857,10 @@ function getAggregationCommunicationKey(document) {
2720
2857
  { id: document.id }
2721
2858
  );
2722
2859
  }
2723
- const vm = typeof invocation === "string" ? document.verificationMethod?.find((method) => method.id === invocation) : invocation;
2860
+ const invocationId = Appendix.absoluteDidUrl(invocation, document.id);
2861
+ const vm = typeof invocation === "string" ? invocationId === void 0 ? void 0 : document.verificationMethod?.find(
2862
+ (method) => Appendix.absoluteDidUrl(method.id, document.id) === invocationId
2863
+ ) : invocation;
2724
2864
  if (!vm) {
2725
2865
  throw new import_common14.DidDocumentError(
2726
2866
  `Cannot derive aggregation communication key: capabilityInvocation[0] "${invocation}" does not resolve to a verification method`,
@@ -2813,6 +2953,7 @@ var DidDocumentBuilder = class {
2813
2953
  CASBeaconError,
2814
2954
  CHANGE_OUTPUT_VBYTES,
2815
2955
  DEFAULT_FEE_ESTIMATOR,
2956
+ DEFAULT_MIN_CONF,
2816
2957
  DID_REGEX,
2817
2958
  DUST_LIMIT_SATS,
2818
2959
  DidBtcr2,
@@ -168,6 +168,13 @@ export function opReturnScript(signalBytes) {
168
168
  * kind; this bounds the incoming UTXO chosen to fund the transaction.
169
169
  */
170
170
  export const SPENDABLE_DUST_LIMIT_SATS = 546;
171
+ /**
172
+ * True if the UTXO is confirmed. Narrows the status to the confirmed arm, so the
173
+ * block height reads as a number. An absent flag counts as unconfirmed.
174
+ */
175
+ function isConfirmedUtxo(utxo) {
176
+ return utxo.status.confirmed === true;
177
+ }
171
178
  /**
172
179
  * Deterministic ordering for spendable UTXO selection: deepest first (ascending
173
180
  * block height, so the most-confirmed UTXO sorts first), tie-broken by `txid` then
@@ -205,7 +212,7 @@ export function selectSpendableUtxo(utxos, address) {
205
212
  if (!utxos.length) {
206
213
  throw new BeaconError('No UTXOs found, please fund address!', 'UNFUNDED_BEACON_ADDRESS', { address });
207
214
  }
208
- const confirmed = utxos.filter(utxo => utxo.status.confirmed === true);
215
+ const confirmed = utxos.filter(isConfirmedUtxo);
209
216
  const spendable = confirmed.filter(utxo => utxo.value > SPENDABLE_DUST_LIMIT_SATS);
210
217
  if (!spendable.length) {
211
218
  const reason = confirmed.length === 0
@@ -372,8 +379,18 @@ export class SinglePartyBeacon {
372
379
  * The Beacon service configuration parsed from the DID Document.
373
380
  */
374
381
  service;
375
- constructor(service) {
382
+ /**
383
+ * The absolute did:btcr2 identifier this beacon instance serves.
384
+ *
385
+ * Injected by the caller rather than recovered from {@link service}. A beacon
386
+ * service `id` is permitted to be a relative DID URL (`#beacon-1`), which
387
+ * carries no DID to strip a fragment from, so deriving the subject from it is
388
+ * only correct for the absolute spelling.
389
+ */
390
+ did;
391
+ constructor(service, did) {
376
392
  this.service = service;
393
+ this.did = did;
377
394
  }
378
395
  /**
379
396
  * Build + sign + broadcast a singleton beacon signal transaction. The beacon
@@ -1 +1 @@
1
- {"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/beacon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/beacon.ts"],"names":[],"mappings":"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"}
@@ -39,9 +39,10 @@ export class CASBeacon extends SinglePartyBeacon {
39
39
  /**
40
40
  * Creates an instance of CASBeacon.
41
41
  * @param {BeaconService} service The service of the Beacon.
42
+ * @param {string} did The absolute did:btcr2 identifier this beacon serves.
42
43
  */
43
- constructor(service) {
44
- super({ ...service, type: 'CASBeacon' });
44
+ constructor(service, did) {
45
+ super({ ...service, type: 'CASBeacon' }, did);
45
46
  }
46
47
  /**
47
48
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-cas-beacon | 7.2.e.1 Process CAS Beacon}.
@@ -59,8 +60,8 @@ export class CASBeacon extends SinglePartyBeacon {
59
60
  processSignals(signals, sidecar) {
60
61
  const updates = new Array();
61
62
  const needs = new Array();
62
- // Extract the DID from the beacon service id (strip the #fragment)
63
- const did = this.service.id.split('#')[0];
63
+ // The DID under resolution keys this beacon's announcement entry.
64
+ const did = this.did;
64
65
  for (const signal of signals) {
65
66
  // Signal bytes are hex, matches hex-keyed sidecar maps directly
66
67
  const announcementHash = signal.signalBytes;
@@ -121,8 +122,8 @@ export class CASBeacon extends SinglePartyBeacon {
121
122
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
122
123
  */
123
124
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
124
- // Extract the DID from the beacon service id (strip the #fragment)
125
- const did = this.service.id.split('#')[0];
125
+ // The DID this beacon serves keys its announcement entry.
126
+ const did = this.did;
126
127
  // Hash the signed update (base64urlnopad for the CAS Announcement entry per spec)
127
128
  const updateHash = canonicalHash(signedUpdate);
128
129
  // Create the CAS Announcement mapping this DID to its update hash
@@ -1 +1 @@
1
- {"version":3,"file":"cas-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/cas-beacon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAMtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAahD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,OAAO,SAAU,SAAQ,iBAAiB;IAC9C;;;OAGG;IACH,YAAY,OAAsB;QAChC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CACZ,OAA4B,EAC5B,OAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,KAAK,EAAsC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAY,CAAC;QAEpC,mEAAmE;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1C,KAAI,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC5B,gEAAgE;YAChE,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC;YAE5C,iDAAiD;YACjD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAE7D,IAAG,CAAC,eAAe,EAAE,CAAC;gBACpB,8CAA8C;gBAC9C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAgB,qBAAqB;oBACzC,gBAAgB;oBAChB,eAAe,EAAK,IAAI,CAAC,OAAO,CAAC,EAAE;iBACpC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,yDAAyD;YACzD,iFAAiF;YACjF,MAAM,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAE/C,qFAAqF;YACrF,IAAG,CAAC,iBAAiB,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC;YAE9E,iDAAiD;YACjD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEvD,IAAG,CAAC,YAAY,EAAE,CAAC;gBACjB,2CAA2C;gBAC3C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAe,kBAAkB;oBACrC,UAAU;oBACV,eAAe,EAAI,IAAI,CAAC,OAAO,CAAC,EAAE;iBACnC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,eAAe,CACnB,YAA+B,EAC/B,MAAc,EACd,OAA0B,EAC1B,OAA6B;QAE7B,mEAAmE;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1C,kFAAkF;QAClF,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAE/C,kEAAkE;QAClE,MAAM,eAAe,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC;QAE9C,sEAAsE;QACtE,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;QAE7D,8EAA8E;QAC9E,sDAAsD;QACtD,IAAG,OAAO,EAAE,UAAU,EAAE,CAAC;YACvB,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC5C,CAAC;QAED,qFAAqF;QACrF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE1F,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;IAC/D,CAAC;CACF"}
1
+ {"version":3,"file":"cas-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/cas-beacon.ts"],"names":[],"mappings":"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"}
@@ -11,16 +11,18 @@ export class BeaconFactory {
11
11
  /**
12
12
  * Establish a Beacon instance based on the provided service and optional sidecar data.
13
13
  * @param {BeaconService} service The beacon service configuration.
14
+ * @param {string} did The absolute did:btcr2 identifier the beacon serves. Supplied
15
+ * by the caller because a beacon service `id` may be a relative DID URL.
14
16
  * @returns {SinglePartyBeacon} The established Beacon instance.
15
17
  */
16
- static establish(service) {
18
+ static establish(service, did) {
17
19
  switch (service.type) {
18
20
  case 'SingletonBeacon':
19
- return new SingletonBeacon(service);
21
+ return new SingletonBeacon(service, did);
20
22
  case 'CASBeacon':
21
- return new CASBeacon(service);
23
+ return new CASBeacon(service, did);
22
24
  case 'SMTBeacon':
23
- return new SMTBeacon(service);
25
+ return new SMTBeacon(service, did);
24
26
  default:
25
27
  throw new MethodError('Invalid Beacon Type', 'INVALID_BEACON_ERROR', service);
26
28
  }