@bsv/wallet-toolbox 1.6.33 → 1.6.34

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 (92) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/docs/client.md +340 -93
  3. package/docs/monitor.md +34 -12
  4. package/docs/storage.md +49 -1
  5. package/docs/wallet.md +340 -93
  6. package/mobile/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  7. package/mobile/out/src/monitor/tasks/TaskReorg.js +5 -1
  8. package/mobile/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  9. package/mobile/out/src/sdk/WERR_errors.d.ts +8 -0
  10. package/mobile/out/src/sdk/WERR_errors.d.ts.map +1 -1
  11. package/mobile/out/src/sdk/WERR_errors.js +33 -0
  12. package/mobile/out/src/sdk/WERR_errors.js.map +1 -1
  13. package/mobile/out/src/sdk/WalletError.d.ts +19 -0
  14. package/mobile/out/src/sdk/WalletError.d.ts.map +1 -1
  15. package/mobile/out/src/sdk/WalletError.js +42 -1
  16. package/mobile/out/src/sdk/WalletError.js.map +1 -1
  17. package/mobile/out/src/sdk/WalletErrorFromJson.d.ts +12 -0
  18. package/mobile/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -0
  19. package/mobile/out/src/sdk/WalletErrorFromJson.js +69 -0
  20. package/mobile/out/src/sdk/WalletErrorFromJson.js.map +1 -0
  21. package/mobile/out/src/sdk/index.d.ts +1 -0
  22. package/mobile/out/src/sdk/index.d.ts.map +1 -1
  23. package/mobile/out/src/sdk/index.js +1 -0
  24. package/mobile/out/src/sdk/index.js.map +1 -1
  25. package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.js +1 -1
  26. package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  27. package/mobile/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  28. package/mobile/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +16 -9
  29. package/mobile/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  30. package/mobile/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  31. package/mobile/out/src/storage/WalletStorageManager.js.map +1 -1
  32. package/mobile/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  33. package/mobile/out/src/storage/remoting/StorageClient.js +3 -5
  34. package/mobile/out/src/storage/remoting/StorageClient.js.map +1 -1
  35. package/mobile/package-lock.json +2 -2
  36. package/mobile/package.json +1 -1
  37. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
  38. package/out/src/monitor/tasks/TaskReorg.js +5 -1
  39. package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
  40. package/out/src/sdk/WERR_errors.d.ts +8 -0
  41. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  42. package/out/src/sdk/WERR_errors.js +33 -0
  43. package/out/src/sdk/WERR_errors.js.map +1 -1
  44. package/out/src/sdk/WalletError.d.ts +19 -0
  45. package/out/src/sdk/WalletError.d.ts.map +1 -1
  46. package/out/src/sdk/WalletError.js +42 -1
  47. package/out/src/sdk/WalletError.js.map +1 -1
  48. package/out/src/sdk/WalletErrorFromJson.d.ts +12 -0
  49. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -0
  50. package/out/src/sdk/WalletErrorFromJson.js +69 -0
  51. package/out/src/sdk/WalletErrorFromJson.js.map +1 -0
  52. package/out/src/sdk/__test/WalletError.test.d.ts +2 -0
  53. package/out/src/sdk/__test/WalletError.test.d.ts.map +1 -0
  54. package/out/src/sdk/__test/WalletError.test.js +255 -0
  55. package/out/src/sdk/__test/WalletError.test.js.map +1 -0
  56. package/out/src/sdk/index.d.ts +1 -0
  57. package/out/src/sdk/index.d.ts.map +1 -1
  58. package/out/src/sdk/index.js +1 -0
  59. package/out/src/sdk/index.js.map +1 -1
  60. package/out/src/services/__tests/verifyBeef.test.js.map +1 -1
  61. package/out/src/services/chaintracker/ChaintracksChainTracker.js +1 -1
  62. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  63. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
  64. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +16 -9
  65. package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
  66. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  67. package/out/src/storage/WalletStorageManager.js.map +1 -1
  68. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  69. package/out/src/storage/remoting/StorageClient.js +3 -5
  70. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  71. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  72. package/out/src/storage/remoting/StorageServer.js +12 -10
  73. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  74. package/out/test/Wallet/specOps/specOps.man.test.js +8 -6
  75. package/out/test/Wallet/specOps/specOps.man.test.js.map +1 -1
  76. package/out/tsconfig.all.tsbuildinfo +1 -1
  77. package/package.json +1 -1
  78. package/src/monitor/tasks/TaskReorg.ts +5 -1
  79. package/src/sdk/WERR_errors.ts +34 -0
  80. package/src/sdk/WalletError.ts +42 -1
  81. package/src/sdk/WalletErrorFromJson.ts +80 -0
  82. package/src/sdk/WalletStorage.interfaces.ts +3 -3
  83. package/src/sdk/__test/WalletError.test.ts +318 -0
  84. package/src/sdk/index.ts +1 -0
  85. package/src/services/__tests/verifyBeef.test.ts +0 -1
  86. package/src/services/chaintracker/ChaintracksChainTracker.ts +1 -1
  87. package/src/services/chaintracker/chaintracks/util/ChaintracksFetch.ts +18 -11
  88. package/src/storage/WalletStorageManager.ts +16 -19
  89. package/src/storage/methods/internalizeAction.ts +1 -1
  90. package/src/storage/remoting/StorageClient.ts +4 -6
  91. package/src/storage/remoting/StorageServer.ts +13 -11
  92. package/test/Wallet/specOps/specOps.man.test.ts +6 -4
