@did-btcr2/method 0.55.0 → 0.58.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 (66) hide show
  1. package/README.md +10 -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 +172 -66
  6. package/dist/esm/core/beacon/beacon.js +11 -1
  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 +124 -38
  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/beacon/utils.js +0 -10
  19. package/dist/esm/core/beacon/utils.js.map +1 -1
  20. package/dist/esm/core/did-sender-resolver.js +8 -2
  21. package/dist/esm/core/did-sender-resolver.js.map +1 -1
  22. package/dist/esm/core/resolver.js +20 -1
  23. package/dist/esm/core/resolver.js.map +1 -1
  24. package/dist/esm/core/updater.js +17 -4
  25. package/dist/esm/core/updater.js.map +1 -1
  26. package/dist/esm/did-btcr2.js +23 -7
  27. package/dist/esm/did-btcr2.js.map +1 -1
  28. package/dist/esm/utils/appendix.js +36 -5
  29. package/dist/esm/utils/appendix.js.map +1 -1
  30. package/dist/types/core/beacon/beacon.d.ts +10 -1
  31. package/dist/types/core/beacon/beacon.d.ts.map +1 -1
  32. package/dist/types/core/beacon/cas-beacon.d.ts +2 -1
  33. package/dist/types/core/beacon/cas-beacon.d.ts.map +1 -1
  34. package/dist/types/core/beacon/factory.d.ts +3 -1
  35. package/dist/types/core/beacon/factory.d.ts.map +1 -1
  36. package/dist/types/core/beacon/signal-discovery.d.ts +36 -9
  37. package/dist/types/core/beacon/signal-discovery.d.ts.map +1 -1
  38. package/dist/types/core/beacon/singleton-beacon.d.ts +1 -1
  39. package/dist/types/core/beacon/singleton-beacon.d.ts.map +1 -1
  40. package/dist/types/core/beacon/smt-beacon.d.ts +2 -1
  41. package/dist/types/core/beacon/smt-beacon.d.ts.map +1 -1
  42. package/dist/types/core/beacon/utils.d.ts +0 -6
  43. package/dist/types/core/beacon/utils.d.ts.map +1 -1
  44. package/dist/types/core/did-sender-resolver.d.ts.map +1 -1
  45. package/dist/types/core/interfaces.d.ts.map +1 -1
  46. package/dist/types/core/resolver.d.ts.map +1 -1
  47. package/dist/types/core/updater.d.ts +11 -4
  48. package/dist/types/core/updater.d.ts.map +1 -1
  49. package/dist/types/did-btcr2.d.ts.map +1 -1
  50. package/dist/types/utils/appendix.d.ts +30 -4
  51. package/dist/types/utils/appendix.d.ts.map +1 -1
  52. package/package.json +5 -5
  53. package/src/core/beacon/beacon.ts +12 -1
  54. package/src/core/beacon/cas-beacon.ts +7 -6
  55. package/src/core/beacon/factory.ts +6 -4
  56. package/src/core/beacon/interfaces.ts +1 -1
  57. package/src/core/beacon/signal-discovery.ts +141 -42
  58. package/src/core/beacon/singleton-beacon.ts +2 -2
  59. package/src/core/beacon/smt-beacon.ts +7 -6
  60. package/src/core/beacon/utils.ts +0 -13
  61. package/src/core/did-sender-resolver.ts +10 -2
  62. package/src/core/interfaces.ts +1 -0
  63. package/src/core/resolver.ts +33 -2
  64. package/src/core/updater.ts +25 -5
  65. package/src/did-btcr2.ts +28 -8
  66. package/src/utils/appendix.ts +37 -5
