Commit a9a4ae0
committed
feat(wasm-utxo)!: add index-based PSBT/transaction mutation ops
Add index-based insertion and removal methods to PSBT and transaction
types, enabling flexible construction and editing workflows.
## Breaking Changes
- All `add_*` methods now return `Result<usize, String>` consistently
- `addInput`, `addOutput`, and related wallet methods may now throw
errors for out-of-bounds indices
- `inputCount`, `outputCount`, `lockTime`, and `version` changed from
property accessors to methods (use `()` to call)
- `unsignedTxid` renamed to `unsignedTxId` for consistency
- `IPsbtIntrospection` renamed to `IPsbt` to reflect mutation support
- `IPsbtIntrospectionWithAddress` renamed to `IPsbtWithAddress`
## New Features
- `addInputAtIndex`/`addOutputAtIndex` for PSBTs and transactions
- `addWalletInputAtIndex`/`addWalletOutputAtIndex` for wallet ops
- `addReplayProtectionInputAtIndex` for replay protection
- `removeInput`/`removeOutput` methods for PSBTs
- New `psbt_ops` module with bounds-checked operations
## Implementation
- All append operations delegate to index variants at `len()`
- Bounds checking ensures indices are `<= len` (allow append)
- Consistent error handling across all mutation operations
- Methods maintain PSBT/transaction invariants during mutation
Co-authored-by: llm-git <llm-git@ttll.de>
Issue: BTC-30491 parent bb5a133 commit a9a4ae0
14 files changed
Lines changed: 628 additions & 335 deletions
File tree
- packages/wasm-utxo
- js
- fixedScriptWallet
- src
- fixed_script_wallet/bitgo_psbt
- wasm
- fixed_script_wallet
- test
- bip322
- fixedScript
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
127 | | - | |
| 127 | + | |
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| |||
202 | 202 | | |
203 | 203 | | |
204 | 204 | | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
205 | 244 | | |
206 | 245 | | |
207 | 246 | | |
| |||
225 | 264 | | |
226 | 265 | | |
227 | 266 | | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
228 | 295 | | |
229 | | - | |
230 | | - | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | 296 | | |
242 | | - | |
243 | | - | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
250 | | - | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | 297 | | |
264 | 298 | | |
265 | 299 | | |
| |||
321 | 355 | | |
322 | 356 | | |
323 | 357 | | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
324 | 380 | | |
325 | 381 | | |
326 | 382 | | |
| |||
371 | 427 | | |
372 | 428 | | |
373 | 429 | | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
374 | 445 | | |
375 | 446 | | |
376 | 447 | | |
| |||
395 | 466 | | |
396 | 467 | | |
397 | 468 | | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
398 | 486 | | |
399 | 487 | | |
400 | 488 | | |
| |||
407 | 495 | | |
408 | 496 | | |
409 | 497 | | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
410 | 506 | | |
411 | 507 | | |
412 | 508 | | |
413 | 509 | | |
414 | | - | |
| 510 | + | |
415 | 511 | | |
416 | 512 | | |
417 | 513 | | |
418 | 514 | | |
419 | 515 | | |
420 | 516 | | |
421 | 517 | | |
422 | | - | |
| 518 | + | |
423 | 519 | | |
424 | 520 | | |
425 | 521 | | |
426 | | - | |
427 | | - | |
428 | | - | |
429 | | - | |
430 | | - | |
| 522 | + | |
431 | 523 | | |
432 | 524 | | |
433 | 525 | | |
| |||
828 | 920 | | |
829 | 921 | | |
830 | 922 | | |
831 | | - | |
| 923 | + | |
832 | 924 | | |
833 | 925 | | |
834 | 926 | | |
835 | | - | |
836 | | - | |
837 | | - | |
838 | | - | |
839 | | - | |
| 927 | + | |
840 | 928 | | |
841 | 929 | | |
842 | 930 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
122 | 135 | | |
123 | 136 | | |
124 | 137 | | |
| |||
130 | 143 | | |
131 | 144 | | |
132 | 145 | | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
| 146 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
9 | 23 | | |
10 | 24 | | |
11 | | - | |
12 | | - | |
| 25 | + | |
| 26 | + | |
13 | 27 | | |
14 | 28 | | |
15 | 29 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
44 | 48 | | |
45 | 49 | | |
46 | 50 | | |
47 | 51 | | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
| |||
0 commit comments