bch-rpa 1.1.0 → 1.2.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/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.0 (2026-11-07)
4
+
5
+ ### Added
6
+
7
+ - `RpaMatch.childIndices` identifies the derivation index for each matching output
8
+
9
+ ### Fixed
10
+
11
+ - Discover every matching output, including multiple outputs to the same derived address, without requiring an address UTXO query to recover omitted outputs
12
+ - Emit uppercase CashCodes by default so QR encoders can use the more compact alphanumeric mode; decoding still accepts lowercase CashCodes
13
+
14
+ ### Migration
15
+
16
+ - When deriving a spending key for `outputIndices[i]`, use `childIndices[i]` rather than `i`. The `addresses` array still contains unique destinations indexed by child index.
17
+
18
+ ## 1.1.1 (2026-10-27)
19
+
20
+ ### Fixed
21
+
22
+ - Point the npm repository and homepage links to the public GitLab.com mirror
23
+
3
24
  ## 1.1.0 (2026-10-27)
4
25
 
5
26
  ### Migration
package/README.md CHANGED
@@ -54,7 +54,7 @@ const [payment] = prepareSend(decodePaycode(recipientCashCode), {
54
54
  // Build a transaction output paying payment.address.
55
55
  ```
56
56
 
57
- The designated P2PKH input must remain among the transaction's first 30 inputs. For nonzero scan prefixes, use [`grindPrefix()`](https://gitlab.com/selene.cash/bch-rpa/-/blob/v1.1.0/docs/INTEGRATION.md#grinding) when signing that input. The wallet then broadcasts the transaction.
57
+ The designated P2PKH input must remain among the transaction's first 30 inputs. For nonzero scan prefixes, use [`grindPrefix()`](https://gitlab.com/selene.cash/bch-rpa/-/blob/v1.1.1/docs/INTEGRATION.md#grinding) when signing that input. The wallet then broadcasts the transaction.
58
58
 
59
59
  ### Detect received payments
60
60
 
@@ -67,15 +67,17 @@ const tx = parseRawTransaction(rawTxHex);
67
67
  const matches = tryTransaction(tx, keys.scanPrivkey, keys.spendPubkey);
68
68
 
69
69
  for (const match of matches) {
70
- match.outputIndices.forEach((outputIndex, childIndex) => {
70
+ match.outputIndices.forEach((outputIndex, index) => {
71
71
  const spendingKey = deriveSpendingKey(
72
- keys.spendPrivkey, match.sharedSecret, childIndex,
72
+ keys.spendPrivkey, match.sharedSecret, match.childIndices[index],
73
73
  );
74
74
  // spendingKey controls tx.txid:outputIndex.
75
75
  });
76
76
  }
77
77
  ```
78
78
 
79
+ `outputIndices` includes every matching output, including repeated destinations. Use the corresponding `childIndices` entry to derive its spending key. `addresses` contains unique destinations indexed by child index.
80
+
79
81
  Check unspent status before counting or spending matched outputs. Without an RPA indexer, use `scanTransaction()` to perform prefix filtering locally.
80
82
 
81
83
  ## Integration notes
@@ -87,9 +89,9 @@ Check unspent status before counting or spending matched outputs. Without an RPA
87
89
 
88
90
  ## Reference
89
91
 
90
- - [Wallet integration guide](https://gitlab.com/selene.cash/bch-rpa/-/blob/v1.1.0/docs/INTEGRATION.md) — complete send/receive flows, server queries, and grinding.
91
- - [Public API](https://gitlab.com/selene.cash/bch-rpa/-/blob/v1.1.0/src/index.ts) and [TypeScript types](https://gitlab.com/selene.cash/bch-rpa/-/blob/v1.1.0/src/types.ts).
92
- - [Examples](https://gitlab.com/selene.cash/bch-rpa/-/tree/v1.1.0/examples) — sender, receiver, and HD wallet integration.
92
+ - [Wallet integration guide](https://gitlab.com/selene.cash/bch-rpa/-/blob/v1.1.1/docs/INTEGRATION.md) — complete send/receive flows, server queries, and grinding.
93
+ - [Public API](https://gitlab.com/selene.cash/bch-rpa/-/blob/v1.1.1/src/index.ts) and [TypeScript types](https://gitlab.com/selene.cash/bch-rpa/-/blob/v1.1.1/src/types.ts).
94
+ - [Examples](https://gitlab.com/selene.cash/bch-rpa/-/tree/v1.1.1/examples) — sender, receiver, and HD wallet integration.
93
95
  - [RPA specification](https://github.com/imaginaryusername/Reusable_specs/blob/master/reusable_addresses.md).
94
96
 
95
97
  ## License
package/dist/paycode.js CHANGED
@@ -51,7 +51,7 @@ export function encodePaycode(paycode) {
51
51
  ...payloadContents,
52
52
  ...new Array(CHECKSUM_SIZE).fill(0),
53
53
  ]));
54
- return `${prefix}:${encodeBech32([...payloadContents, ...checksum])}`;
54
+ return `${prefix}:${encodeBech32([...payloadContents, ...checksum])}`.toUpperCase();
55
55
  }
56
56
  export function decodePaycode(encoded) {
57
57
  const lower = encoded.toLowerCase();
@@ -1 +1 @@
1
- {"version":3,"file":"paycode.js","sourceRoot":"","sources":["../src/paycode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paycode.js","sourceRoot":"","sources":["../src/paycode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,+BAA+B,EAC/B,2BAA2B,EAC3B,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,SAAS,GACV,MAAM,kBAAkB,CAAC;AAG1B,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,MAAM,kBAAkB,GAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvE,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AACnD,MAAM,eAAe,GAA2B;IAC9C,CAAC,eAAe,CAAC,EAAE,CAAC;IACpB,CAAC,oBAAoB,CAAC,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,UAAsB,EACtB,WAAuB,EACvB,OAAqE;IAErE,MAAM,OAAO,GAAY;QACvB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,CAAC;QACpC,UAAU,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC;QACtC,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,CAAC;QACxC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;KAC7B,CAAC;IACF,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;IAC7C,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAC7B,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACrC,wCAAwC;IACxC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClF,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC;IAC9E,MAAM,eAAe,GAAG,WAAW,CAAC;QAClC,GAAG,EAAE,OAAO;QACZ,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;KACpB,CAAC,CAAC;IACH,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,qCAAqC,eAAe,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,QAAQ,GAAG,+BAA+B,CAC9C,2BAA2B,CAAC;QAC1B,GAAG,qBAAqB,CAAC,MAAM,CAAC;QAChC,CAAC;QACD,GAAG,eAAe;QAClB,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KACpC,CAAC,CACH,CAAC;IAEF,OAAO,GAAG,MAAM,IAAI,YAAY,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC;IACvC,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IACtD,IAAI,gBAAgB,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,2BAA2B,CAAC;QAC9B,GAAG,qBAAqB,CAAC,MAAM,CAAC;QAChC,CAAC;QACD,GAAG,gBAAgB;KACpB,CAAC,KAAK,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC;QAClC,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;QAC9C,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IACH,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,4BAA4B,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,0CAA0C,YAAY,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,QAAQ,CACvB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,UAAU,CACnB,CAAC;IACF,MAAM,OAAO,GAAY;QACvB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QAClC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC;KAClC,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,SAAS,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QAC3F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACrC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAgB,EAAE,GAAY;IACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,oFAAoF;IACpF,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC"}
package/dist/scan.js CHANGED
@@ -108,6 +108,7 @@ function tryInput(inputPubkey, outpointTxid, outpointIndex, inputIndex, outputs,
108
108
  return decoded.bytecode;
109
109
  });
110
110
  const matchedIndices = [];
111
+ const childIndices = [];
111
112
  const matchedAddresses = [];
112
113
  // Try child index 0 first
113
114
  for (let childIndex = 0; childIndex < outputs.length; childIndex++) {
@@ -118,14 +119,14 @@ function tryInput(inputPubkey, outpointTxid, outpointIndex, inputIndex, outputs,
118
119
  const outputScript = outputScripts[o];
119
120
  if (outputScript !== null && binsAreEqual(outputScript, candidateScript)) {
120
121
  matchedIndices.push(o);
121
- matchedAddresses.push(candidate.address);
122
+ childIndices.push(childIndex);
122
123
  found = true;
123
- break;
124
124
  }
125
125
  }
126
126
  // Stop at first gap — spec requires consecutive child indices from 0
127
127
  if (!found)
128
128
  break;
129
+ matchedAddresses.push(candidate.address);
129
130
  }
130
131
  if (matchedIndices.length === 0)
131
132
  return null;
@@ -133,6 +134,7 @@ function tryInput(inputPubkey, outpointTxid, outpointIndex, inputIndex, outputs,
133
134
  sharedSecret,
134
135
  inputIndex,
135
136
  outputIndices: matchedIndices,
137
+ childIndices,
136
138
  addresses: matchedAddresses,
137
139
  };
138
140
  }
package/dist/scan.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -19,6 +19,7 @@ export interface RpaMatch {
19
19
  sharedSecret: Uint8Array;
20
20
  inputIndex: number;
21
21
  outputIndices: number[];
22
+ childIndices: number[];
22
23
  addresses: string[];
23
24
  }
24
25
  export interface RpaScanInput {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,UAAU,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,UAAU,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,UAAU,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,UAAU,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,UAAU,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,UAAU,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -105,12 +105,15 @@ const matches = tryTransaction(rpaTx, scanPrivkey, spendPubkey);
105
105
  for (const match of matches) {
106
106
  // Derive spending key for each matched output
107
107
  for (let i = 0; i < match.outputIndices.length; i++) {
108
- const spendingKey = deriveSpendingKey(spendPrivkey, match.sharedSecret, i);
109
- // spendingKey is a 32-byte private key that controls match.addresses[i]
108
+ const childIndex = match.childIndices[i];
109
+ const spendingKey = deriveSpendingKey(spendPrivkey, match.sharedSecret, childIndex);
110
+ // Controls tx output match.outputIndices[i] at match.addresses[childIndex].
110
111
  }
111
112
  }
112
113
  ```
113
114
 
115
+ `outputIndices` includes every matching output, even when several outputs pay the same derived address. `childIndices` maps each output to its derivation index; do not use its position in `outputIndices` as the child index. `addresses` remains a list of unique destinations indexed by child index.
116
+
114
117
  Ownership detection compares decoded locking scripts rather than CashAddr strings. Ordinary and token-aware encodings of the same destination match identically. Non-address outputs are skipped without changing their transaction output indices.
115
118
 
116
119
  Parsing checks transaction encoding, and RPA scanning identifies outputs controlled by the recipient's keys. Neither performs consensus validation, verifies inclusion, or establishes that an output remains unspent. The wallet's node and verification workflow own those checks.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bch-rpa",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Bitcoin Cash Reusable Payment Addresses (RPA) - pure TypeScript over libauth",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -21,9 +21,9 @@
21
21
  "sideEffects": false,
22
22
  "repository": {
23
23
  "type": "git",
24
- "url": "https://git.xulu.tech/selene.cash/bch-rpa.git"
24
+ "url": "git+https://gitlab.com/selene.cash/bch-rpa.git"
25
25
  },
26
- "homepage": "https://git.xulu.tech/selene.cash/bch-rpa",
26
+ "homepage": "https://gitlab.com/selene.cash/bch-rpa",
27
27
  "bugs": {
28
28
  "url": "https://git.xulu.tech/selene.cash/bch-rpa/issues"
29
29
  },