package/docs/monitor.md CHANGED
@@ -309,6 +309,18 @@ callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
309
309
  ```
310
310
  See also: [ProvenTransactionStatus](./client.md#interface-proventransactionstatus)
311
311
 
312
+ ###### Method processHeader
313
+
314
+ Handler for new header events from Chaintracks.
315
+
316
+ To minimize reorg processing, new headers are aged before processing via TaskNewHeader.
317
+ Therefore this handler is intentionally a no-op.
318
+
319
+ ```ts
320
+ processHeader(header: BlockHeader): void
321
+ ```
322
+ See also: [BlockHeader](./client.md#interface-blockheader)
323
+
312
324
  ###### Method processNewBlockHeader
313
325
 
314
326
  Process new chain header event received from Chaintracks
@@ -633,7 +645,7 @@ They must be shifted out as they are processed.
633
645
  The current implementation ages deactivation notifications by 10 minutes with each retry.
634
646
  If a successful proof update confirms original proof data after 3 retries, the original is retained.
635
647
 
636
- In normal operation there should never be any work for this task to perform.
648
+ In normal operation there should rarely be any work for this task to perform.
637
649
  The most common result is that there are no matching proven_txs records because
638
650
  generating new proven_txs records intentionally lags new block generation to
639
651
  minimize this disruption.
@@ -643,17 +655,8 @@ It is very disruptive to update a proven_txs record because:
643
655
  - Generated beefs are impacted.
644
656
  - Updated proof data may be unavailable at the time a reorg is first reported.
645
657
 
646
- Instead of reorg notification derived from new header notification, reorg repair to
647
- the proven_txs table is more effectively driven by noticing that a beef generated for a new
648
- createAction fails to verify against the chaintracker.
649
-
650
- An alternate approach to processing these events is to revert the proven_txs record to a proven_tx_reqs record.
651
- Pros:
652
- - The same multiple attempt logic that already exists is reused.
653
- - Failing to obtain a new proof already has transaction failure handling in place.
654
- - Generated beefs automatically become one generation deeper, potentially allowing transaction outputs to be spent.
655
- Cons:
656
- - Transactions must revert to un-proven / un-mined.
658
+ Proper reorg handling also requires repairing invalid beefs for new transactions when
659
+ createAction fails to verify a generated beef against the chaintracker.
657
660
 
658
661
  ```ts