package/dist/cjs/index.js CHANGED
@@ -60,7 +60,7 @@ __export(index_exports, {
60
60
  buildAggregationBeaconTx: () => buildAggregationBeaconTx,
61
61
  deriveSingletonAddress: () => deriveSingletonAddress,
62
62
  detectSingletonScriptKind: () => detectSingletonScriptKind,
63
- extractOpReturnSignal: () => extractOpReturnSignal,
63
+ extractOpReturnSignalHash: () => extractOpReturnSignalHash,
64
64
  getAggregationCommunicationKey: () => getAggregationCommunicationKey,
65
65
  isMultikeyVerificationMethod: () => isMultikeyVerificationMethod,
66
66
  opReturnScript: () => opReturnScript,
@@ -280,8 +280,18 @@ var SinglePartyBeacon = class {
280
280
  * The Beacon service configuration parsed from the DID Document.
281
281
  */
282
282
  service;
283
- constructor(service) {
283
+ /**
284
+ * The absolute did:btcr2 identifier this beacon instance serves.
285
+ *
286
+ * Injected by the caller rather than recovered from {@link service}. A beacon
287
+ * service `id` is permitted to be a relative DID URL (`#beacon-1`), which
288
+ * carries no DID to strip a fragment from, so deriving the subject from it is
289
+ * only correct for the absolute spelling.
290
+ */
291
+ did;
292
+ constructor(service, did) {
284
293
  this.service = service;
294
+ this.did = did;
285
295
  }
286
296
  /**
287
297
  * Build + sign + broadcast a singleton beacon signal transaction. The beacon
@@ -424,9 +434,10 @@ var CASBeacon = class extends SinglePartyBeacon {
424
434
  /**
425
435
  * Creates an instance of CASBeacon.
426
436
  * @param {BeaconService} service The service of the Beacon.
437
+ * @param {string} did The absolute did:btcr2 identifier this beacon serves.
427
438
  */
428
- constructor(service) {
429
- super({ ...service, type: "CASBeacon" });
439
+ constructor(service, did) {
440
+ super({ ...service, type: "CASBeacon" }, did);
430
441
  }
431
442
  /**
432
443
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-cas-beacon | 7.2.e.1 Process CAS Beacon}.
@@ -444,7 +455,7 @@ var CASBeacon = class extends SinglePartyBeacon {
444
455
  processSignals(signals, sidecar) {
445
456
  const updates = new Array();
446
457
  const needs = new Array();
447
- const did = this.service.id.split("#")[0];
458
+ const did = this.did;
448
459
  for (const signal of signals) {
449
460
  const announcementHash = signal.signalBytes;
450
461
  const casAnnouncement = sidecar.casMap.get(announcementHash);
@@ -497,7 +508,7 @@ var CASBeacon = class extends SinglePartyBeacon {
497
508
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
498
509
  */
499
510
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
500
- const did = this.service.id.split("#")[0];
511
+ const did = this.did;
501
512
  const updateHash = (0, import_common2.canonicalHash)(signedUpdate);
502
513
  const casAnnouncement = { [did]: updateHash };
503
514
  const announcementHash = (0, import_common2.hash)((0, import_common2.canonicalize)(casAnnouncement));
@@ -519,8 +530,8 @@ var SingletonBeacon = class extends SinglePartyBeacon {
519
530
  * Creates an instance of SingletonBeacon.
520
531
  * @param {BeaconService} service The BeaconService object representing the funded beacon to announce the update to.
521
532
  */
522
- constructor(service) {
523
- super({ ...service, type: "SingletonBeacon" });
533
+ constructor(service, did) {
534
+ super({ ...service, type: "SingletonBeacon" }, did);
524
535
  }
525
536
  /**
526
537
  * Processes an array of Beacon Signals associated with a Singleton Beacon Service.
@@ -575,9 +586,10 @@ var SMTBeacon = class extends SinglePartyBeacon {
575
586
  /**
576
587
  * Creates an instance of SMTBeacon.
577
588
  * @param {BeaconService} service The Beacon service.
589
+ * @param {string} did The absolute did:btcr2 identifier this beacon serves.
578
590
  */
579
- constructor(service) {
580
- super({ ...service, type: "SMTBeacon" });
591
+ constructor(service, did) {
592
+ super({ ...service, type: "SMTBeacon" }, did);
581
593
  }
582
594
  /**
583
595
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-smt-beacon | 7.2.e.1 Process SMT Beacon}.
@@ -595,7 +607,7 @@ var SMTBeacon = class extends SinglePartyBeacon {
595
607
  processSignals(signals, sidecar) {
596
608
  const updates = new Array();
597
609
  const needs = new Array();
598
- const did = this.service.id.split("#")[0];
610
+ const did = this.did;
599
611
  for (const signal of signals) {
600
612
  const smtProof = sidecar.smtMap.get(signal.signalBytes);
601
613
  if (!smtProof) {
@@ -659,7 +671,7 @@ var SMTBeacon = class extends SinglePartyBeacon {
659
671
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
660
672
  */
661
673
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
662
- const did = this.service.id.split("#")[0];
674
+ const did = this.did;
663
675
  const canonicalBytes = new TextEncoder().encode((0, import_common4.canonicalize)(signedUpdate));
664
676
  const nonce = (0, import_utils2.randomBytes)(32);
665
677
  const tree = new import_smt.BTCR2MerkleTree();
@@ -676,16 +688,18 @@ var BeaconFactory = class {
676
688
  /**
677
689
  * Establish a Beacon instance based on the provided service and optional sidecar data.
678
690
  * @param {BeaconService} service The beacon service configuration.
691
+ * @param {string} did The absolute did:btcr2 identifier the beacon serves. Supplied
692
+ * by the caller because a beacon service `id` may be a relative DID URL.
679
693
  * @returns {SinglePartyBeacon} The established Beacon instance.
680
694
  */
681
- static establish(service) {
695
+ static establish(service, did) {
682
696
  switch (service.type) {
683
697
  case "SingletonBeacon":
684
- return new SingletonBeacon(service);
698
+ return new SingletonBeacon(service, did);
685
699
  case "CASBeacon":
686
- return new CASBeacon(service);
700
+ return new CASBeacon(service, did);
687
701
  case "SMTBeacon":
688
- return new SMTBeacon(service);
702
+ return new SMTBeacon(service, did);
689
703
  default:
690
704
  throw new import_common5.MethodError("Invalid Beacon Type", "INVALID_BEACON_ERROR", service);
691
705
  }
@@ -706,14 +720,43 @@ var import_dids = require("@web5/dids");
706
720
  var import_common6 = require("@did-btcr2/common");
707
721
  var Appendix = class _Appendix {
708
722
  /**
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
723
+ * Resolves a DID URL that may be written as a relative reference against the
724
+ * DID it appears under. DID Core permits the `id` of a verification method or
725
+ * service, and the entries of a verification relationship, to be a relative
726
+ * DID URL such as `#initialKey`; it denotes that fragment of `did`. Absolute
727
+ * DID URLs are returned unchanged, so both spellings of the same reference
728
+ * compare equal without discarding the DID being compared.
729
+ *
730
+ * @param {unknown} input The DID URL to resolve. Non-strings yield `undefined`.
731
+ * @param {string} did The DID the relative reference is resolved against.
732
+ * @returns {string | undefined} The absolute DID URL, or `undefined` if `input` is not a usable string.
712
733
  */
713
- static extractDidFragment(input) {
734
+ static absoluteDidUrl(input, did) {
714
735
  if (typeof input !== "string") return void 0;
715
736
  if (input.length === 0) return void 0;
716
- return input;
737
+ return input.startsWith("#") ? `${did}${input}` : input;
738
+ }
739
+ /**
740
+ * Resolves a verification relationship entry to the absolute DID URL of the method it
741
+ * names. A relationship entry is either a reference to a method defined elsewhere in the
742
+ * document, or a method embedded inline, which names itself with its own `id`; either
743
+ * spelling may be a relative DID URL.
744
+ *
745
+ * Every comparison of a relationship entry against a method id goes through this helper,
746
+ * on both the read path and the write path, so the two admit exactly the same spellings.
747
+ *
748
+ * Malformed entries yield `undefined` rather than a placeholder string, so two unusable
749
+ * values never compare equal to each other. Callers comparing a resolved entry must still
750
+ * reject an `undefined` target before comparing, or an unusable target matches an
751
+ * unusable entry.
752
+ *
753
+ * @param {unknown} entry The relationship entry: a reference, or an embedded method.
754
+ * @param {string} did The DID the relative reference is resolved against.
755
+ * @returns {string | undefined} The absolute DID URL, or `undefined` if unusable.
756
+ */
757
+ static relationshipMethodId(entry, did) {
758
+ const id = typeof entry === "object" && entry !== null && !Array.isArray(entry) ? entry.id : entry;
759
+ return _Appendix.absoluteDidUrl(id, did);
717
760
  }
718
761
  /**
719
762
  * Validates that the given object is a DidVerificationMethod
@@ -1139,16 +1182,6 @@ var BeaconUtils = class {
1139
1182
  static parseBeaconServiceEndpoint(beacon) {
1140
1183
  return { ...beacon, serviceEndpoint: beacon.serviceEndpoint.replace("bitcoin:", "") };
1141
1184
  }
1142
- /**
1143
- * Create a map of address => beaconService with address field.
1144
- * @param {Array<BeaconService>} beacons The list of beacon services.
1145
- * @returns {Map<string, BeaconService>} A map of address => beaconService.
1146
- */
1147
- static getBeaconServicesMap(beacons) {
1148
- return new Map(
1149
- beacons.map(this.parseBeaconServiceEndpoint).map((beacon) => [beacon.serviceEndpoint, beacon])
1150
- );
1151
- }
1152
1185
  /**
1153
1186
  * Get the beacon service ids from a list of beacon services.
1154
1187
  * @param {DidDocument} didDocument The DID Document to extract the services from.
@@ -1160,21 +1193,53 @@ var BeaconUtils = class {
1160
1193
  };
1161
1194
 
1162
1195
  // src/core/beacon/signal-discovery.ts
1163
- function extractOpReturnSignal(asm) {
1164
- if (!asm) {
1165
- return null;
1166
- }
1167
- const tokens = asm.trim().split(/\s+/);
1168
- if (tokens.length !== 3 || tokens[0] !== "OP_RETURN" || tokens[1] !== "OP_PUSHBYTES_32") {
1196
+ var BEACON_SIGNAL_SCRIPT = /^6a20([0-9a-f]{64})$/i;
1197
+ function extractOpReturnSignalHash(scriptPubKey) {
1198
+ if (!scriptPubKey) {
1169
1199
  return null;
1170
1200
  }
1171
- const signalHash = tokens[2];
1172
- if (!/^[0-9a-fA-F]{64}$/.test(signalHash)) {
1201
+ const signal = BEACON_SIGNAL_SCRIPT.exec(scriptPubKey.trim());
1202
+ if (!signal) {
1173
1203
  return null;
1174
1204
  }
1175
- return signalHash.toLowerCase();
1205
+ return signal[1].toLowerCase();
1176
1206
  }
1177
- var BeaconSignalDiscovery = class {
1207
+ var BeaconSignalDiscovery = class _BeaconSignalDiscovery {
1208
+ /**
1209
+ * Determines whether a candidate transaction spends an output controlled by the given
1210
+ * beacon address.
1211
+ *
1212
+ * A Beacon Signal is a transaction that *spends from* a Beacon Address, but an address
1213
+ * transaction listing returns every transaction touching the address in either
1214
+ * direction. Without this check, anyone able to pay dust to a beacon address could
1215
+ * attach an arbitrary 32-byte OP_RETURN and have it read as a signal, so the input side
1216
+ * has to be inspected before a transaction is treated as one.
1217
+ *
1218
+ * Esplora embeds the spent output in `vin[].prevout`; when a backend omits it the
1219
+ * funding transaction is fetched instead, so a missing field cannot silently drop a
1220
+ * real signal.
1221
+ *
1222
+ * @param {RawTransactionRest} tx The candidate transaction.
1223
+ * @param {string} address The beacon address the transaction must spend from.
1224
+ * @param {BitcoinConnection} bitcoin Bitcoin network connection to use for REST calls.
1225
+ * @returns {Promise<boolean>} True if at least one input spends an output of the beacon address.
1226
+ */
1227
+ static async spendsFromAddress(tx, address, bitcoin) {
1228
+ for (const vin of tx.vin ?? []) {
1229
+ if (vin.is_coinbase) {
1230
+ continue;
1231
+ }
1232
+ let prevout = vin.prevout;
1233
+ if (!prevout && vin.txid) {
1234
+ const fundingTx = await bitcoin.rest.transaction.get(vin.txid);
1235
+ prevout = fundingTx?.vout?.[vin.vout];
1236
+ }
1237
+ if (prevout?.scriptpubkey_address === address) {
1238
+ return true;
1239
+ }
1240
+ }
1241
+ return false;
1242
+ }
1178
1243
  /**
1179
1244
  * Retrieves the beacon signals for the given array of BeaconService objects
1180
1245
  * using an esplora/electrs REST API connection via a bitcoin I/O driver.
@@ -1187,21 +1252,23 @@ var BeaconSignalDiscovery = class {
1187
1252
  const currentBlockCount = await bitcoin.rest.block.count();
1188
1253
  for (const beaconService of beaconServices) {
1189
1254
  beaconServiceSignals.set(beaconService, []);
1190
- const beaconSignals = await bitcoin.rest.address.getTxs(
1191
- BeaconUtils.parseBitcoinAddress(beaconService.serviceEndpoint)
1192
- );
1255
+ const beaconAddress = BeaconUtils.parseBitcoinAddress(beaconService.serviceEndpoint);
1256
+ const beaconSignals = await bitcoin.rest.address.getTxs(beaconAddress);
1193
1257
  if (!beaconSignals || !beaconSignals.length) {
1194
1258
  continue;
1195
1259
  }
1196
1260
  for (const beaconSignal of beaconSignals) {
1197
- const signalVout = beaconSignal.vout.slice(-1)[0];
1198
- if (!signalVout) {
1261
+ const lastSignalVout = beaconSignal.vout.slice(-1)[0];
1262
+ if (!lastSignalVout) {
1199
1263
  continue;
1200
1264
  }
1201
- const updateHash = extractOpReturnSignal(signalVout.scriptpubkey_asm);
1265
+ const updateHash = extractOpReturnSignalHash(lastSignalVout.scriptpubkey);
1202
1266
  if (!updateHash) {
1203
1267
  continue;
1204
1268
  }
1269
+ if (!await _BeaconSignalDiscovery.spendsFromAddress(beaconSignal, beaconAddress, bitcoin)) {
1270
+ continue;
1271
+ }
1205
1272
  const confirmations = currentBlockCount - beaconSignal.status.block_height + 1;
1206
1273
  beaconServiceSignals.get(beaconService)?.push({
1207
1274
  tx: beaconSignal,
@@ -1232,7 +1299,9 @@ var BeaconSignalDiscovery = class {
1232
1299
  throw new import_common9.ResolveError("RPC connection is not available", "RPC_CONNECTION_ERROR", bitcoin);
1233
1300
  }
1234
1301
  const targetHeight = await rpc.getBlockCount();
1235
- const beaconServicesMap = BeaconUtils.getBeaconServicesMap(beaconServices);
1302
+ const beaconServicesMap = new Map(
1303
+ beaconServices.map((service) => [BeaconUtils.parseBitcoinAddress(service.serviceEndpoint), service])
1304
+ );
1236
1305
  let height = 0;
1237
1306
  let block = await bitcoin.rpc.getBlock({ height });
1238
1307
  console.info(`Searching for beacon signals, please wait ...`);
@@ -1241,6 +1310,15 @@ var BeaconSignalDiscovery = class {
1241
1310
  if (tx.txid === import_bitcoin3.GENESIS_TX_ID) {
1242
1311
  continue;
1243
1312
  }
1313
+ const lastSignalVout = tx.vout.slice(-1)[0];
1314
+ if (!lastSignalVout) {
1315
+ continue;
1316
+ }
1317
+ const updateHash = extractOpReturnSignalHash(lastSignalVout.scriptPubKey?.hex);
1318
+ if (!updateHash) {
1319
+ continue;
1320
+ }
1321
+ const signaled = /* @__PURE__ */ new Set();
1244
1322
  for (const vin of tx.vin) {
1245
1323
  if (vin.coinbase) {
1246
1324
  continue;
@@ -1263,15 +1341,11 @@ var BeaconSignalDiscovery = class {
1263
1341
  continue;
1264
1342
  }
1265
1343
  const beaconService = beaconServicesMap.get(scriptPubKey.address);
1266
- if (!beaconService) {
1267
- continue;
1268
- }
1269
- const txVoutScriptPubkeyAsm = prevout.vout[vin.vout].scriptPubKey.asm;
1270
- const updateHash = extractOpReturnSignal(txVoutScriptPubkeyAsm);
1271
- if (!updateHash) {
1344
+ if (!beaconService || signaled.has(beaconService)) {
1272
1345
  continue;
1273
1346
  }
1274
- console.info(`Tx ${tx.txid} contains beacon service address ${scriptPubKey.address} and OP_RETURN!`, tx);
1347
+ signaled.add(beaconService);
1348
+ console.info(`Tx ${tx.txid} contains beacon address ${scriptPubKey.address}`);
1275
1349
  beaconServiceSignals.get(beaconService)?.push({
1276
1350
  tx,
1277
1351
  signalBytes: updateHash,
@@ -1788,6 +1862,7 @@ var Updater = class _Updater {
1788
1862
  }
1789
1863
  const id = verificationMethod.id.slice(hashIdx);
1790
1864
  const multikey = import_cryptosuite.SchnorrMultikey.fromSigner(id, controller, signer);
1865
+ const absoluteMethodId = hashIdx === 0 ? `${did}${id}` : verificationMethod.id;
1791
1866
  const signerKey = multikey.publicKey.multibase.encoded;
1792
1867
  if (verificationMethod.publicKeyMultibase && signerKey !== verificationMethod.publicKeyMultibase) {
1793
1868
  throw new import_common11.UpdateError(
@@ -1809,7 +1884,12 @@ var Updater = class _Updater {
1809
1884
  ],
1810
1885
  cryptosuite: "bip340-jcs-2025",
1811
1886
  type: "DataIntegrityProof",
1812
- verificationMethod: verificationMethod.id,
1887
+ // The proof names the signing method by absolute DID URL, even when the document
1888
+ // spells that method's own id relatively: a proof travels apart from the document
1889
+ // that defines the method, so a bare `#initialKey` in it resolves against nothing.
1890
+ // For a document that already spells its ids absolutely this is the id unchanged,
1891
+ // so proofs over such documents are byte-identical to before.
1892
+ verificationMethod: absoluteMethodId,
1813
1893
  proofPurpose: "capabilityInvocation",
1814
1894
  capability: `urn:zcap:root:${encodeURIComponent(did)}`,
1815
1895
  capabilityAction: "Write"
@@ -1822,6 +1902,8 @@ var Updater = class _Updater {
1822
1902
  * Announces a signed update to the Bitcoin blockchain via the specified beacon.
1823
1903
  *
1824
1904
  * @param {BeaconService} beaconService The beacon service to broadcast through.
1905
+ * @param {string} did The DID being updated. Required because a beacon service
1906
+ * `id` may be a relative DID URL and so cannot supply the subject.
1825
1907
  * @param {SignedBTCR2Update} update The signed update to announce.
1826
1908
  * @param {Signer} signer Signer that produces the ECDSA signature for the Bitcoin transaction.
1827
1909
  * @param {BitcoinConnection} bitcoin The Bitcoin network connection.
@@ -1831,8 +1913,8 @@ var Updater = class _Updater {
1831
1913
  * @returns {Promise<BroadcastResult>} The broadcast artifacts: the signed update, the signal
1832
1914
  * txid, and any per-beacon-type sidecar data (CAS announcement / SMT proof).
1833
1915
  */
1834
- static async announce(beaconService, update, signer, bitcoin, options) {
1835
- const beacon = BeaconFactory.establish(beaconService);
1916
+ static async announce(beaconService, did, update, signer, bitcoin, options) {
1917
+ const beacon = BeaconFactory.establish(beaconService, did);
1836
1918
  return beacon.broadcastSignal(update, signer, bitcoin, options);
1837
1919
  }
1838
1920
  // Private instance wrappers
@@ -1891,7 +1973,8 @@ var Updater = class _Updater {
1891
1973
  needs: [{
1892
1974
  kind: "NeedBroadcast",
1893
1975
  beaconService: this.#beaconService,
1894
- signedUpdate: this.#state.signedUpdate
1976
+ signedUpdate: this.#state.signedUpdate,
1977
+ did: this.#sourceDocument.id
1895
1978
  }]
1896
1979
  };
1897
1980
  }
@@ -2066,7 +2149,11 @@ var DidBtcr2 = class {
2066
2149
  verificationMethodId,
2067
2150
  beaconId
2068
2151
  }) {
2069
- if (!sourceDocument.capabilityInvocation?.some((vr) => vr === verificationMethodId)) {
2152
+ const authorizedMethodId = Appendix.relationshipMethodId(verificationMethodId, sourceDocument.id);
2153
+ const authorized = authorizedMethodId !== void 0 && sourceDocument.capabilityInvocation?.some(
2154
+ (entry) => Appendix.relationshipMethodId(entry, sourceDocument.id) === authorizedMethodId
2155
+ );
2156
+ if (!authorized) {
2070
2157
  throw new import_common12.UpdateError(
2071
2158
  "Invalid verificationMethodId: not authorized for capabilityInvocation",
2072
2159
  import_common12.INVALID_DID_DOCUMENT,
@@ -2095,7 +2182,8 @@ var DidBtcr2 = class {
2095
2182
  verificationMethod
2096
2183
  );
2097
2184
  }
2098
- const beaconService = sourceDocument.service.filter((service) => service.id === beaconId).filter((service) => !!service).shift();
2185
+ const targetBeaconId = Appendix.absoluteDidUrl(beaconId, sourceDocument.id);
2186
+ const beaconService = sourceDocument.service.filter((service) => targetBeaconId !== void 0 && Appendix.absoluteDidUrl(service.id, sourceDocument.id) === targetBeaconId).filter((service) => !!service).shift();
2099
2187
  if (!beaconService) {
2100
2188
  throw new import_common12.UpdateError(
2101
2189
  "No beacon service found for provided beaconId",
@@ -2127,8 +2215,9 @@ var DidBtcr2 = class {
2127
2215
  if (parsedDid && parsedDid.method !== this.methodName) {
2128
2216
  throw new import_common12.MethodError(`Method not supported: ${parsedDid.method}`, import_common12.METHOD_NOT_SUPPORTED, { identifier: didDocument.id });
2129
2217
  }
2130
- const verificationMethod = didDocument.verificationMethod?.find(
2131
- (vm) => Appendix.extractDidFragment(vm.id) === (Appendix.extractDidFragment(methodId) ?? Appendix.extractDidFragment(didDocument.assertionMethod?.[0]))
2218
+ const targetId = Appendix.absoluteDidUrl(methodId, didDocument.id) ?? Appendix.relationshipMethodId(didDocument.assertionMethod?.[0], didDocument.id);
2219
+ const verificationMethod = targetId === void 0 ? void 0 : didDocument.verificationMethod?.find(
2220
+ (vm) => Appendix.absoluteDidUrl(vm.id, didDocument.id) === targetId
2132
2221
  );
2133
2222
  if (!(verificationMethod && verificationMethod.publicKeyMultibase)) {
2134
2223
  throw new import_dids2.DidError(
@@ -2427,6 +2516,20 @@ var Resolver = class _Resolver {
2427
2516
  if (!verificationMethodId) {
2428
2517
  throw new import_common13.ResolveError("No verificationMethod found in update", import_common13.INVALID_DID_UPDATE, update);
2429
2518
  }
2519
+ const authorizedMethodId = Appendix.relationshipMethodId(verificationMethodId, currentDocument.id);
2520
+ const authorized = authorizedMethodId !== void 0 && currentDocument.capabilityInvocation?.some(
2521
+ (entry) => Appendix.relationshipMethodId(entry, currentDocument.id) === authorizedMethodId
2522
+ );
2523
+ if (!authorized) {
2524
+ throw new import_common13.ResolveError(
2525
+ "Invalid update: verificationMethod is not authorized for capabilityInvocation",
2526
+ import_common13.INVALID_DID_UPDATE,
2527
+ {
2528
+ verificationMethodId,
2529
+ capabilityInvocation: currentDocument.capabilityInvocation
2530
+ }
2531
+ );
2532
+ }
2430
2533
  const vm = DidBtcr2.getSigningMethod(currentDocument, verificationMethodId);
2431
2534
  const multikey = import_cryptosuite2.SchnorrMultikey.fromVerificationMethod(vm);
2432
2535
  const cryptosuite = new import_cryptosuite2.BIP340Cryptosuite(multikey);
@@ -2508,7 +2611,7 @@ var Resolver = class _Resolver {
2508
2611
  const allNeeds = [];
2509
2612
  for (const [service, signals] of this.#beaconServicesSignals) {
2510
2613
  if (this.#processedServices.has(service.id) || !signals.length) continue;
2511
- const beacon = BeaconFactory.establish(service);
2614
+ const beacon = BeaconFactory.establish(service, this.#currentDocument.id);
2512
2615
  const result = beacon.processSignals(signals, this.#sidecarData);
2513
2616
  if (result.needs.length > 0) {
2514
2617
  allNeeds.push(...result.needs);
@@ -2670,7 +2773,10 @@ function getAggregationCommunicationKey(document) {
2670
2773
  { id: document.id }
2671
2774
  );
2672
2775
  }
2673
- const vm = typeof invocation === "string" ? document.verificationMethod?.find((method) => method.id === invocation) : invocation;
2776
+ const invocationId = Appendix.absoluteDidUrl(invocation, document.id);
2777
+ const vm = typeof invocation === "string" ? invocationId === void 0 ? void 0 : document.verificationMethod?.find(
2778
+ (method) => Appendix.absoluteDidUrl(method.id, document.id) === invocationId
2779
+ ) : invocation;
2674
2780
  if (!vm) {
2675
2781
  throw new import_common14.DidDocumentError(
2676
2782
  `Cannot derive aggregation communication key: capabilityInvocation[0] "${invocation}" does not resolve to a verification method`,
@@ -2791,7 +2897,7 @@ var DidDocumentBuilder = class {
2791
2897
  buildAggregationBeaconTx,
2792
2898
  deriveSingletonAddress,
2793
2899
  detectSingletonScriptKind,
2794
- extractOpReturnSignal,
2900
+ extractOpReturnSignalHash,
2795
2901
  getAggregationCommunicationKey,
2796
2902
  isMultikeyVerificationMethod,
2797
2903
  opReturnScript,
@@ -372,8 +372,18 @@ export class SinglePartyBeacon {
372
372
  * The Beacon service configuration parsed from the DID Document.
373
373
  */
374
374
  service;
375
- constructor(service) {
375
+ /**
376
+ * The absolute did:btcr2 identifier this beacon instance serves.
377
+ *
378
+ * Injected by the caller rather than recovered from {@link service}. A beacon
379
+ * service `id` is permitted to be a relative DID URL (`#beacon-1`), which
380
+ * carries no DID to strip a fragment from, so deriving the subject from it is
381
+ * only correct for the absolute spelling.
382
+ */
383
+ did;
384
+ constructor(service, did) {
376
385
  this.service = service;
386
+ this.did = did;
377
387
  }
378
388
  /**
379
389
  * 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":"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"}
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/core/beacon/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,OAAsB;QACrC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,iBAAiB;gBACpB,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;YACtC,KAAK,WAAW;gBACd,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,WAAW;gBACd,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;YAChC;gBACE,MAAM,IAAI,WAAW,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/core/beacon/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,OAAsB,EAAE,GAAW;QAClD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,iBAAiB;gBACpB,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3C,KAAK,WAAW;gBACd,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACrC,KAAK,WAAW;gBACd,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACrC;gBACE,MAAM,IAAI,WAAW,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF"}