@bsv/wallet-toolbox 2.13.0 → 2.13.2
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 +283 -1
- package/README.md +403 -5
- package/docs/README.md +8 -1
- package/docs/client.md +13057 -4632
- package/docs/identity-verification.md +196 -0
- package/docs/monitor.md +505 -190
- package/docs/services.md +4013 -1153
- package/docs/setup.md +98 -58
- package/docs/storage.md +5780 -1609
- package/docs/wallet.md +10155 -10871
- package/out/src/CWIStyleWalletManager.d.ts +6 -8
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +170 -125
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +2 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +3 -2
- package/out/src/Setup.js.map +1 -1
- package/out/src/ShamirWalletManager.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.js +34 -19
- package/out/src/ShamirWalletManager.js.map +1 -1
- package/out/src/SimpleWalletManager.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.js +7 -6
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.d.ts +50 -11
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +183 -107
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +282 -26
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.js +1 -1
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +30 -17
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +540 -312
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.d.ts +3 -2
- package/out/src/WalletSettingsManager.d.ts.map +1 -1
- package/out/src/WalletSettingsManager.js +141 -6
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
- package/out/src/entropy/EntropyCollector.js +3 -2
- package/out/src/entropy/EntropyCollector.js.map +1 -1
- package/out/src/fundWalletP2PKH.d.ts.map +1 -1
- package/out/src/fundWalletP2PKH.js +143 -44
- package/out/src/fundWalletP2PKH.js.map +1 -1
- package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
- package/out/src/mockchain/MockChainTracker.js +5 -5
- package/out/src/mockchain/MockChainTracker.js.map +1 -1
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +32 -8
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +17 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +206 -42
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +64 -16
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/monitorValidation.d.ts +12 -0
- package/out/src/monitor/monitorValidation.d.ts.map +1 -0
- package/out/src/monitor/monitorValidation.js +133 -0
- package/out/src/monitor/monitorValidation.js.map +1 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +28 -12
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
- package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +9 -3
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js +4 -4
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +17 -7
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -4
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +41 -13
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +26 -8
- package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +3 -2
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js +112 -2
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +17 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/services/Services.d.ts +4 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +260 -117
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
- package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.js +267 -66
- package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/LocalChainTracker.d.ts +26 -0
- package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/LocalChainTracker.js +180 -10
- package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +7 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +19 -0
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +237 -61
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +346 -30
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +375 -43
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +225 -24
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +225 -86
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -2
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +18 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +204 -14
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +486 -82
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +12 -2
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +7 -0
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +90 -24
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +9 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +100 -14
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +104 -8
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +79 -15
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +311 -93
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/classifyOutputUtxo.d.ts.map +1 -1
- package/out/src/services/classifyOutputUtxo.js +19 -10
- package/out/src/services/classifyOutputUtxo.js.map +1 -1
- package/out/src/services/fiatRateValidation.d.ts +12 -0
- package/out/src/services/fiatRateValidation.d.ts.map +1 -0
- package/out/src/services/fiatRateValidation.js +138 -0
- package/out/src/services/fiatRateValidation.js.map +1 -0
- package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
- package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
- package/out/src/services/getCanonicalMerklePath.js +90 -0
- package/out/src/services/getCanonicalMerklePath.js.map +1 -0
- package/out/src/services/providers/ARC.d.ts +3 -16
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +36 -37
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/ArcSSEClient.d.ts +25 -19
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +352 -85
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +1 -0
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +56 -41
- package/out/src/services/providers/Arcade.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts +3 -0
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +79 -12
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +221 -69
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
- package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
- package/out/src/services/providers/arcProviderConfig.js +83 -0
- package/out/src/services/providers/arcProviderConfig.js.map +1 -0
- package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
- package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
- package/out/src/services/providers/arcTxDataValidation.js +92 -0
- package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
- package/out/src/services/providers/exchangeRates.d.ts +3 -3
- package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
- package/out/src/services/providers/exchangeRates.js +153 -226
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
- package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
- package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
- package/out/src/services/validateMerklePathResult.d.ts +30 -0
- package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
- package/out/src/services/validateMerklePathResult.js +272 -0
- package/out/src/services/validateMerklePathResult.js.map +1 -0
- package/out/src/services/validatePostBeefResult.d.ts +17 -0
- package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
- package/out/src/services/validatePostBeefResult.js +334 -0
- package/out/src/services/validatePostBeefResult.js.map +1 -0
- package/out/src/services/validateRawTxResult.d.ts +6 -0
- package/out/src/services/validateRawTxResult.d.ts.map +1 -0
- package/out/src/services/validateRawTxResult.js +77 -0
- package/out/src/services/validateRawTxResult.js.map +1 -0
- package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
- package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
- package/out/src/services/validateScriptHashHistoryResult.js +99 -0
- package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
- package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
- package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
- package/out/src/services/validateStatusForTxidsResult.js +181 -0
- package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
- package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
- package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
- package/out/src/services/validateUtxoStatusResult.js +126 -0
- package/out/src/services/validateUtxoStatusResult.js.map +1 -0
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchPlanner.js +4 -3
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +6 -5
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +70 -76
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
- package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
- package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +6 -11
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts +4 -3
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +4 -2
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts +3 -3
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.js +9 -4
- package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +2 -2
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.d.ts +3 -2
- package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +3 -2
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
- package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
- package/out/src/storage/StorageIdb.d.ts +5 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +15 -20
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +5 -3
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +143 -93
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +19 -9
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +229 -145
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +1 -1
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +9 -42
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +1 -0
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +37 -36
- package/out/src/storage/StorageReaderWriter.js.map +1 -1
- package/out/src/storage/StorageSyncReader.d.ts +1 -1
- package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
- package/out/src/storage/StorageSyncReader.js +3 -36
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +8 -7
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +38 -65
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +16 -44
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +1 -0
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatch.js +3 -2
- package/out/src/storage/methods/actionBatch.js.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
- package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.js +40 -22
- package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.js +22 -30
- package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +57 -44
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +7 -6
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +7 -5
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +12 -11
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +5 -7
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +3 -3
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +134 -129
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
- package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js +2 -2
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
- package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +10 -9
- package/out/src/storage/methods/listActionsKnex.js.map +1 -1
- package/out/src/storage/methods/listCertificates.d.ts +3 -2
- package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
- package/out/src/storage/methods/listCertificates.js.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
- package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.js +11 -11
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
- package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js +15 -23
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/noSendExpiry.d.ts +3 -3
- package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
- package/out/src/storage/methods/noSendExpiry.js +10 -8
- package/out/src/storage/methods/noSendExpiry.js.map +1 -1
- package/out/src/storage/methods/preparedBeef.d.ts.map +1 -1
- package/out/src/storage/methods/preparedBeef.js +13 -14
- package/out/src/storage/methods/preparedBeef.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +37 -6
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts +1 -0
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -1
- package/out/src/storage/methods/reviewUtxoOutputs.js +51 -4
- package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -1
- package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
- package/out/src/storage/methods/validateSyncProof.js +3 -3
- package/out/src/storage/methods/validateSyncProof.js.map +1 -1
- package/out/src/storage/portable/index.d.ts.map +1 -1
- package/out/src/storage/portable/index.js +21 -13
- package/out/src/storage/portable/index.js.map +1 -1
- package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
- package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
- package/out/src/storage/remoting/BinaryJson.js +37 -0
- package/out/src/storage/remoting/BinaryJson.js.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
- package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.js +222 -30
- package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexSyncTransferStore.js +3 -4
- package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -1
- package/out/src/storage/remoting/StorageClient.d.ts +6 -1
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +63 -6
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +23 -6
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +148 -19
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +11 -9
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +5 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +95 -19
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.js +3 -2
- package/out/src/storage/remoting/SyncTransfer.js.map +1 -1
- package/out/src/storage/schema/KnexMigrations.d.ts +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +28 -6
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.js +11 -4
- package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +2 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +93 -39
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
- package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
- package/out/src/utility/actionBatchDigest.js +9 -7
- package/out/src/utility/actionBatchDigest.js.map +1 -1
- package/out/src/utility/actionBatchPack.d.ts.map +1 -1
- package/out/src/utility/actionBatchPack.js +7 -12
- package/out/src/utility/actionBatchPack.js.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.js +4 -4
- package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
- package/out/src/utility/brc177NoSendExpiry.d.ts +2 -2
- package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -1
- package/out/src/utility/canonicalizeAtomicBeef.js +2 -2
- package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -1
- package/out/src/utility/exactActionSpend.d.ts +11 -0
- package/out/src/utility/exactActionSpend.d.ts.map +1 -0
- package/out/src/utility/exactActionSpend.js +11 -0
- package/out/src/utility/exactActionSpend.js.map +1 -0
- package/out/src/utility/identityUtils.d.ts +44 -4
- package/out/src/utility/identityUtils.d.ts.map +1 -1
- package/out/src/utility/identityUtils.js +376 -61
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.js +1 -19
- package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
- package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
- package/out/src/utility/tscProofToMerklePath.js +35 -4
- package/out/src/utility/tscProofToMerklePath.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +8 -6
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
- package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
- package/out/src/utility/verifyOverlayOutput.js +22 -0
- package/out/src/utility/verifyOverlayOutput.js.map +1 -0
- package/out/src/utility/walletResultGuards.d.ts +14 -0
- package/out/src/utility/walletResultGuards.d.ts.map +1 -0
- package/out/src/utility/walletResultGuards.js +28 -0
- package/out/src/utility/walletResultGuards.js.map +1 -0
- package/out/src/wab-client/WABClient.d.ts +3 -17
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +30 -14
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
- package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
- package/out/src/wab-client/WABResponseValidation.js +321 -0
- package/out/src/wab-client/WABResponseValidation.js.map +1 -0
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
- package/package.json +5 -5
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CWIStyleWalletManager = exports.OverlayUMPTokenInteractor = exports.UMPTokenLookupError = exports.DEFAULT_PROFILE_ID = exports.MAX_STATE_SNAPSHOT_BYTES = exports.PBKDF2_MAX_ITERATIONS = exports.KDF_MAX_HASH_LENGTH = exports.ARGON2ID_MAX_PARALLELISM = exports.ARGON2ID_MAX_MEMORY_KIB = exports.ARGON2ID_MAX_ITERATIONS = exports.ARGON2ID_DEFAULT_HASH_LENGTH = exports.ARGON2ID_DEFAULT_PARALLELISM = exports.ARGON2ID_DEFAULT_MEMORY_KIB = exports.ARGON2ID_DEFAULT_ITERATIONS = exports.PBKDF2_NUM_ROUNDS = void 0;
|
|
4
4
|
const sdk_1 = require("@bsv/sdk");
|
|
5
|
+
const Hash_1 = require("@bsv/sdk/primitives/Hash");
|
|
6
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
5
7
|
const PrivilegedKeyManager_1 = require("./sdk/PrivilegedKeyManager");
|
|
6
8
|
const hashWasm_1 = require("./utility/hashWasm");
|
|
7
9
|
const CWI_COMPONENT = 'wallet-toolbox.cwi-manager';
|
|
@@ -64,9 +66,9 @@ function addPasswordKdf(token, protocolFields, kdfVersionFieldIndex) {
|
|
|
64
66
|
if (kdfAlgorithmField == null || kdfParamsField == null || kdfParamsField.length > 1024) {
|
|
65
67
|
return false;
|
|
66
68
|
}
|
|
67
|
-
const kdfParams = JSON.parse(
|
|
69
|
+
const kdfParams = JSON.parse((0, utils_1.toUTF8)(kdfParamsField));
|
|
68
70
|
const passwordKdf = {
|
|
69
|
-
algorithm:
|
|
71
|
+
algorithm: (0, utils_1.toUTF8)(kdfAlgorithmField),
|
|
70
72
|
iterations: kdfParams.iterations,
|
|
71
73
|
memoryKiB: kdfParams.memoryKiB,
|
|
72
74
|
parallelism: kdfParams.parallelism,
|
|
@@ -120,6 +122,24 @@ function stripVerifiedPushDropSignature(fields, lockingPublicKey) {
|
|
|
120
122
|
}
|
|
121
123
|
return fields;
|
|
122
124
|
}
|
|
125
|
+
function decodeAuthenticatedUMPFields(lockingScript) {
|
|
126
|
+
const decoded = (0, sdk_1.decodeCanonicalPushDrop)(lockingScript, {
|
|
127
|
+
fieldCount: [12, 13, 15, 16],
|
|
128
|
+
maximumFieldBytes: exports.MAX_STATE_SNAPSHOT_BYTES,
|
|
129
|
+
maximumPayloadBytes: exports.MAX_STATE_SNAPSHOT_BYTES
|
|
130
|
+
});
|
|
131
|
+
const fields = stripVerifiedPushDropSignature(decoded.fields, decoded.lockingPublicKey);
|
|
132
|
+
if (fields.length !== decoded.fields.length - 1) {
|
|
133
|
+
throw new Error('UMP token field signature is missing or invalid');
|
|
134
|
+
}
|
|
135
|
+
const kdfVersionFieldIndex = findKdfVersionFieldIndex(fields);
|
|
136
|
+
if ((kdfVersionFieldIndex === -1 && fields.length > 12) ||
|
|
137
|
+
(kdfVersionFieldIndex === 11 && fields.length !== 14) ||
|
|
138
|
+
(kdfVersionFieldIndex === 12 && fields.length !== 15)) {
|
|
139
|
+
throw new Error('UMP token field layout is invalid');
|
|
140
|
+
}
|
|
141
|
+
return { ...decoded, fields };
|
|
142
|
+
}
|
|
123
143
|
/**
|
|
124
144
|
* PBKDF-2 that prefers WebCrypto and falls back to hash-wasm.
|
|
125
145
|
*
|
|
@@ -284,7 +304,7 @@ class OverlayUMPTokenInteractor {
|
|
|
284
304
|
async findByPresentationKeyHash(hash, options) {
|
|
285
305
|
return this.findToken({
|
|
286
306
|
service: 'ls_users',
|
|
287
|
-
query: { presentationHash:
|
|
307
|
+
query: { presentationHash: (0, utils_1.toHex)(hash) }
|
|
288
308
|
}, 'presentation', options);
|
|
289
309
|
}
|
|
290
310
|
/**
|
|
@@ -297,7 +317,7 @@ class OverlayUMPTokenInteractor {
|
|
|
297
317
|
async findByRecoveryKeyHash(hash, options) {
|
|
298
318
|
return this.findToken({
|
|
299
319
|
service: 'ls_users',
|
|
300
|
-
query: { recoveryHash:
|
|
320
|
+
query: { recoveryHash: (0, utils_1.toHex)(hash) }
|
|
301
321
|
}, 'recovery', options);
|
|
302
322
|
}
|
|
303
323
|
async findToken(question, lookupKind, options) {
|
|
@@ -325,7 +345,7 @@ class OverlayUMPTokenInteractor {
|
|
|
325
345
|
const diagnostics = this.diagnosticsFor(resolution);
|
|
326
346
|
const tokens = this.parseLookupAnswers(resolution.answer);
|
|
327
347
|
const expectedHash = question.query[lookupKind === 'presentation' ? 'presentationHash' : 'recoveryHash'].toLowerCase();
|
|
328
|
-
const matchingTokens = tokens.filter(token =>
|
|
348
|
+
const matchingTokens = tokens.filter(token => (0, utils_1.toHex)(lookupKind === 'presentation' ? token.presentationHash : token.recoveryHash).toLowerCase() ===
|
|
329
349
|
expectedHash);
|
|
330
350
|
// A verified token is positive account-existence evidence. Empty, malformed,
|
|
331
351
|
// rejected, or unavailable peers cannot override it. The resolver de-duplicates
|
|
@@ -435,8 +455,8 @@ class OverlayUMPTokenInteractor {
|
|
|
435
455
|
* predecessor rather than an independently minted token.
|
|
436
456
|
*/
|
|
437
457
|
consumesIdentity(tx, token) {
|
|
438
|
-
const presentationHash =
|
|
439
|
-
const recoveryHash =
|
|
458
|
+
const presentationHash = (0, utils_1.toHex)(token.presentationHash);
|
|
459
|
+
const recoveryHash = (0, utils_1.toHex)(token.recoveryHash);
|
|
440
460
|
for (const input of tx.inputs) {
|
|
441
461
|
const source = input.sourceTransaction;
|
|
442
462
|
if (source == null || input.sourceOutputIndex == null)
|
|
@@ -445,13 +465,10 @@ class OverlayUMPTokenInteractor {
|
|
|
445
465
|
if (sourceOutput == null)
|
|
446
466
|
continue;
|
|
447
467
|
try {
|
|
448
|
-
const
|
|
449
|
-
if (decoded.fields == null)
|
|
450
|
-
continue;
|
|
451
|
-
const fields = stripVerifiedPushDropSignature(decoded.fields, decoded.lockingPublicKey);
|
|
468
|
+
const { fields } = decodeAuthenticatedUMPFields(sourceOutput.lockingScript);
|
|
452
469
|
if (fields.length < 11 || fields[6]?.length !== 32 || fields[7]?.length !== 32)
|
|
453
470
|
continue;
|
|
454
|
-
if (
|
|
471
|
+
if ((0, utils_1.toHex)(fields[6]) === presentationHash || (0, utils_1.toHex)(fields[7]) === recoveryHash) {
|
|
455
472
|
return true;
|
|
456
473
|
}
|
|
457
474
|
}
|
|
@@ -574,9 +591,13 @@ class OverlayUMPTokenInteractor {
|
|
|
574
591
|
const script = await new sdk_1.PushDrop(wallet, adminOriginator).lock(fields, [2, 'admin user management token'], '1', 'self',
|
|
575
592
|
/* forSelf= */ true,
|
|
576
593
|
/* includeSignature= */ true);
|
|
577
|
-
const
|
|
594
|
+
const tokenScript = script.toHex();
|
|
595
|
+
const tokenOutput = [{ lockingScript: tokenScript, satoshis: 1, outputDescription: 'New UMP token output' }];
|
|
578
596
|
// 2) Resolve the old-token input (if provided) and create the action.
|
|
579
597
|
const { resolvedOldToken, inputToken } = await this.resolveOldInput(oldTokenToConsume);
|
|
598
|
+
if (resolvedOldToken != null && inputToken != null) {
|
|
599
|
+
await this.assertOwnedUMPInput(wallet, adminOriginator, resolvedOldToken, inputToken);
|
|
600
|
+
}
|
|
580
601
|
const inputs = resolvedOldToken?.currentOutpoint
|
|
581
602
|
? [
|
|
582
603
|
{
|
|
@@ -586,18 +607,37 @@ class OverlayUMPTokenInteractor {
|
|
|
586
607
|
}
|
|
587
608
|
]
|
|
588
609
|
: [];
|
|
589
|
-
const
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
610
|
+
const createArgs = {
|
|
611
|
+
description: resolvedOldToken == null ? 'Create new UMP token' : 'Renew UMP token (consume old, create new)',
|
|
612
|
+
inputs,
|
|
613
|
+
outputs: tokenOutput,
|
|
614
|
+
inputBEEF: inputToken?.beef,
|
|
615
|
+
options: { randomizeOutputs: false, acceptDelayedBroadcast: false }
|
|
616
|
+
};
|
|
617
|
+
const inputSigners = Object.create(null);
|
|
618
|
+
if (resolvedOldToken?.currentOutpoint != null) {
|
|
619
|
+
const unlocker = new sdk_1.PushDrop(wallet, adminOriginator).unlock([2, 'admin user management token'], '1', 'self');
|
|
620
|
+
inputSigners[resolvedOldToken.currentOutpoint] = async (transaction, inputIndex) => await unlocker.sign(transaction, inputIndex);
|
|
621
|
+
}
|
|
622
|
+
const operation = resolvedOldToken == null ? 'create' : 'renew';
|
|
623
|
+
let transaction;
|
|
624
|
+
try {
|
|
625
|
+
transaction = await this.completeUMPAction(wallet, createArgs, inputSigners, adminOriginator);
|
|
593
626
|
}
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
627
|
+
catch (error) {
|
|
628
|
+
this.telemetry.capture({
|
|
629
|
+
name: 'wallet-toolbox.ump.action.failed',
|
|
630
|
+
component: 'wallet-toolbox.ump',
|
|
631
|
+
severity: 'error',
|
|
632
|
+
attributes: {
|
|
633
|
+
operation,
|
|
634
|
+
oldTokenInputRequired: resolvedOldToken != null
|
|
635
|
+
},
|
|
636
|
+
error
|
|
637
|
+
});
|
|
638
|
+
throw error;
|
|
599
639
|
}
|
|
600
|
-
return this.
|
|
640
|
+
return await this.broadcastUMPTransaction(transaction, tokenScript, operation);
|
|
601
641
|
}
|
|
602
642
|
/** Assembles the ordered number[][] fields array from a UMPToken. */
|
|
603
643
|
tokenFields(token) {
|
|
@@ -618,7 +658,7 @@ class OverlayUMPTokenInteractor {
|
|
|
618
658
|
if (token.umpVersion === 3 && token.passwordKdf != null) {
|
|
619
659
|
const vi = token.profilesEncrypted == null ? 11 : 12;
|
|
620
660
|
fields[vi] = [token.umpVersion];
|
|
621
|
-
fields[vi + 1] =
|
|
661
|
+
fields[vi + 1] = (0, utils_1.toArray)(token.passwordKdf.algorithm, 'utf8');
|
|
622
662
|
const kdfParams = { iterations: token.passwordKdf.iterations };
|
|
623
663
|
if (token.passwordKdf.memoryKiB !== undefined)
|
|
624
664
|
kdfParams.memoryKiB = token.passwordKdf.memoryKiB;
|
|
@@ -626,7 +666,7 @@ class OverlayUMPTokenInteractor {
|
|
|
626
666
|
kdfParams.parallelism = token.passwordKdf.parallelism;
|
|
627
667
|
if (token.passwordKdf.hashLength !== undefined)
|
|
628
668
|
kdfParams.hashLength = token.passwordKdf.hashLength;
|
|
629
|
-
fields[vi + 2] =
|
|
669
|
+
fields[vi + 2] = (0, utils_1.toArray)(JSON.stringify(kdfParams), 'utf8');
|
|
630
670
|
}
|
|
631
671
|
return fields;
|
|
632
672
|
}
|
|
@@ -640,71 +680,47 @@ class OverlayUMPTokenInteractor {
|
|
|
640
680
|
}
|
|
641
681
|
return { resolvedOldToken: oldTokenToConsume, inputToken };
|
|
642
682
|
}
|
|
643
|
-
/**
|
|
644
|
-
async
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
const
|
|
684
|
-
const signResult = await wallet.signAction({ reference, spends: { 0: { unlockingScript: unlockingScript.toHex() } } }, adminOriginator);
|
|
685
|
-
const finalTxid = signResult.txid || (signResult.tx == null ? '' : sdk_1.Transaction.fromAtomicBEEF(signResult.tx).id('hex'));
|
|
686
|
-
if (!finalTxid)
|
|
687
|
-
throw new Error('Could not finalize renewed UMP token.');
|
|
688
|
-
if (signResult.tx == null)
|
|
689
|
-
throw new Error('Renewed UMP token transaction data missing.');
|
|
690
|
-
const result = await this.broadcaster.broadcast(sdk_1.Transaction.fromAtomicBEEF(signResult.tx));
|
|
691
|
-
this.assertBroadcast(result, 'renew');
|
|
692
|
-
return `${finalTxid}.0`;
|
|
693
|
-
}
|
|
694
|
-
/** Signs without input spending and broadcasts — used when creating a brand-new UMP token. */
|
|
695
|
-
async broadcastNew(wallet, adminOriginator, reference) {
|
|
696
|
-
const signResult = await wallet.signAction({ reference, spends: {} }, adminOriginator);
|
|
697
|
-
const finalTxid = signResult.txid || (signResult.tx == null ? '' : sdk_1.Transaction.fromAtomicBEEF(signResult.tx).id('hex'));
|
|
698
|
-
if (!finalTxid)
|
|
699
|
-
throw new Error('Could not finalize new UMP token.');
|
|
700
|
-
if (signResult.tx == null)
|
|
701
|
-
throw new Error('New UMP token transaction data missing.');
|
|
702
|
-
const result = await this.broadcaster.broadcast(sdk_1.Transaction.fromAtomicBEEF(signResult.tx));
|
|
703
|
-
this.assertBroadcast(result, 'create');
|
|
704
|
-
return `${finalTxid}.0`;
|
|
705
|
-
}
|
|
706
|
-
assertBroadcast(result, operation) {
|
|
707
|
-
const succeeded = result.status === 'success';
|
|
683
|
+
/** Proves the exact predecessor is an authenticated token controlled by this wallet. */
|
|
684
|
+
async assertOwnedUMPInput(wallet, adminOriginator, oldToken, inputToken) {
|
|
685
|
+
const transaction = sdk_1.Transaction.fromBEEF(inputToken.beef);
|
|
686
|
+
const sourceOutput = transaction.outputs[inputToken.outputIndex];
|
|
687
|
+
if (sourceOutput == null)
|
|
688
|
+
throw new Error('Previous UMP token source output is missing.');
|
|
689
|
+
const decoded = decodeAuthenticatedUMPFields(sourceOutput.lockingScript);
|
|
690
|
+
if (decoded.fields[6]?.length !== 32 ||
|
|
691
|
+
decoded.fields[7]?.length !== 32 ||
|
|
692
|
+
(0, utils_1.toHex)(decoded.fields[6]) !== (0, utils_1.toHex)(oldToken.presentationHash) ||
|
|
693
|
+
(0, utils_1.toHex)(decoded.fields[7]) !== (0, utils_1.toHex)(oldToken.recoveryHash)) {
|
|
694
|
+
throw new Error('Previous UMP token identity does not match its authenticated source.');
|
|
695
|
+
}
|
|
696
|
+
const { publicKey } = await wallet.getPublicKey({
|
|
697
|
+
protocolID: [2, 'admin user management token'],
|
|
698
|
+
keyID: '1',
|
|
699
|
+
counterparty: 'self',
|
|
700
|
+
forSelf: true
|
|
701
|
+
}, adminOriginator);
|
|
702
|
+
if (publicKey.toLowerCase() !== decoded.lockingPublicKey.toString().toLowerCase()) {
|
|
703
|
+
throw new Error('Previous UMP token is not controlled by this wallet.');
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
/** Completes an action only after exact request, input, output, and final-transaction binding. */
|
|
707
|
+
async completeUMPAction(wallet, createArgs, inputSigners, adminOriginator) {
|
|
708
|
+
return await (0, sdk_1.completeBoundAction)(wallet, createArgs, { inputSigners }, adminOriginator);
|
|
709
|
+
}
|
|
710
|
+
/** Broadcasts a bound UMP transaction and returns the exact, uniquely matching token output. */
|
|
711
|
+
async broadcastUMPTransaction(transaction, tokenScript, operation) {
|
|
712
|
+
const normalizedScript = tokenScript.toLowerCase();
|
|
713
|
+
const matchingOutputs = transaction.outputs.flatMap((output, index) => output.satoshis === 1 && output.lockingScript.toHex().toLowerCase() === normalizedScript ? [index] : []);
|
|
714
|
+
if (matchingOutputs.length !== 1) {
|
|
715
|
+
throw new Error('Final UMP transaction must contain exactly one requested token output.');
|
|
716
|
+
}
|
|
717
|
+
const txid = transaction.id('hex');
|
|
718
|
+
const result = await this.broadcaster.broadcast(transaction);
|
|
719
|
+
this.assertBroadcast(result, operation, txid);
|
|
720
|
+
return `${txid}.${matchingOutputs[0]}`;
|
|
721
|
+
}
|
|
722
|
+
assertBroadcast(result, operation, expectedTxid) {
|
|
723
|
+
const succeeded = result.status === 'success' && result.txid.toLowerCase() === expectedTxid.toLowerCase();
|
|
708
724
|
this.telemetry.capture({
|
|
709
725
|
name: succeeded ? 'wallet-toolbox.ump.broadcast.completed' : 'wallet-toolbox.ump.broadcast.failed',
|
|
710
726
|
component: 'wallet-toolbox.ump',
|
|
@@ -716,7 +732,8 @@ class OverlayUMPTokenInteractor {
|
|
|
716
732
|
}
|
|
717
733
|
});
|
|
718
734
|
if (!succeeded) {
|
|
719
|
-
|
|
735
|
+
const reason = result.status === 'error' ? result.code : 'transaction ID mismatch';
|
|
736
|
+
throw new Error(`UMP token broadcast failed (${reason}).`);
|
|
720
737
|
}
|
|
721
738
|
}
|
|
722
739
|
/**
|
|
@@ -747,11 +764,7 @@ class OverlayUMPTokenInteractor {
|
|
|
747
764
|
const txOutput = tx.outputs[output.outputIndex];
|
|
748
765
|
if (txOutput == null)
|
|
749
766
|
return undefined;
|
|
750
|
-
const
|
|
751
|
-
if (decoded.fields == null || decoded.fields.length < 11 || decoded.fields.length > 16) {
|
|
752
|
-
return undefined;
|
|
753
|
-
}
|
|
754
|
-
const protocolFields = stripVerifiedPushDropSignature(decoded.fields, decoded.lockingPublicKey);
|
|
767
|
+
const { fields: protocolFields } = decodeAuthenticatedUMPFields(txOutput.lockingScript);
|
|
755
768
|
if (protocolFields.length < 11 ||
|
|
756
769
|
protocolFields.slice(0, 11).some(field => field.length === 0 || field.length > exports.MAX_STATE_SNAPSHOT_BYTES)) {
|
|
757
770
|
return undefined;
|
|
@@ -791,6 +804,14 @@ class OverlayUMPTokenInteractor {
|
|
|
791
804
|
async findByOutpoint(outpoint) {
|
|
792
805
|
const correlationId = this.telemetry.enabled === true ? this.telemetry.createCorrelationId() : undefined;
|
|
793
806
|
const startedAt = Date.now();
|
|
807
|
+
const match = /^([0-9a-f]{64})\.(0|[1-9]\d*)$/i.exec(outpoint);
|
|
808
|
+
const requestedOutputIndex = match == null ? Number.NaN : Number(match[2]);
|
|
809
|
+
if (match == null || !Number.isSafeInteger(requestedOutputIndex) || requestedOutputIndex > 0xffffffff) {
|
|
810
|
+
const diagnostics = this.emptyStats(correlationId);
|
|
811
|
+
this.lookupFailed('outpoint', 'token-malformed', diagnostics, startedAt);
|
|
812
|
+
throw new UMPTokenLookupError('token-malformed', diagnostics);
|
|
813
|
+
}
|
|
814
|
+
const normalizedOutpoint = `${match[1].toLowerCase()}.${requestedOutputIndex}`;
|
|
794
815
|
let resolution;
|
|
795
816
|
try {
|
|
796
817
|
resolution = await this.resolver.queryDetailed({
|
|
@@ -817,7 +838,31 @@ class OverlayUMPTokenInteractor {
|
|
|
817
838
|
}
|
|
818
839
|
return undefined;
|
|
819
840
|
}
|
|
820
|
-
|
|
841
|
+
const diagnostics = this.diagnosticsFor(resolution);
|
|
842
|
+
const matchingOutputs = [];
|
|
843
|
+
try {
|
|
844
|
+
for (const output of resolution.answer.outputs) {
|
|
845
|
+
if (!Number.isSafeInteger(output.outputIndex) || output.outputIndex < 0 || output.outputIndex > 0xffffffff) {
|
|
846
|
+
throw new Error('UMP lookup returned an invalid output index');
|
|
847
|
+
}
|
|
848
|
+
const transaction = sdk_1.Transaction.fromBEEF(output.beef);
|
|
849
|
+
if (transaction.outputs[output.outputIndex] == null ||
|
|
850
|
+
`${transaction.id('hex')}.${output.outputIndex}` !== normalizedOutpoint) {
|
|
851
|
+
throw new Error('UMP lookup substituted the requested outpoint');
|
|
852
|
+
}
|
|
853
|
+
matchingOutputs.push(output);
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
catch (error) {
|
|
857
|
+
this.lookupFailed('outpoint', 'token-malformed', diagnostics, startedAt, error);
|
|
858
|
+
throw new UMPTokenLookupError('token-malformed', diagnostics, { cause: error });
|
|
859
|
+
}
|
|
860
|
+
if (matchingOutputs.length === 0) {
|
|
861
|
+
this.lookupFailed('outpoint', 'token-malformed', diagnostics, startedAt);
|
|
862
|
+
throw new UMPTokenLookupError('token-malformed', diagnostics);
|
|
863
|
+
}
|
|
864
|
+
matchingOutputs.sort((left, right) => right.beef.length - left.beef.length);
|
|
865
|
+
return matchingOutputs[0];
|
|
821
866
|
}
|
|
822
867
|
}
|
|
823
868
|
exports.OverlayUMPTokenInteractor = OverlayUMPTokenInteractor;
|
|
@@ -998,7 +1043,7 @@ class CWIStyleWalletManager {
|
|
|
998
1043
|
throw new TypeError('Presentation key must contain exactly 32 bytes.');
|
|
999
1044
|
}
|
|
1000
1045
|
this.authenticationFlow = 'unknown';
|
|
1001
|
-
const hash =
|
|
1046
|
+
const hash = (0, Hash_1.sha256)(key);
|
|
1002
1047
|
const startedAt = Date.now();
|
|
1003
1048
|
this.telemetry.capture({
|
|
1004
1049
|
name: 'wallet-toolbox.authentication.account-lookup.started',
|
|
@@ -1068,7 +1113,7 @@ class CWIStyleWalletManager {
|
|
|
1068
1113
|
async unlockExisting(password) {
|
|
1069
1114
|
if (this.currentUMPToken == null)
|
|
1070
1115
|
throw new Error('Provide presentation or recovery key first.');
|
|
1071
|
-
const derivedPasswordKey = await derivePasswordKey(this.currentUMPToken,
|
|
1116
|
+
const derivedPasswordKey = await derivePasswordKey(this.currentUMPToken, (0, utils_1.toArray)(password, 'utf8'));
|
|
1072
1117
|
let rootPrimaryKey;
|
|
1073
1118
|
let rootPrivilegedKey;
|
|
1074
1119
|
if (this.authenticationMode === 'presentation-key-and-password') {
|
|
@@ -1098,7 +1143,7 @@ class CWIStyleWalletManager {
|
|
|
1098
1143
|
const recoveryKey = (0, sdk_1.Random)(32);
|
|
1099
1144
|
await this.recoveryKeySaver(recoveryKey);
|
|
1100
1145
|
const passwordSalt = (0, sdk_1.Random)(32);
|
|
1101
|
-
const passwordKey = await derivePasswordKey({ passwordSalt, passwordKdf: this.kdfConfig },
|
|
1146
|
+
const passwordKey = await derivePasswordKey({ passwordSalt, passwordKdf: this.kdfConfig }, (0, utils_1.toArray)(password, 'utf8'));
|
|
1102
1147
|
const rootPrimaryKey = (0, sdk_1.Random)(32);
|
|
1103
1148
|
const rootPrivilegedKey = (0, sdk_1.Random)(32);
|
|
1104
1149
|
// Build XOR-combined symmetric keys
|
|
@@ -1117,8 +1162,8 @@ class CWIStyleWalletManager {
|
|
|
1117
1162
|
presentationRecoveryPrimary: presentationRecovery.encrypt(rootPrimaryKey),
|
|
1118
1163
|
passwordPrimaryPrivileged: primaryPassword.encrypt(rootPrivilegedKey),
|
|
1119
1164
|
presentationRecoveryPrivileged: presentationRecovery.encrypt(rootPrivilegedKey),
|
|
1120
|
-
presentationHash:
|
|
1121
|
-
recoveryHash:
|
|
1165
|
+
presentationHash: (0, Hash_1.sha256)(this.presentationKey),
|
|
1166
|
+
recoveryHash: (0, Hash_1.sha256)(recoveryKey),
|
|
1122
1167
|
presentationKeyEncrypted: await wrapKey(this.presentationKey),
|
|
1123
1168
|
passwordKeyEncrypted: await wrapKey(passwordKey),
|
|
1124
1169
|
recoveryKeyEncrypted: await wrapKey(recoveryKey),
|
|
@@ -1167,7 +1212,7 @@ class CWIStyleWalletManager {
|
|
|
1167
1212
|
}
|
|
1168
1213
|
if (this.authenticationMode === 'recovery-key-and-password') {
|
|
1169
1214
|
// Wait for password
|
|
1170
|
-
const hash =
|
|
1215
|
+
const hash = (0, Hash_1.sha256)(recoveryKey);
|
|
1171
1216
|
const token = await this.UMPTokenInteractor.findByRecoveryKeyHash(hash);
|
|
1172
1217
|
if (token == null)
|
|
1173
1218
|
throw new Error('No user found with this recovery key');
|
|
@@ -1202,7 +1247,7 @@ class CWIStyleWalletManager {
|
|
|
1202
1247
|
throw new Error('No root primary key or current UMP token set');
|
|
1203
1248
|
}
|
|
1204
1249
|
const snapshotKey = (0, sdk_1.Random)(32);
|
|
1205
|
-
const snapshotPreimageWriter = new
|
|
1250
|
+
const snapshotPreimageWriter = new utils_1.Writer();
|
|
1206
1251
|
// Write root primary key
|
|
1207
1252
|
snapshotPreimageWriter.write(this.rootPrimaryKey);
|
|
1208
1253
|
// Write serialized UMP token (must have outpoint)
|
|
@@ -1216,7 +1261,7 @@ class CWIStyleWalletManager {
|
|
|
1216
1261
|
const snapshotPreimage = snapshotPreimageWriter.toArray();
|
|
1217
1262
|
const snapshotPayload = new sdk_1.SymmetricKey(snapshotKey).encrypt(snapshotPreimage);
|
|
1218
1263
|
// Build final snapshot (Version 2)
|
|
1219
|
-
const snapshotWriter = new
|
|
1264
|
+
const snapshotWriter = new utils_1.Writer();
|
|
1220
1265
|
snapshotWriter.writeUInt8(2); // Version
|
|
1221
1266
|
snapshotWriter.write(snapshotKey);
|
|
1222
1267
|
snapshotWriter.write(this.activeProfileId); // Active profile ID
|
|
@@ -1249,7 +1294,7 @@ class CWIStyleWalletManager {
|
|
|
1249
1294
|
snapshot.some(byte => !Number.isInteger(byte) || byte < 0 || byte > 255)) {
|
|
1250
1295
|
throw new Error('Snapshot is empty, oversized, or contains invalid bytes.');
|
|
1251
1296
|
}
|
|
1252
|
-
const reader = new
|
|
1297
|
+
const reader = new utils_1.Reader(snapshot);
|
|
1253
1298
|
const version = reader.readUInt8();
|
|
1254
1299
|
let snapshotKey;
|
|
1255
1300
|
let encryptedPayload;
|
|
@@ -1268,11 +1313,11 @@ class CWIStyleWalletManager {
|
|
|
1268
1313
|
}
|
|
1269
1314
|
// Decrypt payload
|
|
1270
1315
|
const decryptedPayload = new sdk_1.SymmetricKey(snapshotKey).decrypt(encryptedPayload);
|
|
1271
|
-
const payloadReader = new
|
|
1316
|
+
const payloadReader = new utils_1.Reader(decryptedPayload);
|
|
1272
1317
|
// Read root primary key
|
|
1273
1318
|
const rootPrimaryKey = payloadReader.read(32);
|
|
1274
1319
|
// Read serialized UMP token
|
|
1275
|
-
const tokenLen = payloadReader.
|
|
1320
|
+
const tokenLen = payloadReader.readVarIntNumStrict(false);
|
|
1276
1321
|
const tokenBytes = payloadReader.read(tokenLen);
|
|
1277
1322
|
const token = this.deserializeUMPToken(tokenBytes);
|
|
1278
1323
|
// Assign loaded data
|
|
@@ -1500,7 +1545,7 @@ class CWIStyleWalletManager {
|
|
|
1500
1545
|
passwordSalt,
|
|
1501
1546
|
passwordKdf: kdfToUse
|
|
1502
1547
|
};
|
|
1503
|
-
const newPasswordKey = await derivePasswordKey(tempTokenForKdf,
|
|
1548
|
+
const newPasswordKey = await derivePasswordKey(tempTokenForKdf, (0, utils_1.toArray)(newPassword, 'utf8'));
|
|
1504
1549
|
// Decrypt existing factors needed for re-encryption, using the *root* privileged key manager
|
|
1505
1550
|
const recoveryKey = await this.getFactor('recoveryKey');
|
|
1506
1551
|
const presentationKey = await this.getFactor('presentationKey');
|
|
@@ -1661,7 +1706,7 @@ class CWIStyleWalletManager {
|
|
|
1661
1706
|
let profilesEncrypted;
|
|
1662
1707
|
if (profiles != null && profiles.length > 0) {
|
|
1663
1708
|
const profilesJson = JSON.stringify(profiles);
|
|
1664
|
-
const profilesBytes =
|
|
1709
|
+
const profilesBytes = (0, utils_1.toArray)(profilesJson, 'utf8');
|
|
1665
1710
|
profilesEncrypted = new sdk_1.SymmetricKey(rootPrimaryKey).encrypt(profilesBytes);
|
|
1666
1711
|
}
|
|
1667
1712
|
// Construct the new UMP token data.
|
|
@@ -1676,8 +1721,8 @@ class CWIStyleWalletManager {
|
|
|
1676
1721
|
presentationRecoveryPrimary: presentationRecovery.encrypt(rootPrimaryKey),
|
|
1677
1722
|
passwordPrimaryPrivileged: primaryPassword.encrypt(rootPrivilegedKey),
|
|
1678
1723
|
presentationRecoveryPrivileged: presentationRecovery.encrypt(rootPrivilegedKey),
|
|
1679
|
-
presentationHash:
|
|
1680
|
-
recoveryHash:
|
|
1724
|
+
presentationHash: (0, Hash_1.sha256)(presentationKey),
|
|
1725
|
+
recoveryHash: (0, Hash_1.sha256)(recoveryKey),
|
|
1681
1726
|
presentationKeyEncrypted: (await tempRootPrivilegedKeyManager.encrypt({
|
|
1682
1727
|
plaintext: presentationKey,
|
|
1683
1728
|
protocolID: [2, 'admin key wrapping'],
|
|
@@ -1748,7 +1793,7 @@ class CWIStyleWalletManager {
|
|
|
1748
1793
|
if (!token.currentOutpoint) {
|
|
1749
1794
|
throw new Error('Token must have outpoint for serialization');
|
|
1750
1795
|
}
|
|
1751
|
-
const writer = new
|
|
1796
|
+
const writer = new utils_1.Writer();
|
|
1752
1797
|
const hasKdfMetadata = token.umpVersion === 3 && token.passwordKdf;
|
|
1753
1798
|
writer.writeUInt8(hasKdfMetadata ? 3 : 2); // Version 3 for KDF, 2 for legacy
|
|
1754
1799
|
const writeArray = (arr) => {
|
|
@@ -1779,7 +1824,7 @@ class CWIStyleWalletManager {
|
|
|
1779
1824
|
if (hasKdfMetadata) {
|
|
1780
1825
|
writer.writeUInt8(1); // Flag indicating KDF metadata present
|
|
1781
1826
|
writer.writeUInt8(token.umpVersion); // On-chain UMP version
|
|
1782
|
-
const algorithmBytes =
|
|
1827
|
+
const algorithmBytes = (0, utils_1.toArray)(token.passwordKdf.algorithm, 'utf8');
|
|
1783
1828
|
writeArray(algorithmBytes);
|
|
1784
1829
|
// Serialize KDF params as JSON
|
|
1785
1830
|
const kdfParams = {
|
|
@@ -1794,7 +1839,7 @@ class CWIStyleWalletManager {
|
|
|
1794
1839
|
if (token.passwordKdf.hashLength !== undefined) {
|
|
1795
1840
|
kdfParams.hashLength = token.passwordKdf.hashLength;
|
|
1796
1841
|
}
|
|
1797
|
-
const kdfParamsBytes =
|
|
1842
|
+
const kdfParamsBytes = (0, utils_1.toArray)(JSON.stringify(kdfParams), 'utf8');
|
|
1798
1843
|
writeArray(kdfParamsBytes);
|
|
1799
1844
|
}
|
|
1800
1845
|
else if (writer.toArray()[0] === 3) {
|
|
@@ -1802,7 +1847,7 @@ class CWIStyleWalletManager {
|
|
|
1802
1847
|
writer.writeUInt8(0); // Flag indicating no KDF metadata
|
|
1803
1848
|
}
|
|
1804
1849
|
// Write outpoint string
|
|
1805
|
-
const outpointBytes =
|
|
1850
|
+
const outpointBytes = (0, utils_1.toArray)(token.currentOutpoint, 'utf8');
|
|
1806
1851
|
writer.writeVarIntNum(outpointBytes.length);
|
|
1807
1852
|
writer.write(outpointBytes);
|
|
1808
1853
|
return writer.toArray();
|
|
@@ -1811,13 +1856,13 @@ class CWIStyleWalletManager {
|
|
|
1811
1856
|
* Deserializes a UMP token from binary format (Handles Version 1, 2, and 3).
|
|
1812
1857
|
*/
|
|
1813
1858
|
deserializeUMPToken(bin) {
|
|
1814
|
-
const reader = new
|
|
1859
|
+
const reader = new utils_1.Reader(bin);
|
|
1815
1860
|
const version = reader.readUInt8();
|
|
1816
1861
|
if (version !== 1 && version !== 2 && version !== 3) {
|
|
1817
1862
|
throw new Error(`Unsupported UMP token serialization version: ${version}`);
|
|
1818
1863
|
}
|
|
1819
1864
|
const readArray = () => {
|
|
1820
|
-
const length = reader.
|
|
1865
|
+
const length = reader.readVarIntNumStrict(false);
|
|
1821
1866
|
if (length <= 0 || length > exports.MAX_STATE_SNAPSHOT_BYTES) {
|
|
1822
1867
|
throw new Error('UMP token field exceeds allowed bounds.');
|
|
1823
1868
|
}
|
|
@@ -1851,9 +1896,9 @@ class CWIStyleWalletManager {
|
|
|
1851
1896
|
if (kdfFlag === 1) {
|
|
1852
1897
|
umpVersion = reader.readUInt8(); // On-chain UMP version
|
|
1853
1898
|
const algorithmBytes = readArray();
|
|
1854
|
-
const algorithm =
|
|
1899
|
+
const algorithm = (0, utils_1.toUTF8)(algorithmBytes);
|
|
1855
1900
|
const kdfParamsBytes = readArray();
|
|
1856
|
-
const kdfParamsJson =
|
|
1901
|
+
const kdfParamsJson = (0, utils_1.toUTF8)(kdfParamsBytes);
|
|
1857
1902
|
const kdfParams = JSON.parse(kdfParamsJson);
|
|
1858
1903
|
passwordKdf = {
|
|
1859
1904
|
algorithm,
|
|
@@ -1868,9 +1913,9 @@ class CWIStyleWalletManager {
|
|
|
1868
1913
|
}
|
|
1869
1914
|
}
|
|
1870
1915
|
// Read outpoint string
|
|
1871
|
-
const outpointLen = reader.
|
|
1916
|
+
const outpointLen = reader.readVarIntNumStrict(false);
|
|
1872
1917
|
const outpointBytes = reader.read(outpointLen);
|
|
1873
|
-
const currentOutpoint =
|
|
1918
|
+
const currentOutpoint = (0, utils_1.toUTF8)(outpointBytes);
|
|
1874
1919
|
if (currentOutpoint.length > 128 || !/^[^\s.:]+[.:]\d+$/.test(currentOutpoint)) {
|
|
1875
1920
|
throw new Error('Serialized UMP token contains an invalid outpoint.');
|
|
1876
1921
|
}
|
|
@@ -1919,7 +1964,7 @@ class CWIStyleWalletManager {
|
|
|
1919
1964
|
// 2. Otherwise, derive from password
|
|
1920
1965
|
const password = await this.passwordRetriever(reason, async (passwordCandidate) => {
|
|
1921
1966
|
try {
|
|
1922
|
-
const derivedPasswordKey = await derivePasswordKey(this.currentUMPToken,
|
|
1967
|
+
const derivedPasswordKey = await derivePasswordKey(this.currentUMPToken, (0, utils_1.toArray)(passwordCandidate, 'utf8'));
|
|
1923
1968
|
const privilegedDecryptor = this.XOR(this.rootPrimaryKey, derivedPasswordKey);
|
|
1924
1969
|
const decryptedPrivileged = new sdk_1.SymmetricKey(privilegedDecryptor).decrypt(this.currentUMPToken.passwordPrimaryPrivileged);
|
|
1925
1970
|
return !!decryptedPrivileged; // Test passes if decryption works
|
|
@@ -1932,7 +1977,7 @@ class CWIStyleWalletManager {
|
|
|
1932
1977
|
}
|
|
1933
1978
|
});
|
|
1934
1979
|
// Decrypt the root privileged key using the confirmed password (with token-driven KDF)
|
|
1935
|
-
const derivedPasswordKey = await derivePasswordKey(this.currentUMPToken,
|
|
1980
|
+
const derivedPasswordKey = await derivePasswordKey(this.currentUMPToken, (0, utils_1.toArray)(password, 'utf8'));
|
|
1936
1981
|
const privilegedDecryptor = this.XOR(this.rootPrimaryKey, derivedPasswordKey);
|
|
1937
1982
|
const rootPrivilegedBytes = new sdk_1.SymmetricKey(privilegedDecryptor).decrypt(this.currentUMPToken.passwordPrimaryPrivileged);
|
|
1938
1983
|
return new sdk_1.PrivateKey(rootPrivilegedBytes); // Return the ROOT key object
|
|
@@ -1942,7 +1987,7 @@ class CWIStyleWalletManager {
|
|
|
1942
1987
|
if (this.currentUMPToken.profilesEncrypted != null && this.currentUMPToken.profilesEncrypted.length > 0) {
|
|
1943
1988
|
try {
|
|
1944
1989
|
const decryptedProfileBytes = new sdk_1.SymmetricKey(rootKey).decrypt(this.currentUMPToken.profilesEncrypted);
|
|
1945
|
-
const profilesJson =
|
|
1990
|
+
const profilesJson = (0, utils_1.toUTF8)(decryptedProfileBytes);
|
|
1946
1991
|
const profiles = JSON.parse(profilesJson);
|
|
1947
1992
|
if (!Array.isArray(profiles) || profiles.length > 1000 || !profiles.every(isValidProfile)) {
|
|
1948
1993
|
throw new Error('Decrypted profile data is invalid or exceeds supported bounds.');
|