659
662
  export class TaskReorg extends WalletMonitorTask {
@@ -669,6 +672,25 @@ export class TaskReorg extends WalletMonitorTask {
669
672
 
670
673
  See also: [DeactivedHeader](./monitor.md#interface-deactivedheader), [Monitor](./monitor.md#class-monitor), [WalletMonitorTask](./monitor.md#class-walletmonitortask)
671
674
 
675
+ ###### Method trigger
676
+
677
+ Shift aged deactivated headers onto `process` array.
678
+
679
+ ```ts
680
+ trigger(nowMsecsSinceEpoch: number): {
681
+ run: boolean;
682
+ }
683
+ ```
684
+
685
+ Returns
686
+
687
+ `run` true iff there are aged deactivated headers to process.
688
+
689
+ Argument Details
690
+
691
+ + **nowMsecsSinceEpoch**
692
+ + current time in milliseconds since epoch.
693
+
672
694
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
673
695
 
674
696
  ---
package/docs/storage.md CHANGED
@@ -4335,6 +4335,9 @@ export class WalletStorageManager implements sdk.WalletStorage {
4335
4335
  async findOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<TableOutputBasket[]>
4336
4336
  async findOutputs(args: sdk.FindOutputsArgs): Promise<TableOutput[]>
4337
4337
  async findProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>
4338
+ async reproveHeader(deactivatedHash: string): Promise<sdk.ReproveHeaderResult>
4339
+ async verifyAndRepairBeef(beef: Beef, allowTxidOnly?: boolean): Promise<boolean>
4340
+ async reproveProven(ptx: TableProvenTx, noUpdate?: boolean): Promise<sdk.ReproveProvenResult>
4338
4341
  async syncFromReader(identityKey: string, reader: sdk.WalletStorageSyncReader, activeSync?: sdk.WalletStorageSync, log: string = ""): Promise<{
4339
4342
  inserts: number;
4340
4343
  updates: number;
@@ -4352,7 +4355,7 @@ export class WalletStorageManager implements sdk.WalletStorage {
4352
4355
  }
4353
4356
  ```
4354
4357
 
4355
- See also: [AuthId](./client.md#interface-authid), [FindCertificatesArgs](./client.md#interface-findcertificatesargs), [FindOutputBasketsArgs](./client.md#interface-findoutputbasketsargs), [FindOutputsArgs](./client.md#interface-findoutputsargs), [FindProvenTxReqsArgs](./client.md#interface-findproventxreqsargs), [StorageCreateActionResult](./client.md#interface-storagecreateactionresult), [StorageInternalizeActionResult](./client.md#interface-storageinternalizeactionresult), [StorageProcessActionArgs](./client.md#interface-storageprocessactionargs), [StorageProcessActionResults](./client.md#interface-storageprocessactionresults), [StorageProvider](./storage.md#class-storageprovider), [TableCertificate](./storage.md#interface-tablecertificate), [TableCertificateX](./storage.md#interface-tablecertificatex), [TableOutput](./storage.md#interface-tableoutput), [TableOutputBasket](./storage.md#interface-tableoutputbasket), [TableProvenTxReq](./storage.md#interface-tableproventxreq), [TableSettings](./storage.md#interface-tablesettings), [TableUser](./storage.md#interface-tableuser), [ValidCreateActionArgs](./client.md#interface-validcreateactionargs), [ValidListActionsArgs](./client.md#interface-validlistactionsargs), [ValidListCertificatesArgs](./client.md#interface-validlistcertificatesargs), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs), [WalletServices](./client.md#interface-walletservices), [WalletStorage](./client.md#interface-walletstorage), [WalletStorageInfo](./client.md#interface-walletstorageinfo), [WalletStorageProvider](./client.md#interface-walletstorageprovider), [WalletStorageReader](./client.md#interface-walletstoragereader), [WalletStorageSync](./client.md#interface-walletstoragesync), [WalletStorageSyncReader](./client.md#interface-walletstoragesyncreader), [WalletStorageWriter](./client.md#interface-walletstoragewriter), [createAction](./storage.md#function-createaction), [internalizeAction](./storage.md#function-internalizeaction), [listActions](./storage.md#function-listactions), [listCertificates](./storage.md#function-listcertificates), [listOutputs](./storage.md#function-listoutputs), [processAction](./storage.md#function-processaction)
4358
+ See also: [AuthId](./client.md#interface-authid), [FindCertificatesArgs](./client.md#interface-findcertificatesargs), [FindOutputBasketsArgs](./client.md#interface-findoutputbasketsargs), [FindOutputsArgs](./client.md#interface-findoutputsargs), [FindProvenTxReqsArgs](./client.md#interface-findproventxreqsargs), [ReproveHeaderResult](./client.md#interface-reproveheaderresult), [ReproveProvenResult](./client.md#interface-reproveprovenresult), [StorageCreateActionResult](./client.md#interface-storagecreateactionresult), [StorageInternalizeActionResult](./client.md#interface-storageinternalizeactionresult), [StorageProcessActionArgs](./client.md#interface-storageprocessactionargs), [StorageProcessActionResults](./client.md#interface-storageprocessactionresults), [StorageProvider](./storage.md#class-storageprovider), [TableCertificate](./storage.md#interface-tablecertificate), [TableCertificateX](./storage.md#interface-tablecertificatex), [TableOutput](./storage.md#interface-tableoutput), [TableOutputBasket](./storage.md#interface-tableoutputbasket), [TableProvenTx](./storage.md#interface-tableproventx), [TableProvenTxReq](./storage.md#interface-tableproventxreq), [TableSettings](./storage.md#interface-tablesettings), [TableUser](./storage.md#interface-tableuser), [ValidCreateActionArgs](./client.md#interface-validcreateactionargs), [ValidListActionsArgs](./client.md#interface-validlistactionsargs), [ValidListCertificatesArgs](./client.md#interface-validlistcertificatesargs), [ValidListOutputsArgs](./client.md#interface-validlistoutputsargs), [WalletServices](./client.md#interface-walletservices), [WalletStorage](./client.md#interface-walletstorage), [WalletStorageInfo](./client.md#interface-walletstorageinfo), [WalletStorageProvider](./client.md#interface-walletstorageprovider), [WalletStorageReader](./client.md#interface-walletstoragereader), [WalletStorageSync](./client.md#interface-walletstoragesync), [WalletStorageSyncReader](./client.md#interface-walletstoragesyncreader), [WalletStorageWriter](./client.md#interface-walletstoragewriter), [createAction](./storage.md#function-createaction), [internalizeAction](./storage.md#function-internalizeaction), [listActions](./storage.md#function-listactions), [listCertificates](./storage.md#function-listcertificates), [listOutputs](./storage.md#function-listoutputs), [processAction](./storage.md#function-processaction)
4356
4359
 
4357
4360
  ###### Constructor
4358
4361
 
@@ -4470,6 +4473,39 @@ Throws
4470
4473
 
4471
4474
  WERR_INVALID_PARAMETER if canMakeAvailable returns false.
4472
4475
 
4476
+ ###### Method reproveHeader
4477
+
4478
+ For each proven_txs record currently sourcing its transaction merkle proof from the given deactivated header,
4479
+ attempt to reprove the transaction against the current chain,
4480
+ updating the proven_txs record if a new valid proof is found.
4481
+
4482
+ ```ts
4483
+ async reproveHeader(deactivatedHash: string): Promise<sdk.ReproveHeaderResult>
4484
+ ```
4485
+ See also: [ReproveHeaderResult](./client.md#interface-reproveheaderresult)
4486
+
4487
+ Argument Details
4488
+
4489
+ + **deactivatedHash**
4490
+ + An orphaned header than may have served as a proof source for proven_txs records.
4491
+
4492
+ ###### Method reproveProven
4493
+
4494
+ Attempt to reprove the transaction against the current chain,
4495
+ If a new valid proof is found and noUpdate is not true,
4496
+ update the proven_txs record with new block and merkle proof data.
4497
+ If noUpdate is true, the update to be applied is available in the returned result.
4498
+
4499
+ ```ts
4500
+ async reproveProven(ptx: TableProvenTx, noUpdate?: boolean): Promise<sdk.ReproveProvenResult>
4501
+ ```
4502
+ See also: [ReproveProvenResult](./client.md#interface-reproveprovenresult), [TableProvenTx](./storage.md#interface-tableproventx)
4503
+
4504
+ Argument Details
4505
+
4506
+ + **ptx**
4507
+ + proven_txs record to reprove
4508
+
4473
4509
  ###### Method runAsSync
4474
4510
 
4475
4511
  ```ts
@@ -4499,6 +4535,18 @@ Argument Details
4499
4535
  + **storageIdentityKey**
4500
4536
  + of current backup storage provider that is to become the new active provider.
4501
4537
 
4538
+ ###### Method verifyAndRepairBeef
4539
+
4540
+ Extends the Beef `verify` function to handle BUMPs that have become invalid due to a chain reorg.
4541
+
4542
+ Any merkle root that fails `isValidRootForHeight` triggers a reprove attempt for that block header.
4543
+ This results in proven_txs with invalid proofs being updated with new valid proofs where possible.
4544
+ Finally, a new beef is generated and verified against the chaintracker.
4545
+
4546
+ ```ts
4547
+ async verifyAndRepairBeef(beef: Beef, allowTxidOnly?: boolean): Promise<boolean>
4548
+ ```
4549
+
4502
4550
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4503
4551
 
4504
4552
  ---