@did-btcr2/method 0.65.0 → 0.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -589,6 +589,13 @@ var SingletonBeacon = class extends SinglePartyBeacon {
589
589
  var import_common4 = require("@did-btcr2/common");
590
590
  var import_smt = require("@did-btcr2/smt");
591
591
  var import_utils2 = require("@noble/hashes/utils");
592
+ function proofIdHex(proof) {
593
+ try {
594
+ return (0, import_smt.hashToHex)((0, import_smt.base64UrlToHash)(proof.id));
595
+ } catch {
596
+ return void 0;
597
+ }
598
+ }
592
599
  var SMTBeacon = class extends SinglePartyBeacon {
593
600
  /**
594
601
  * Creates an instance of SMTBeacon.
@@ -601,15 +608,17 @@ var SMTBeacon = class extends SinglePartyBeacon {
601
608
  /**
602
609
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-smt-beacon | 7.2.e.1 Process SMT Beacon}.
603
610
  *
604
- * For each signal, the signalBytes contain the hex-encoded SMT root hash.
605
- * This method looks up the SMT Proof from the sidecar by root hash,
606
- * validates the Merkle inclusion proof, and retrieves the corresponding
607
- * signed update using the proof's updateId.
611
+ * For each signal, the signalBytes contain the hex-encoded SMT root hash
612
+ * (`smt_root`). This method looks up the SMT Proof from the sidecar by root
613
+ * hash, checks that the id of the proof is the root, verifies the proof with
614
+ * the SMT Proof Verification algorithm, and retrieves the signed update by the
615
+ * proof's updateId. A proof with no updateId announces no update for the DID.
608
616
  *
609
617
  * @param {Array<BeaconSignal>} signals The array of Beacon Signals to process.
610
618
  * @param {SidecarData} sidecar The sidecar data associated with the SMT Beacon.
611
619
  * @returns {BeaconProcessResult} Successfully resolved updates and any data needs.
612
- * @throws {SMTBeaconError} if proof verification fails or proof is malformed.
620
+ * @throws {SMTBeaconError} `INVALID_SIGNAL_DATA` if the id of the proof is not the
621
+ * signal root, or if the proof does not verify.
613
622
  */
614
623
  processSignals(signals, sidecar) {
615
624
  const updates = new Array();
@@ -625,25 +634,21 @@ var SMTBeacon = class extends SinglePartyBeacon {
625
634
  });
626
635
  continue;
627
636
  }
628
- if (!smtProof.nonce) {
637
+ if (proofIdHex(smtProof) !== signal.signalBytes) {
629
638
  throw new SMTBeaconError(
630
- "SMT proof missing required nonce field.",
631
- "INVALID_SMT_PROOF",
632
- { smtProof, did }
639
+ `SMT proof id does not equal the signal root ${signal.signalBytes}.`,
640
+ import_common4.INVALID_SIGNAL_DATA,
641
+ { smtProof, did, smtRootHash: signal.signalBytes }
633
642
  );
634
643
  }
635
- const index = (0, import_smt.didToIndex)(did);
636
- const nonceHash = (0, import_smt.base64UrlToHash)(smtProof.nonce);
637
- const candidateHash = smtProof.updateId ? (0, import_smt.blockHash)((0, import_smt.blockHash)(nonceHash), (0, import_smt.base64UrlToHash)(smtProof.updateId)) : (0, import_smt.blockHash)((0, import_smt.blockHash)(nonceHash));
638
- const valid = (0, import_smt.verifySerializedProof)(smtProof, index, candidateHash);
639
- if (!valid) {
644
+ if (!(0, import_smt.verifyProof)(smtProof, did)) {
640
645
  throw new SMTBeaconError(
641
- "SMT proof verification failed.",
642
- "INVALID_SMT_PROOF",
643
- { smtProof, did }
646
+ `SMT proof verification failed for the signal root ${signal.signalBytes}.`,
647
+ import_common4.INVALID_SIGNAL_DATA,
648
+ { smtProof, did, smtRootHash: signal.signalBytes }
644
649
  );
645
650
  }
646
- if (!smtProof.updateId) {
651
+ if (smtProof.updateId === void 0) {
647
652
  continue;
648
653
  }
649
654
  const updateHashHex = (0, import_smt.hashToHex)((0, import_smt.base64UrlToHash)(smtProof.updateId));
@@ -673,16 +678,15 @@ var SMTBeacon = class extends SinglePartyBeacon {
673
678
  * @param {BitcoinConnection} bitcoin The Bitcoin network connection.
674
679
  * @param {BroadcastOptions} [options] Optional broadcast configuration (e.g. fee estimator).
675
680
  * @return {Promise<BroadcastResult>} The signed update, the signal txid, and the SMT
676
- * inclusion proof (with the leaf nonce embedded). The proof MUST be captured for sidecar
681
+ * proof (with the leaf nonce embedded). The proof MUST be captured for sidecar
677
682
  * distribution: the nonce exists only here, so the on-chain signal is unresolvable without it.
678
683
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
679
684
  */
680
685
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
681
686
  const did = this.did;
682
- const canonicalBytes = new TextEncoder().encode((0, import_common4.canonicalize)(signedUpdate));
683
687
  const nonce = (0, import_utils2.randomBytes)(32);
684
688
  const tree = new import_smt.BTCR2MerkleTree();
685
- tree.addEntries([{ did, nonce, signedUpdate: canonicalBytes }]);
689
+ tree.addEntries([{ did, nonce, updateId: (0, import_common4.canonicalHashBytes)(signedUpdate) }]);
686
690
  tree.finalize();
687
691
  const proof = tree.proof(did);
688
692
  const txid = await this.buildSignAndBroadcast(tree.rootHash, signer, bitcoin, options);
@@ -1358,7 +1362,7 @@ var Identifier = class _Identifier {
1358
1362
  throw new import_common8.IdentifierError('Expected "network" to be a known network name', import_common8.INVALID_DID, { network });
1359
1363
  }
1360
1364
  const networkValue = import_common8.BitcoinNetworkNames[network];
1361
- if (networkValue === void 0) {
1365
+ if (typeof networkValue !== "number") {
1362
1366
  throw new import_common8.IdentifierError('Invalid "network" name', import_common8.INVALID_DID, { network });
1363
1367
  }
1364
1368
  if (idType === "KEY") {
@@ -2058,7 +2062,7 @@ function isSignedBTCR2Update(value) {
2058
2062
  }
2059
2063
  function isSMTProof(value) {
2060
2064
  if (!isRecord(value)) return false;
2061
- return typeof value.id === "string" && typeof value.collapsed === "string" && Array.isArray(value.hashes);
2065
+ return typeof value.id === "string" && typeof value.collapsed === "string" && Array.isArray(value.hashes) && value.hashes.every((h) => typeof h === "string") && (value.nonce === void 0 || typeof value.nonce === "string") && (value.updateId === void 0 || typeof value.updateId === "string");
2062
2066
  }
2063
2067
  function validateMinConf(value) {
2064
2068
  if (value === void 0) return DEFAULT_MIN_CONF;
@@ -2113,7 +2117,12 @@ var Resolver = class _Resolver {
2113
2117
  #currentDocument;
2114
2118
  #providedGenesisDocument = null;
2115
2119
  #beaconServicesSignals = /* @__PURE__ */ new Map();
2116
- #processedServices = /* @__PURE__ */ new Set();
2120
+ /**
2121
+ * The beacon addresses whose signals became update tuples. Keyed by address, not by
2122
+ * service id: a rotation keeps the id and changes the address, and the specification
2123
+ * has no per-service state (ADR 118).
2124
+ */
2125
+ #processedAddresses = /* @__PURE__ */ new Set();
2117
2126
  /** The beacon addresses the resolver requested signals for: `scanned_beacons` of the specification. */
2118
2127
  #requestCache = /* @__PURE__ */ new Set();
2119
2128
  /**
@@ -2128,15 +2137,23 @@ var Resolver = class _Resolver {
2128
2137
  * The state of the specification loop, carried across every pass: the version counter
2129
2138
  * (`current_version_id`), the update-hash history that backs duplicate confirmation
2130
2139
  * (`update_hash_history`), the confirmations of the block that contains the most
2131
- * recently applied unique update (`block_confirmations`), and the header time of that
2132
- * block as `updated`. A pass that finds a new beacon address returns to discovery, so
2133
- * the state must not restart: a restart would reject a linear history whose later
2134
- * updates are announced on beacons that earlier updates added.
2140
+ * recently applied unique update (`block_confirmations`), the height of that block
2141
+ * (`current_block_height`), and the header time of that block as `updated`. A pass
2142
+ * that finds a new beacon address returns to discovery, so the state must not
2143
+ * restart: a restart would reject a linear history whose later updates are
2144
+ * announced on beacons that earlier updates added.
2135
2145
  */
2136
2146
  #currentVersionId = 1;
2137
2147
  #updateHashHistory = [];
2138
2148
  #blockConfirmations = 0;
2139
2149
  #updated;
2150
+ /**
2151
+ * The height of the block that contains the most recently applied update
2152
+ * (`current_block_height`). "Find Beacon Signals" keeps only the signals at or above
2153
+ * it: a beacon address that an update added has no signals for this DID before the
2154
+ * block of that update.
2155
+ */
2156
+ #currentBlockHeight = 0;
2140
2157
  /**
2141
2158
  * Opt-in upper bound on multi-round beacon-discovery passes. `Infinity` (the
2142
2159
  * default) leaves discovery unbounded; termination is already guaranteed by
@@ -2557,7 +2574,8 @@ var Resolver = class _Resolver {
2557
2574
  case "BeaconProcess" /* BeaconProcess */: {
2558
2575
  const allNeeds = [];
2559
2576
  for (const [service, signals] of this.#beaconServicesSignals) {
2560
- if (this.#processedServices.has(service.id) || !signals.length) continue;
2577
+ const address = BeaconUtils.parseBitcoinAddress(service.serviceEndpoint);
2578
+ if (this.#processedAddresses.has(address) || !signals.length) continue;
2561
2579
  const eligible = this.#eligibleSignals(signals);
2562
2580
  if (!eligible.length) continue;
2563
2581
  const beacon = BeaconFactory.establish(service, this.#currentDocument.id);
@@ -2565,11 +2583,10 @@ var Resolver = class _Resolver {
2565
2583
  if (result.needs.length > 0) {
2566
2584
  allNeeds.push(...result.needs);
2567
2585
  } else {
2568
- const address = BeaconUtils.parseBitcoinAddress(service.serviceEndpoint);
2569
2586
  this.#unsortedUpdates.push(...result.updates.map(
2570
2587
  ([update, block]) => [update, block, address]
2571
2588
  ));
2572
- this.#processedServices.add(service.id);
2589
+ this.#processedAddresses.add(address);
2573
2590
  }
2574
2591
  }
2575
2592
  if (allNeeds.length > 0) {
@@ -2632,6 +2649,7 @@ var Resolver = class _Resolver {
2632
2649
  this.#updateHashHistory.push((0, import_common12.canonicalHashBytes)(unsignedUpdate));
2633
2650
  this.#currentVersionId++;
2634
2651
  this.#blockConfirmations = block.confirmations;
2652
+ this.#currentBlockHeight = block.height;
2635
2653
  this.#updated = import_common12.DateUtils.toISOStringNonFractional(import_common12.DateUtils.blocktimeToTimestamp(block.time));
2636
2654
  if (this.#hasUnscannedBeacons()) {
2637
2655
  if (++this.#discoveryRounds > this.#maxDiscoveryRounds) {
@@ -2687,8 +2705,12 @@ var Resolver = class _Resolver {
2687
2705
  * malformed. It fails fast here with a typed error, in the style of the
2688
2706
  * {@link provide} guards, and not later with an invalid date or a false
2689
2707
  * `versionTime` comparison in the ProcessUpdate phase.
2708
+ *
2709
+ * "Find Beacon Signals" finds only the transactions at or above
2710
+ * `current_block_height`, the height of the block of the most recently applied
2711
+ * update. A signal below it is excluded: it emits no data need and applies no update.
2690
2712
  * @param {Array<BeaconSignal>} signals The signals the caller provided for one service.
2691
- * @returns {Array<BeaconSignal>} The signals at or above the threshold, in the given order.
2713
+ * @returns {Array<BeaconSignal>} The signals at or above the threshold and the height, in the given order.
2692
2714
  * @throws {ResolveError} `INVALID_DID_UPDATE` for an eligible signal with no valid block metadata.
2693
2715
  */
2694
2716
  #eligibleSignals(signals) {
@@ -2712,6 +2734,7 @@ var Resolver = class _Resolver {
2712
2734
  }
2713
2735
  );
2714
2736
  }
2737
+ if (block.height < this.#currentBlockHeight) continue;
2715
2738
  eligible.push(signal);
2716
2739
  }
2717
2740
  return eligible;
@@ -2754,7 +2777,7 @@ var Resolver = class _Resolver {
2754
2777
  if (announcementHash !== need.announcementHash) {
2755
2778
  throw new import_common12.ResolveError(
2756
2779
  `CAS announcement hash mismatch: expected ${need.announcementHash}, got ${announcementHash}.`,
2757
- import_common12.INVALID_DID_UPDATE,
2780
+ import_common12.MISSING_UPDATE_DATA,
2758
2781
  { expected: need.announcementHash, actual: announcementHash }
2759
2782
  );
2760
2783
  }
@@ -2773,7 +2796,7 @@ var Resolver = class _Resolver {
2773
2796
  if (updateHash !== need.updateHash) {
2774
2797
  throw new import_common12.ResolveError(
2775
2798
  `Signed update hash mismatch: expected ${need.updateHash}, got ${updateHash}.`,
2776
- import_common12.INVALID_DID_UPDATE,
2799
+ import_common12.INVALID_SIGNAL_DATA,
2777
2800
  { expected: need.updateHash, actual: updateHash }
2778
2801
  );
2779
2802
  }
@@ -2784,16 +2807,21 @@ var Resolver = class _Resolver {
2784
2807
  if (!isSMTProof(data)) {
2785
2808
  throw new import_common12.ResolveError(
2786
2809
  "Provided data for NeedSMTProof is not an SMT proof.",
2787
- import_common12.INVALID_DID_UPDATE,
2810
+ import_common12.INVALID_SIGNAL_DATA,
2788
2811
  { kind: need.kind }
2789
2812
  );
2790
2813
  }
2791
- const proofIdHex = (0, import_common12.encode)((0, import_common12.decode)(data.id, "base64urlnopad"), "hex");
2792
- if (proofIdHex !== need.smtRootHash) {
2814
+ let proofIdHex2;
2815
+ try {
2816
+ proofIdHex2 = (0, import_common12.encode)((0, import_common12.decode)(data.id, "base64urlnopad"), "hex");
2817
+ } catch {
2818
+ proofIdHex2 = void 0;
2819
+ }
2820
+ if (proofIdHex2 !== need.smtRootHash) {
2793
2821
  throw new import_common12.ResolveError(
2794
- `SMT proof root hash mismatch: expected ${need.smtRootHash}, got ${proofIdHex}`,
2795
- import_common12.INVALID_DID_UPDATE,
2796
- { expected: need.smtRootHash, actual: proofIdHex }
2822
+ `SMT proof root hash mismatch: expected ${need.smtRootHash}, got ${proofIdHex2 ?? "an id that does not decode"}.`,
2823
+ import_common12.INVALID_SIGNAL_DATA,
2824
+ { expected: need.smtRootHash, actual: proofIdHex2 }
2797
2825
  );
2798
2826
  }
2799
2827
  this.#sidecarData.smtMap.set(need.smtRootHash, data);
@@ -1,8 +1,17 @@
1
- import { canonicalize } from '@did-btcr2/common';
2
- import { base64UrlToHash, blockHash, BTCR2MerkleTree, didToIndex, hashToHex, verifySerializedProof } from '@did-btcr2/smt';
1
+ import { canonicalHashBytes, INVALID_SIGNAL_DATA } from '@did-btcr2/common';
2
+ import { base64UrlToHash, BTCR2MerkleTree, hashToHex, verifyProof } from '@did-btcr2/smt';
3
3
  import { randomBytes } from '@noble/hashes/utils';
4
4
  import { SinglePartyBeacon } from './beacon.js';
5
5
  import { SMTBeaconError } from './error.js';
6
+ /** The hex of the base64url `id` of a proof, or `undefined` if the id does not decode to 32 bytes. */
7
+ function proofIdHex(proof) {
8
+ try {
9
+ return hashToHex(base64UrlToHash(proof.id));
10
+ }
11
+ catch {
12
+ return undefined;
13
+ }
14
+ }
6
15
  /**
7
16
  * Implements {@link https://dcdpr.github.io/did-btcr2/terminology.html#smt-beacon | SMT Beacon}.
8
17
  *
@@ -27,15 +36,17 @@ export class SMTBeacon extends SinglePartyBeacon {
27
36
  /**
28
37
  * Implements {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-smt-beacon | 7.2.e.1 Process SMT Beacon}.
29
38
  *
30
- * For each signal, the signalBytes contain the hex-encoded SMT root hash.
31
- * This method looks up the SMT Proof from the sidecar by root hash,
32
- * validates the Merkle inclusion proof, and retrieves the corresponding
33
- * signed update using the proof's updateId.
39
+ * For each signal, the signalBytes contain the hex-encoded SMT root hash
40
+ * (`smt_root`). This method looks up the SMT Proof from the sidecar by root
41
+ * hash, checks that the id of the proof is the root, verifies the proof with
42
+ * the SMT Proof Verification algorithm, and retrieves the signed update by the
43
+ * proof's updateId. A proof with no updateId announces no update for the DID.
34
44
  *
35
45
  * @param {Array<BeaconSignal>} signals The array of Beacon Signals to process.
36
46
  * @param {SidecarData} sidecar The sidecar data associated with the SMT Beacon.
37
47
  * @returns {BeaconProcessResult} Successfully resolved updates and any data needs.
38
- * @throws {SMTBeaconError} if proof verification fails or proof is malformed.
48
+ * @throws {SMTBeaconError} `INVALID_SIGNAL_DATA` if the id of the proof is not the
49
+ * signal root, or if the proof does not verify.
39
50
  */
40
51
  processSignals(signals, sidecar) {
41
52
  const updates = new Array();
@@ -43,7 +54,8 @@ export class SMTBeacon extends SinglePartyBeacon {
43
54
  // The DID under resolution keys this beacon's leaf index.
44
55
  const did = this.did;
45
56
  for (const signal of signals) {
46
- // Signal bytes are the hex-encoded SMT root hash; smtMap is keyed by proof.id (also hex)
57
+ // "Process SMT Beacon": the signal bytes are smt_root, the hex SMT root hash.
58
+ // The smtMap is keyed by the hex of proof.id. No entry = a need for the proof.
47
59
  const smtProof = sidecar.smtMap.get(signal.signalBytes);
48
60
  if (!smtProof) {
49
61
  // SMT Proof not available, emit a need
@@ -54,29 +66,23 @@ export class SMTBeacon extends SinglePartyBeacon {
54
66
  });
55
67
  continue;
56
68
  }
57
- // Nonce is required for proof verification (inclusion and non-inclusion).
58
- if (!smtProof.nonce) {
59
- throw new SMTBeaconError('SMT proof missing required nonce field.', 'INVALID_SMT_PROOF', { smtProof, did });
69
+ // The id of the proof must equal smt_root. The resolver keys the map by the
70
+ // hex of the id, so its entries pass. A caller-built map is checked here too.
71
+ if (proofIdHex(smtProof) !== signal.signalBytes) {
72
+ throw new SMTBeaconError(`SMT proof id does not equal the signal root ${signal.signalBytes}.`, INVALID_SIGNAL_DATA, { smtProof, did, smtRootHash: signal.signalBytes });
60
73
  }
61
- // Verify the SMT proof against the on-chain root. Leaf value per spec:
62
- // inclusion = hash(hash(nonce) || updateId); non-inclusion = hash(hash(nonce)).
63
- // Hash fields are base64url (no padding) per the SMT Proof spec. A
64
- // non-inclusion proof (absent updateId) is verified too, not trusted.
65
- const index = didToIndex(did);
66
- const nonceHash = base64UrlToHash(smtProof.nonce);
67
- const candidateHash = smtProof.updateId
68
- ? blockHash(blockHash(nonceHash), base64UrlToHash(smtProof.updateId))
69
- : blockHash(blockHash(nonceHash));
70
- const valid = verifySerializedProof(smtProof, index, candidateHash);
71
- if (!valid) {
72
- throw new SMTBeaconError('SMT proof verification failed.', 'INVALID_SMT_PROOF', { smtProof, did });
74
+ // Verify the proof with the SMT Proof Verification algorithm. The nonce and
75
+ // updateId fields of the proof select the leaf value (four arms). A proof that
76
+ // does not decode, or that does not walk to the root, is INVALID_SIGNAL_DATA.
77
+ if (!verifyProof(smtProof, did)) {
78
+ throw new SMTBeaconError(`SMT proof verification failed for the signal root ${signal.signalBytes}.`, INVALID_SIGNAL_DATA, { smtProof, did, smtRootHash: signal.signalBytes });
73
79
  }
74
- // Non-inclusion proof verified: no update for this DID this epoch, skip.
75
- if (!smtProof.updateId) {
80
+ // No updateId: the signal announces no update for this DID. No tuple.
81
+ if (smtProof.updateId === undefined) {
76
82
  continue;
77
83
  }
78
84
  // Look up the signed update in sidecar updateMap (keyed by hex canonical
79
- // hash). The proof's updateId is base64url, so convert to hex to match.
85
+ // hash). The proof's updateId is the same hash in base64url.
80
86
  const updateHashHex = hashToHex(base64UrlToHash(smtProof.updateId));
81
87
  const signedUpdate = sidecar.updateMap.get(updateHashHex);
82
88
  if (!signedUpdate) {
@@ -105,20 +111,20 @@ export class SMTBeacon extends SinglePartyBeacon {
105
111
  * @param {BitcoinConnection} bitcoin The Bitcoin network connection.
106
112
  * @param {BroadcastOptions} [options] Optional broadcast configuration (e.g. fee estimator).
107
113
  * @return {Promise<BroadcastResult>} The signed update, the signal txid, and the SMT
108
- * inclusion proof (with the leaf nonce embedded). The proof MUST be captured for sidecar
114
+ * proof (with the leaf nonce embedded). The proof MUST be captured for sidecar
109
115
  * distribution: the nonce exists only here, so the on-chain signal is unresolvable without it.
110
116
  * @throws {BeaconError} if the bitcoin address is invalid, unfunded, or UTXO cannot cover the fee.
111
117
  */
112
118
  async broadcastSignal(signedUpdate, signer, bitcoin, options) {
113
119
  // The DID keys this beacon's leaf index in the tree.
114
120
  const did = this.did;
115
- // Build a single-entry SMT from the signed update
116
- const canonicalBytes = new TextEncoder().encode(canonicalize(signedUpdate));
121
+ // Build a single-entry SMT in nonce mode: the leaf value is
122
+ // hash(hash(nonce) + updateId), with updateId the JSON Document Hash of the update.
117
123
  const nonce = randomBytes(32);
118
124
  const tree = new BTCR2MerkleTree();
119
- tree.addEntries([{ did, nonce, signedUpdate: canonicalBytes }]);
125
+ tree.addEntries([{ did, nonce, updateId: canonicalHashBytes(signedUpdate) }]);
120
126
  tree.finalize();
121
- // Serialize the inclusion proof (carrying the nonce and updateId) before
127
+ // Serialize the proof (carrying the nonce and updateId) before
122
128
  // broadcasting: it is the only artifact that can link the on-chain root back
123
129
  // to the update, and the nonce it embeds is irrecoverable once dropped.
124
130
  const proof = tree.proof(did);
@@ -1 +1 @@
1
- {"version":3,"file":"smt-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/smt-beacon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smt-beacon.js","sourceRoot":"","sources":["../../../../src/core/beacon/smt-beacon.ts"],"names":[],"mappings":"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"}
@@ -53,8 +53,10 @@ export class Identifier {
53
53
  if (typeof network !== 'string') {
54
54
  throw new IdentifierError('Expected "network" to be a known network name', INVALID_DID, { network });
55
55
  }
56
+ // The numeric enum also maps a value string to a name: '5' reads as 'mutinynet', and
57
+ // the low nibble becomes 0 (bitcoin). Only a name maps to a number.
56
58
  const networkValue = BitcoinNetworkNames[network];
57
- if (networkValue === undefined) {
59
+ if (typeof networkValue !== 'number') {
58
60
  throw new IdentifierError('Invalid "network" name', INVALID_DID, { network });
59
61
  }
60
62
  // genesisBytes MUST match the identifier type: a valid compressed secp256k1 public key for KEY,
@@ -1 +1 @@
1
- {"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../../src/core/identifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identifier.js","sourceRoot":"","sources":["../../../src/core/identifier.ts"],"names":[],"mappings":"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"}