@bopen-io/wallet-toolbox 2.6.2-brc153.5 → 2.14.6
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 +744 -1
- package/LICENSES/Open-BSV-License-4-wallet-pre-2026.txt +28 -0
- package/README.md +823 -14
- package/THIRD_PARTY_NOTICES.md +35 -0
- package/docs/README.md +44 -31
- package/docs/action-batch-planning.md +80 -37
- package/docs/client.md +12996 -4571
- package/docs/identity-verification.md +218 -0
- package/docs/local-first-chaintracks.md +129 -0
- package/docs/managed-change-liquidity.md +258 -0
- package/docs/managed-change-policy.md +14 -1
- package/docs/monitor.md +505 -190
- package/docs/no-send-expiry.md +167 -0
- package/docs/prepared-beef.md +197 -0
- package/docs/services.md +4013 -1153
- package/docs/setup.md +107 -56
- package/docs/storage.md +5781 -1599
- package/docs/sync-transfer.md +144 -0
- package/docs/wab-shamir.md +5 -1
- package/docs/wallet.md +10188 -10904
- package/out/src/CWIStyleWalletManager.d.ts +39 -31
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +309 -258
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +14 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +6 -2
- package/out/src/Setup.js.map +1 -1
- package/out/src/SetupClient.d.ts +3 -0
- package/out/src/SetupClient.d.ts.map +1 -1
- package/out/src/SetupClient.js +1 -0
- package/out/src/SetupClient.js.map +1 -1
- package/out/src/SetupWallet.d.ts +3 -0
- package/out/src/SetupWallet.d.ts.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 +54 -14
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +216 -114
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +32 -0
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +531 -78
- 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 +101 -43
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +897 -414
- 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 +143 -8
- 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/index.client.d.ts +6 -0
- package/out/src/index.client.d.ts.map +1 -1
- package/out/src/index.client.js +16 -1
- package/out/src/index.client.js.map +1 -1
- package/out/src/index.mobile.d.ts +7 -0
- package/out/src/index.mobile.d.ts.map +1 -1
- package/out/src/index.mobile.js +17 -1
- package/out/src/index.mobile.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 +2 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +54 -14
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +51 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +282 -41
- 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 +6 -1
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +117 -74
- 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/TaskNoSendExpiry.d.ts +19 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.js +47 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.js.map +1 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts +27 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +242 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -0
- 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 +31 -9
- 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 +33 -6
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +189 -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/monitor/tasks/index.all.d.ts +2 -0
- package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
- package/out/src/monitor/tasks/index.all.js +2 -0
- package/out/src/monitor/tasks/index.all.js.map +1 -1
- package/out/src/sdk/ActionBatch.interfaces.d.ts +23 -0
- package/out/src/sdk/ActionBatch.interfaces.d.ts.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/WERR_errors.d.ts +23 -0
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/out/src/sdk/WERR_errors.js +51 -7
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +7 -21
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js +121 -3
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +45 -2
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +87 -4
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.d.ts +3 -2
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +3 -2
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/ServiceCollection.js +2 -2
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +5 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +346 -120
- 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 +269 -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 +122 -0
- package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -0
- package/out/src/services/chaintracker/LocalChainTracker.js +465 -0
- package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -0
- 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/BulkFileDataCacheApi.d.ts +48 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js +3 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts +70 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js +21 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js.map +1 -0
- 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 +53 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +9 -2
- 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 +28 -3
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +282 -64
- 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 +348 -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 +378 -44
- 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 +230 -28
- 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 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +240 -87
- 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.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +6 -3
- 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/index.all.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.all.js +3 -0
- package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +5 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +51 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +394 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +45 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +733 -166
- 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 +32 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +40 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -0
- 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 +3 -1
- 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 +38 -4
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +191 -47
- 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 +48 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +280 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts +30 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js +57 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js.map +1 -0
- 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 +14 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +148 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +41 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +271 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -0
- 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 +17 -4
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +362 -105
- 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/chaintracker/index.all.d.ts +1 -0
- package/out/src/services/chaintracker/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.all.js +1 -0
- package/out/src/services/chaintracker/index.all.js.map +1 -1
- package/out/src/services/chaintracker/index.client.d.ts +1 -0
- package/out/src/services/chaintracker/index.client.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.client.js +1 -0
- package/out/src/services/chaintracker/index.client.js.map +1 -1
- package/out/src/services/chaintracker/index.mobile.d.ts +1 -0
- package/out/src/services/chaintracker/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.mobile.js +1 -0
- package/out/src/services/chaintracker/index.mobile.js.map +1 -1
- package/out/src/services/classifyOutputUtxo.d.ts +25 -0
- package/out/src/services/classifyOutputUtxo.d.ts.map +1 -0
- package/out/src/services/classifyOutputUtxo.js +96 -0
- package/out/src/services/classifyOutputUtxo.js.map +1 -0
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +16 -3
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +38 -8
- package/out/src/services/createDefaultWalletServicesOptions.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 +38 -23
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +384 -63
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +11 -1
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +111 -33
- 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/arcadeStatus.d.ts +18 -0
- package/out/src/services/providers/arcadeStatus.d.ts.map +1 -0
- package/out/src/services/providers/arcadeStatus.js +56 -0
- package/out/src/services/providers/arcadeStatus.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 +29 -6
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +8 -5
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +186 -73
- 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 +35 -3
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +50 -2
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts +7 -0
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js +254 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -0
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +9 -5
- 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 +20 -3
- 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 +11 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +134 -44
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +68 -7
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +551 -105
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +41 -10
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +397 -107
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +9 -3
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +21 -43
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +4 -0
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +68 -38
- 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 +31 -6
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +166 -75
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +3 -1
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +38 -49
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminUi.js +32 -9
- package/out/src/storage/adminServer/adminUi.js.map +1 -1
- package/out/src/storage/adminServer/reviewUtxos.d.ts +27 -0
- package/out/src/storage/adminServer/reviewUtxos.d.ts.map +1 -0
- package/out/src/storage/adminServer/reviewUtxos.js +62 -0
- package/out/src/storage/adminServer/reviewUtxos.js.map +1 -0
- package/out/src/storage/idbHelpers.d.ts.map +1 -1
- package/out/src/storage/idbHelpers.js +14 -2
- package/out/src/storage/idbHelpers.js.map +1 -1
- package/out/src/storage/index.all.d.ts +3 -0
- package/out/src/storage/index.all.d.ts.map +1 -1
- package/out/src/storage/index.all.js +3 -0
- package/out/src/storage/index.all.js.map +1 -1
- package/out/src/storage/index.client.d.ts +1 -0
- package/out/src/storage/index.client.d.ts.map +1 -1
- package/out/src/storage/index.client.js +1 -0
- package/out/src/storage/index.client.js.map +1 -1
- package/out/src/storage/index.mobile.d.ts +1 -0
- package/out/src/storage/index.mobile.d.ts.map +1 -1
- package/out/src/storage/index.mobile.js +1 -0
- package/out/src/storage/index.mobile.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 +5 -44
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/actionBatch.d.ts +9 -2
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatch.js +260 -67
- 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 +47 -26
- 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 +59 -110
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/availableManagedChange.d.ts +8 -1
- package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -1
- package/out/src/storage/methods/availableManagedChange.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +60 -3
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +396 -106
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +21 -5
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +194 -27
- 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/getSyncChunk.d.ts.map +1 -1
- package/out/src/storage/methods/getSyncChunk.js +42 -11
- package/out/src/storage/methods/getSyncChunk.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 +171 -133
- 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 +22 -11
- 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 +25 -18
- 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 +33 -31
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/managedChangePolicy.d.ts +44 -0
- package/out/src/storage/methods/managedChangePolicy.d.ts.map +1 -0
- package/out/src/storage/methods/managedChangePolicy.js +58 -0
- package/out/src/storage/methods/managedChangePolicy.js.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts +13 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js +16 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js.map +1 -0
- package/out/src/storage/methods/noSendExpiry.d.ts +11 -0
- package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiry.js +369 -0
- package/out/src/storage/methods/noSendExpiry.js.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts +14 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js +691 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js.map +1 -0
- package/out/src/storage/methods/preparedBeef.d.ts +104 -0
- package/out/src/storage/methods/preparedBeef.d.ts.map +1 -0
- package/out/src/storage/methods/preparedBeef.js +524 -0
- package/out/src/storage/methods/preparedBeef.js.map +1 -0
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +144 -32
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/purgeData.d.ts.map +1 -1
- package/out/src/storage/methods/purgeData.js +21 -3
- package/out/src/storage/methods/purgeData.js.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +32 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js +142 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -0
- package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatus.js +7 -4
- package/out/src/storage/methods/reviewStatus.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 +38 -0
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -0
- package/out/src/storage/methods/reviewUtxoOutputs.js +197 -0
- package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -0
- package/out/src/storage/methods/validateSyncProof.d.ts +32 -0
- package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -0
- package/out/src/storage/methods/validateSyncProof.js +139 -0
- package/out/src/storage/methods/validateSyncProof.js.map +1 -0
- package/out/src/storage/portable/index.d.ts.map +1 -1
- package/out/src/storage/portable/index.js +25 -15
- 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 +94 -8
- package/out/src/storage/remoting/BinaryJson.js.map +1 -1
- package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexPaymentReplayStore.js +1 -0
- package/out/src/storage/remoting/KnexPaymentReplayStore.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 +221 -40
- package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
- 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 +65 -8
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +57 -10
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +382 -10
- 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 +13 -11
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +10 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +232 -20
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
- package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
- package/out/src/storage/remoting/SyncTransfer.js +153 -0
- package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
- package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
- package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
- package/out/src/storage/remoting/syncChunkBinary.d.ts +14 -0
- package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
- package/out/src/storage/remoting/syncChunkBinary.js +42 -0
- package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts +6 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +194 -5
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/StorageIdbSchema.d.ts +3 -0
- package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.js +24 -4
- package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.js +5 -2
- package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +4 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +125 -41
- 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.d.ts +4 -2
- package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +12 -6
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.d.ts +26 -0
- package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.js +221 -21
- package/out/src/storage/schema/entities/EntityTransaction.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/TablePreparedBeef.interfaces.d.ts +23 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js +3 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js.map +1 -0
- 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 +2 -2
- 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 +17 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.js +14 -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/storage/sync/SyncPageBudget.d.ts +8 -0
- package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
- package/out/src/storage/sync/SyncPageBudget.js +24 -0
- package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
- package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
- package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
- package/out/src/storage/sync/syncCheckpoint.js +49 -0
- package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
- package/out/src/utility/Argon2idBackend.d.ts +36 -0
- package/out/src/utility/Argon2idBackend.d.ts.map +1 -0
- package/out/src/utility/Argon2idBackend.js +60 -0
- package/out/src/utility/Argon2idBackend.js.map +1 -0
- 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/beefForTxids.d.ts +12 -3
- package/out/src/utility/beefForTxids.d.ts.map +1 -1
- package/out/src/utility/beefForTxids.js +69 -21
- package/out/src/utility/beefForTxids.js.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.d.ts +16 -0
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.js +20 -5
- package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
- package/out/src/utility/brc177NoSendExpiry.d.ts +34 -0
- package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -0
- package/out/src/utility/brc177NoSendExpiry.js +81 -0
- package/out/src/utility/brc177NoSendExpiry.js.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts +12 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.js +23 -0
- package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -0
- package/out/src/utility/exactActionSpend.d.ts +9 -0
- package/out/src/utility/exactActionSpend.d.ts.map +1 -0
- package/out/src/utility/exactActionSpend.js +26 -0
- package/out/src/utility/exactActionSpend.js.map +1 -0
- package/out/src/utility/hashWasm.d.ts +1 -1
- package/out/src/utility/hashWasm.d.ts.map +1 -1
- package/out/src/utility/hashWasm.js +83 -1
- package/out/src/utility/hashWasm.js.map +1 -1
- 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 +523 -61
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/index.all.d.ts +2 -0
- package/out/src/utility/index.all.d.ts.map +1 -1
- package/out/src/utility/index.all.js +2 -0
- package/out/src/utility/index.all.js.map +1 -1
- package/out/src/utility/index.client.d.ts +2 -0
- package/out/src/utility/index.client.d.ts.map +1 -1
- package/out/src/utility/index.client.js +2 -0
- package/out/src/utility/index.client.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 +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +10 -7
- 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 +4 -17
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +35 -12
- 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/WABTransport.d.ts +17 -23
- package/out/src/wab-client/WABTransport.d.ts.map +1 -1
- package/out/src/wab-client/WABTransport.js +130 -142
- package/out/src/wab-client/WABTransport.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +8 -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 +45 -41
- package/docs/open-rpc/index.html +0 -46
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.setDisableDoubleSpendCheckForTest = setDisableDoubleSpendCheckForTest;
|
|
4
4
|
exports.createAction = createAction;
|
|
5
|
+
exports.validateRequiredOutputs = validateRequiredOutputs;
|
|
6
|
+
exports.validateRequiredInputs = validateRequiredInputs;
|
|
7
|
+
const validationHelpers_1 = require("@bsv/sdk/wallet/validationHelpers");
|
|
5
8
|
const sdk_1 = require("@bsv/sdk");
|
|
9
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
6
10
|
const generateChange_1 = require("./generateChange");
|
|
7
11
|
const StorageProvider_1 = require("../StorageProvider");
|
|
8
12
|
const WERR_errors_1 = require("../../sdk/WERR_errors");
|
|
@@ -14,6 +18,7 @@ const offsetKey_1 = require("./offsetKey");
|
|
|
14
18
|
const sdk_2 = require("../../sdk");
|
|
15
19
|
const managedChange_1 = require("./managedChange");
|
|
16
20
|
const actionPlanning_1 = require("./actionPlanning");
|
|
21
|
+
const beefForTxids_1 = require("../../utility/beefForTxids");
|
|
17
22
|
let disableDoubleSpendCheckForTest = true;
|
|
18
23
|
function setDisableDoubleSpendCheckForTest(v) {
|
|
19
24
|
disableDoubleSpendCheckForTest = v;
|
|
@@ -49,6 +54,9 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
49
54
|
// stampLog(vargs, `start storage createTransactionSdk`)
|
|
50
55
|
if (vargs.isTestWerrReviewActions)
|
|
51
56
|
(0, Wallet_1.throwDummyReviewActions)();
|
|
57
|
+
if (vargs.brc177 != null && auth.isActive !== true) {
|
|
58
|
+
throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
|
|
59
|
+
}
|
|
52
60
|
if (!vargs.isNewTx)
|
|
53
61
|
// The purpose of this function is to create the initial storage records associated
|
|
54
62
|
// with a new transaction. It's an error if we have no new inputs or outputs...
|
|
@@ -68,7 +76,7 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
68
76
|
* - Create result inputs with source locking scripts
|
|
69
77
|
* - Create result outputs with new locking scripts.
|
|
70
78
|
* - Create and return result.
|
|
71
|
-
|
|
79
|
+
*/
|
|
72
80
|
const userId = auth.userId;
|
|
73
81
|
const validated = await traceStorageStep(storage, 'wallet.storage.create_action.validate', parent, {
|
|
74
82
|
'action.fixed_input_count': vargs.inputs.length,
|
|
@@ -98,13 +106,14 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
98
106
|
const { storageBeef, beef, xinputs, xoutputs, changeBasket, noSendChangeIn } = validated;
|
|
99
107
|
const feeModel = (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel);
|
|
100
108
|
logger?.log(`validated fee model ${JSON.stringify(feeModel)}`);
|
|
101
|
-
const initialFundingPlan = await
|
|
109
|
+
const initialFundingPlan = await prepareFundingPlanWithLiquidityPolicy(storage, [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel], parent);
|
|
110
|
+
validateBrc177FundingPlan(vargs, initialFundingPlan);
|
|
102
111
|
logger?.log(`planned funding from ${initialFundingPlan.availableChangeCount} change inputs`);
|
|
103
112
|
// The selected source txids are known before the write transaction begins.
|
|
104
113
|
// Start their one batched proof read now so PXC/network wait and BEEF
|
|
105
114
|
// assembly overlap the independent transaction-record/funding/output writes.
|
|
106
115
|
// A funding-claim retry is handled below by fetching only any residual roots.
|
|
107
|
-
const allocatedBeefPrefetch = startAllocatedChangeBeefPrefetch(storage, vargs, initialFundingPlan.selected, beef, parent);
|
|
116
|
+
const allocatedBeefPrefetch = startAllocatedChangeBeefPrefetch(storage, userId, vargs, initialFundingPlan.selected, beef, parent);
|
|
108
117
|
const storageBeefBytes = storageBeef.toBinary();
|
|
109
118
|
let newTx;
|
|
110
119
|
let newTxCommitted = false;
|
|
@@ -137,7 +146,11 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
137
146
|
ctx.xoutputs[adjustment.fixedOutputIndex].satoshis = adjustment.satoshis;
|
|
138
147
|
logger?.log('adjusted change outputs to max possible');
|
|
139
148
|
}
|
|
140
|
-
const
|
|
149
|
+
const fixedManagedChangeSatoshis = ctx.xoutputs
|
|
150
|
+
.filter(output => output.purpose === 'change')
|
|
151
|
+
.reduce((sum, output) => sum + output.satoshis, 0);
|
|
152
|
+
const satoshis = fixedManagedChangeSatoshis +
|
|
153
|
+
funded.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
|
|
141
154
|
funded.allocatedChange.reduce((sum, output) => sum + output.satoshis, 0);
|
|
142
155
|
if (satoshis !== initialSatoshis) {
|
|
143
156
|
await storage.updateTransaction(newTx.transactionId, { satoshis }, trx);
|
|
@@ -157,7 +170,7 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
157
170
|
const committedTx = (0, utilityHelpers_1.verifyTruthy)(newTx);
|
|
158
171
|
const { allocatedChange, derivationPrefix, outputs, changeVouts, ctx } = persisted;
|
|
159
172
|
logger?.log('created new output records');
|
|
160
|
-
const
|
|
173
|
+
const preparedInputBeef = await mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef, allocatedBeefPrefetch, parent);
|
|
161
174
|
logger?.log('merged allocated change beefs');
|
|
162
175
|
const inputs = await traceStorageStep(storage, 'wallet.storage.create_action.assemble_inputs', parent, {
|
|
163
176
|
'action.fixed_input_count': ctx.xinputs.length,
|
|
@@ -176,9 +189,13 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
176
189
|
inputs,
|
|
177
190
|
outputs,
|
|
178
191
|
derivationPrefix,
|
|
179
|
-
inputBeef,
|
|
192
|
+
inputBeef: preparedInputBeef.inputBeef,
|
|
180
193
|
noSendChangeOutputVouts: vargs.isNoSend ? changeVouts : undefined
|
|
181
194
|
};
|
|
195
|
+
// This is intentionally the last foreground operation. The coordinator
|
|
196
|
+
// starts on a timer, so the createAction promise and HTTP response can
|
|
197
|
+
// resolve before any COOK verification or persistence begins.
|
|
198
|
+
enqueuePreparedBeefs(storage, preparedInputBeef.preparations);
|
|
182
199
|
logger?.groupEnd();
|
|
183
200
|
return r;
|
|
184
201
|
}
|
|
@@ -267,9 +284,10 @@ async function markKnownInputsSpent(storage, knownInputRows, transactionId) {
|
|
|
267
284
|
async function buildSdkInputFromOutput(storage, vargs, vin, i, o, unlockLen) {
|
|
268
285
|
if (i == null && !unlockLen)
|
|
269
286
|
throw new WERR_errors_1.WERR_INTERNAL(`vin ${vin} non-fixedInput without unlockLen`);
|
|
270
|
-
const
|
|
287
|
+
const sourceRawTx = vargs.includeAllSourceTransactions && vargs.isSignAction
|
|
271
288
|
? await storage.getRawTxOfKnownValidTransaction(o.txid)
|
|
272
289
|
: undefined;
|
|
290
|
+
const sourceTransaction = sourceRawTx == null ? undefined : Uint8Array.from(sourceRawTx);
|
|
273
291
|
return {
|
|
274
292
|
vin,
|
|
275
293
|
sourceTxid: o.txid,
|
|
@@ -351,7 +369,7 @@ function describeNewOutput(o, tags, txBaskets) {
|
|
|
351
369
|
const changeVout = o.change && o.purpose === 'change' && o.providedBy === 'storage' ? o.vout : undefined;
|
|
352
370
|
const ro = {
|
|
353
371
|
vout: (0, utilityHelpers_1.verifyInteger)(o.vout),
|
|
354
|
-
satoshis:
|
|
372
|
+
satoshis: (0, validationHelpers_1.validateSatoshis)(o.satoshis, 'o.satoshis'),
|
|
355
373
|
lockingScript: o.lockingScript == null ? '' : (0, utilityHelpers_noBuffer_1.asString)(o.lockingScript),
|
|
356
374
|
providedBy: (0, utilityHelpers_1.verifyTruthy)(o.providedBy),
|
|
357
375
|
purpose: o.purpose || undefined,
|
|
@@ -378,6 +396,49 @@ async function persistNewOutput(storage, o, tags, txTags, txBaskets, trx) {
|
|
|
378
396
|
}
|
|
379
397
|
return describeNewOutput(o, tags, txBaskets);
|
|
380
398
|
}
|
|
399
|
+
async function createRequiredOutput(storage, userId, xo, ctx, txBaskets, trx) {
|
|
400
|
+
const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
|
|
401
|
+
if (xo.purpose === 'service-charge') {
|
|
402
|
+
const lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
|
|
403
|
+
const now = new Date();
|
|
404
|
+
await storage.insertCommission({
|
|
405
|
+
userId,
|
|
406
|
+
transactionId: ctx.transactionId,
|
|
407
|
+
lockingScript,
|
|
408
|
+
satoshis: xo.satoshis,
|
|
409
|
+
isRedeemed: false,
|
|
410
|
+
keyOffset: (0, utilityHelpers_1.verifyTruthy)(xo.keyOffset),
|
|
411
|
+
created_at: now,
|
|
412
|
+
updated_at: now,
|
|
413
|
+
commissionId: 0
|
|
414
|
+
}, trx);
|
|
415
|
+
o.lockingScript = lockingScript;
|
|
416
|
+
o.providedBy = 'storage';
|
|
417
|
+
o.purpose = 'storage-commission';
|
|
418
|
+
o.type = 'custom';
|
|
419
|
+
o.spendable = false;
|
|
420
|
+
return { o, tags: [] };
|
|
421
|
+
}
|
|
422
|
+
if (xo.purpose === 'change') {
|
|
423
|
+
o.basketId = ctx.changeBasket.basketId;
|
|
424
|
+
o.change = true;
|
|
425
|
+
o.derivationPrefix = (0, utilityHelpers_1.verifyTruthy)(ctx.derivationPrefix);
|
|
426
|
+
o.derivationSuffix = (0, utilityHelpers_1.verifyTruthy)(xo.derivationSuffix);
|
|
427
|
+
o.providedBy = 'storage';
|
|
428
|
+
o.purpose = 'change';
|
|
429
|
+
o.type = 'P2PKH';
|
|
430
|
+
o.spendable = true;
|
|
431
|
+
return { o, tags: [] };
|
|
432
|
+
}
|
|
433
|
+
o.lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
|
|
434
|
+
o.basketId = xo.basket ? txBaskets[xo.basket].basketId : undefined;
|
|
435
|
+
o.customInstructions = xo.customInstructions;
|
|
436
|
+
o.outputDescription = xo.outputDescription;
|
|
437
|
+
o.providedBy = xo.providedBy;
|
|
438
|
+
o.purpose = xo.purpose || '';
|
|
439
|
+
o.type = 'custom';
|
|
440
|
+
return { o, tags: xo.tags };
|
|
441
|
+
}
|
|
381
442
|
async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs, trx) {
|
|
382
443
|
const txBaskets = {};
|
|
383
444
|
const basketNames = [...new Set(ctx.xoutputs.map(x => x.basket).filter((v) => !!v))];
|
|
@@ -387,39 +448,7 @@ async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs, trx)
|
|
|
387
448
|
Object.assign(txTags, await storage.findOrInsertOutputTagsBulk(userId, tagNames, trx));
|
|
388
449
|
const newOutputs = [];
|
|
389
450
|
for (const xo of ctx.xoutputs) {
|
|
390
|
-
|
|
391
|
-
if (xo.purpose === 'service-charge') {
|
|
392
|
-
const now = new Date();
|
|
393
|
-
await storage.insertCommission({
|
|
394
|
-
userId,
|
|
395
|
-
transactionId: ctx.transactionId,
|
|
396
|
-
lockingScript,
|
|
397
|
-
satoshis: xo.satoshis,
|
|
398
|
-
isRedeemed: false,
|
|
399
|
-
keyOffset: (0, utilityHelpers_1.verifyTruthy)(xo.keyOffset),
|
|
400
|
-
created_at: now,
|
|
401
|
-
updated_at: now,
|
|
402
|
-
commissionId: 0
|
|
403
|
-
}, trx);
|
|
404
|
-
const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
|
|
405
|
-
o.lockingScript = lockingScript;
|
|
406
|
-
o.providedBy = 'storage';
|
|
407
|
-
o.purpose = 'storage-commission';
|
|
408
|
-
o.type = 'custom';
|
|
409
|
-
o.spendable = false;
|
|
410
|
-
newOutputs.push({ o, tags: [] });
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
413
|
-
const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
|
|
414
|
-
o.lockingScript = lockingScript;
|
|
415
|
-
o.basketId = xo.basket ? txBaskets[xo.basket].basketId : undefined;
|
|
416
|
-
o.customInstructions = xo.customInstructions;
|
|
417
|
-
o.outputDescription = xo.outputDescription;
|
|
418
|
-
o.providedBy = xo.providedBy;
|
|
419
|
-
o.purpose = xo.purpose || '';
|
|
420
|
-
o.type = 'custom';
|
|
421
|
-
newOutputs.push({ o, tags: xo.tags });
|
|
422
|
-
}
|
|
451
|
+
newOutputs.push(await createRequiredOutput(storage, userId, xo, ctx, txBaskets, trx));
|
|
423
452
|
}
|
|
424
453
|
for (const o of changeOutputs) {
|
|
425
454
|
o.spendable = true;
|
|
@@ -463,6 +492,15 @@ async function createNewTxRecord(storage, userId, vargs, storageBeef, satoshis =
|
|
|
463
492
|
txid: undefined,
|
|
464
493
|
rawTx: undefined
|
|
465
494
|
};
|
|
495
|
+
const brc177 = vargs.brc177;
|
|
496
|
+
if (brc177?.kind === 'protected') {
|
|
497
|
+
newTx.noSendExpiryMode = brc177.expiry.mode;
|
|
498
|
+
newTx.noSendExpiryValue = brc177.expiry.value;
|
|
499
|
+
newTx.noSendExpiryDeadline = brc177.deadline;
|
|
500
|
+
newTx.noSendExpiryState = 'preparing';
|
|
501
|
+
newTx.noSendExpiryAnchorTxid = brc177.anchorTxid;
|
|
502
|
+
newTx.noSendExpiryAnchorVout = brc177.anchorVout;
|
|
503
|
+
}
|
|
466
504
|
newTx.transactionId = await storage.insertTransaction(newTx, trx);
|
|
467
505
|
const labelNames = [...new Set(vargs.labels)];
|
|
468
506
|
const labels = await storage.findOrInsertTxLabelsBulk(userId, labelNames, trx);
|
|
@@ -524,6 +562,22 @@ function validateRequiredOutputs(storage, userId, vargs) {
|
|
|
524
562
|
keyOffset
|
|
525
563
|
});
|
|
526
564
|
}
|
|
565
|
+
const brc177 = vargs.brc177;
|
|
566
|
+
if (brc177?.kind === 'funding') {
|
|
567
|
+
vout++;
|
|
568
|
+
xoutputs.push({
|
|
569
|
+
lockingScript: '00'.repeat(25),
|
|
570
|
+
satoshis: brc177.anchorSatoshis,
|
|
571
|
+
outputDescription: '',
|
|
572
|
+
basket: undefined,
|
|
573
|
+
tags: [],
|
|
574
|
+
vout,
|
|
575
|
+
providedBy: 'storage',
|
|
576
|
+
purpose: 'change',
|
|
577
|
+
derivationSuffix: undefined,
|
|
578
|
+
keyOffset: undefined
|
|
579
|
+
});
|
|
580
|
+
}
|
|
527
581
|
return xoutputs;
|
|
528
582
|
}
|
|
529
583
|
/**
|
|
@@ -549,7 +603,7 @@ function validateRequiredOutputs(storage, userId, vargs) {
|
|
|
549
603
|
*/
|
|
550
604
|
async function validateRequiredInputs(storage, userId, vargs) {
|
|
551
605
|
// stampLog(vargs, `start storage verifyInputBeef`)
|
|
552
|
-
|
|
606
|
+
let beef = new sdk_1.Beef();
|
|
553
607
|
if (vargs.inputs.length === 0)
|
|
554
608
|
return { storageBeef: beef, beef, xinputs: [] };
|
|
555
609
|
if (vargs.inputBEEF != null)
|
|
@@ -572,6 +626,10 @@ async function validateRequiredInputs(storage, userId, vargs) {
|
|
|
572
626
|
inputsByTxid[input.outpoint.txid] ||= [];
|
|
573
627
|
inputsByTxid[input.outpoint.txid].push(input);
|
|
574
628
|
}
|
|
629
|
+
// inputBEEF is an untrusted proof-data container, not a declaration of
|
|
630
|
+
// additional inputs. Retain only the transactions needed to prove the
|
|
631
|
+
// declared inputs so unrelated branches are neither validated nor stored.
|
|
632
|
+
beef = (0, beefForTxids_1.beefForTxids)(beef, Object.keys(inputsByTxid));
|
|
575
633
|
const localKnownInputTxids = {};
|
|
576
634
|
for (const [txid, txInputs] of Object.entries(inputsByTxid)) {
|
|
577
635
|
localKnownInputTxids[txid] = txInputs.every(input => {
|
|
@@ -582,7 +640,7 @@ async function validateRequiredInputs(storage, userId, vargs) {
|
|
|
582
640
|
await validateBeefTxidOnlyEntries(beef, inputsByTxid, trustSelf, storage);
|
|
583
641
|
await ensureBeefContainsAllInputTxids(beef, inputsByTxid, localKnownInputTxids, trustSelf, storage);
|
|
584
642
|
if (!(await beef.verify(await storage.getServices().getChainTracker(), true))) {
|
|
585
|
-
|
|
643
|
+
vargs.logger?.error('inputBEEF failed independent validation');
|
|
586
644
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', 'valid Beef when factoring options.trustSelf');
|
|
587
645
|
}
|
|
588
646
|
const storageBeef = beef.clone();
|
|
@@ -633,7 +691,7 @@ function applyStoredInputScript(output, input, vargs) {
|
|
|
633
691
|
if (!disableDoubleSpendCheckForTest && !output.spendable && !vargs.isNoSend) {
|
|
634
692
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'spendable output unless noSend is true');
|
|
635
693
|
}
|
|
636
|
-
input.satoshis =
|
|
694
|
+
input.satoshis = (0, validationHelpers_1.validateSatoshis)(output.satoshis, 'output.satoshis');
|
|
637
695
|
input.lockingScript = sdk_1.Script.fromBinary((0, utilityHelpers_noBuffer_1.asArray)(output.lockingScript));
|
|
638
696
|
}
|
|
639
697
|
async function applyBeefInputScript(storage, beef, input) {
|
|
@@ -652,7 +710,7 @@ async function applyBeefInputScript(storage, beef, input) {
|
|
|
652
710
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'valid outpoint');
|
|
653
711
|
}
|
|
654
712
|
const sourceOutput = beefTx.tx.outputs[vout];
|
|
655
|
-
input.satoshis =
|
|
713
|
+
input.satoshis = (0, validationHelpers_1.validateSatoshis)(sourceOutput.satoshis, 'so.satoshis');
|
|
656
714
|
input.lockingScript = sourceOutput.lockingScript;
|
|
657
715
|
}
|
|
658
716
|
async function resolveInputScript(storage, userId, vargs, input, beef, preloadedOutputsByOutpoint) {
|
|
@@ -697,8 +755,8 @@ async function validateNoSendChange(storage, userId, vargs, changeBasket) {
|
|
|
697
755
|
return r;
|
|
698
756
|
}
|
|
699
757
|
function fundingPlanSatoshis(plan) {
|
|
700
|
-
return plan.result.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
|
|
701
|
-
plan.selected.reduce((sum, output) => sum + output.satoshis, 0);
|
|
758
|
+
return (plan.result.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
|
|
759
|
+
plan.selected.reduce((sum, output) => sum + output.satoshis, 0));
|
|
702
760
|
}
|
|
703
761
|
class FundingClaimConflict extends Error {
|
|
704
762
|
conflict;
|
|
@@ -712,7 +770,10 @@ async function traceStorageStep(storage, name, parent, attributes, callback) {
|
|
|
712
770
|
return await callback();
|
|
713
771
|
return await storage.telemetry.withSpan(name, { component: 'wallet-storage', parent: parent?.context, attributes }, async (span) => await callback(span));
|
|
714
772
|
}
|
|
715
|
-
function makeFundingParams(
|
|
773
|
+
function makeFundingParams(args) {
|
|
774
|
+
const { storage, vargs, xinputs, xoutputs, changeBasket, feeModel, healthyChangeCount, compatibilityFallback } = args;
|
|
775
|
+
const preferredSatoshis = Math.max(1, changeBasket.minimumDesiredUTXOValue);
|
|
776
|
+
const brc177 = vargs.brc177;
|
|
716
777
|
return {
|
|
717
778
|
fixedInputs: xinputs.map(input => ({
|
|
718
779
|
satoshis: input.satoshis,
|
|
@@ -723,40 +784,69 @@ function makeFundingParams(vargs, xinputs, xoutputs, changeBasket, feeModel, ava
|
|
|
723
784
|
lockingScriptLength: output.lockingScript.length / 2
|
|
724
785
|
})),
|
|
725
786
|
feeModel,
|
|
726
|
-
changeInitialSatoshis:
|
|
727
|
-
|
|
787
|
+
changeInitialSatoshis: preferredSatoshis,
|
|
788
|
+
// The final compatibility shape uses the allocator's economic floor. This
|
|
789
|
+
// remains at least as permissive as every historical basket preference,
|
|
790
|
+
// including an exact 144/32 basket that has just migrated to 144/5000.
|
|
791
|
+
changeFirstSatoshis: compatibilityFallback ? 1 : preferredSatoshis,
|
|
728
792
|
changeLockingScriptLength: 25,
|
|
729
793
|
changeUnlockingScriptLength: 107,
|
|
730
|
-
targetNetCount: changeBasket.numberOfDesiredUTXOs -
|
|
794
|
+
targetNetCount: changeBasket.numberOfDesiredUTXOs - healthyChangeCount,
|
|
795
|
+
// The planner requires a positive cap; surplusToFee below keeps the
|
|
796
|
+
// protected action change-free regardless.
|
|
797
|
+
maxChangeOutputs: brc177?.kind === 'protected' ? 1 : storage.managedChangePolicy.maxOutputsPerAction,
|
|
798
|
+
// The anchor is sized to cover the reclaim (BRC-177 Prefunding §2); the
|
|
799
|
+
// protected action carries no change, so any surplus is fee.
|
|
800
|
+
// validateBrc177FundingPlan below independently rejects any change.
|
|
801
|
+
surplusToFee: brc177?.kind === 'protected',
|
|
802
|
+
surplusPoolShaping: !compatibilityFallback,
|
|
803
|
+
maxMigrationInputs: compatibilityFallback ? 0 : storage.managedChangePolicy.migrationInputsPerAction,
|
|
731
804
|
randomVals: vargs.randomVals
|
|
732
805
|
};
|
|
733
806
|
}
|
|
734
|
-
async function
|
|
735
|
-
const [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel
|
|
736
|
-
const excludeSending = !vargs.isDelayed;
|
|
737
|
-
const candidates = await traceStorageStep(storage, 'wallet.storage.create_action.funding_candidates', parent, { 'funding.exclude_sending': excludeSending }, async (span) => {
|
|
738
|
-
const outputs = await storage.findAvailableManagedChangeInputCandidates(userId, changeBasket.basketId, excludeSending, trx);
|
|
739
|
-
span?.end({
|
|
740
|
-
attributes: {
|
|
741
|
-
'funding.candidate_count': outputs.length,
|
|
742
|
-
'funding.candidate_satoshis': outputs.reduce((sum, output) => sum + output.satoshis, 0)
|
|
743
|
-
}
|
|
744
|
-
});
|
|
745
|
-
return outputs;
|
|
746
|
-
});
|
|
807
|
+
async function buildFundingPlan(storage, context, candidates, eligibleStatuses, policyTier, compatibilityFallback, parent) {
|
|
808
|
+
const [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel] = context;
|
|
747
809
|
const noSendIds = new Set(noSendChangeIn.map(output => output.outputId));
|
|
748
|
-
const
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
810
|
+
const brc177 = vargs.brc177;
|
|
811
|
+
const available = candidates.filter(output => !noSendIds.has(output.outputId) && eligibleStatuses.includes(output.transactionStatus));
|
|
812
|
+
if (brc177?.kind === 'protected')
|
|
813
|
+
available.length = 0;
|
|
814
|
+
const preferredSatoshis = Math.max(1, changeBasket.minimumDesiredUTXOValue);
|
|
815
|
+
const healthyChangeCount = compatibilityFallback
|
|
816
|
+
? // Preserve the legacy target-count input exactly, including noSendChange
|
|
817
|
+
// that is removed from the allocator below but still belongs to this tier.
|
|
818
|
+
candidates.filter(output => eligibleStatuses.includes(output.transactionStatus)).length
|
|
819
|
+
: candidates.filter(output => output.satoshis >= preferredSatoshis).length;
|
|
820
|
+
const params = makeFundingParams({
|
|
821
|
+
storage,
|
|
822
|
+
vargs,
|
|
823
|
+
xinputs,
|
|
824
|
+
xoutputs,
|
|
825
|
+
changeBasket,
|
|
826
|
+
feeModel,
|
|
827
|
+
healthyChangeCount,
|
|
828
|
+
compatibilityFallback
|
|
829
|
+
});
|
|
830
|
+
const noSendStatuses = await storage.findTransactionStatusesByIds(userId, noSendChangeIn.map(output => output.transactionId));
|
|
831
|
+
const plannedNoSend = noSendChangeIn.map(output => ({
|
|
832
|
+
outputId: output.outputId,
|
|
833
|
+
transactionId: output.transactionId,
|
|
834
|
+
satoshis: output.satoshis,
|
|
835
|
+
txid: output.txid,
|
|
836
|
+
vout: output.vout,
|
|
837
|
+
transactionStatus: noSendStatuses.get(output.transactionId) ?? 'nosend'
|
|
838
|
+
}));
|
|
839
|
+
const claimStatuses = [...new Set([...eligibleStatuses, ...plannedNoSend.map(output => output.transactionStatus)])];
|
|
752
840
|
return await traceStorageStep(storage, 'wallet.storage.create_action.funding_plan', parent, {
|
|
753
841
|
'funding.candidate_count': available.length,
|
|
754
|
-
'funding.no_send_change_count': noSendChangeIn.length
|
|
842
|
+
'funding.no_send_change_count': noSendChangeIn.length,
|
|
843
|
+
'funding.policy_tier': policyTier,
|
|
844
|
+
'funding.compatibility_fallback': compatibilityFallback
|
|
755
845
|
}, async (span) => {
|
|
756
846
|
const allocated = new Map();
|
|
757
847
|
const availableSelector = new actionPlanning_1.CanonicalChangeSelector(available);
|
|
758
|
-
const noSend = [...
|
|
759
|
-
const noSendById = new Map(
|
|
848
|
+
const noSend = [...plannedNoSend];
|
|
849
|
+
const noSendById = new Map(plannedNoSend.map(output => [output.outputId, output]));
|
|
760
850
|
const allocate = async (targetSatoshis, exactSatoshis) => {
|
|
761
851
|
let output = noSend.pop();
|
|
762
852
|
output ??= availableSelector.take(targetSatoshis, exactSatoshis);
|
|
@@ -789,21 +879,137 @@ async function prepareFundingPlan(storage, context) {
|
|
|
789
879
|
params,
|
|
790
880
|
result,
|
|
791
881
|
selected,
|
|
792
|
-
availableChangeCount: candidates.length
|
|
882
|
+
availableChangeCount: candidates.length,
|
|
883
|
+
eligibleStatuses: claimStatuses,
|
|
884
|
+
policyTier,
|
|
885
|
+
compatibilityFallback
|
|
793
886
|
};
|
|
794
887
|
});
|
|
795
888
|
}
|
|
889
|
+
async function fundingPlanSerializedCost(storage, plan, knownTxids) {
|
|
890
|
+
const txids = [...new Set(plan.selected.map(candidate => (0, utilityHelpers_1.verifyTruthy)(candidate.txid)))];
|
|
891
|
+
if (txids.length === 0)
|
|
892
|
+
return plan.result.size;
|
|
893
|
+
try {
|
|
894
|
+
const beef = await storage.getBeefForTransactions(txids, {
|
|
895
|
+
knownTxids,
|
|
896
|
+
ignoreStorage: false,
|
|
897
|
+
ignoreServices: true,
|
|
898
|
+
ignoreNewProven: false
|
|
899
|
+
});
|
|
900
|
+
return plan.result.size + beef.toUint8Array().length;
|
|
901
|
+
}
|
|
902
|
+
catch {
|
|
903
|
+
return Number.MAX_SAFE_INTEGER;
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
const FUNDING_TIERS = [
|
|
907
|
+
{ policyTier: 'completed', statuses: ['completed'] },
|
|
908
|
+
{ policyTier: 'unproven', statuses: ['completed', 'unproven'] },
|
|
909
|
+
{ policyTier: 'sending', statuses: ['completed', 'unproven', 'sending'] }
|
|
910
|
+
];
|
|
911
|
+
async function resolveFundingCandidates(storage, userId, basketId, parent, trx) {
|
|
912
|
+
const rawCandidates = await traceStorageStep(storage, 'wallet.storage.create_action.funding_candidates', parent, { 'funding.include_pending': true }, async (span) => {
|
|
913
|
+
const outputs = await storage.findAvailableManagedChangeInputCandidates(userId, basketId, false, trx);
|
|
914
|
+
span?.end({
|
|
915
|
+
attributes: {
|
|
916
|
+
'funding.candidate_count': outputs.length,
|
|
917
|
+
'funding.candidate_satoshis': outputs.reduce((sum, output) => sum + output.satoshis, 0),
|
|
918
|
+
'funding.completed_candidate_count': outputs.filter(output => output.transactionStatus === 'completed')
|
|
919
|
+
.length,
|
|
920
|
+
'funding.unproven_candidate_count': outputs.filter(output => output.transactionStatus === 'unproven').length,
|
|
921
|
+
'funding.sending_candidate_count': outputs.filter(output => output.transactionStatus === 'sending').length
|
|
922
|
+
}
|
|
923
|
+
});
|
|
924
|
+
return outputs;
|
|
925
|
+
});
|
|
926
|
+
const missingStatusIds = rawCandidates
|
|
927
|
+
.filter(output => output.transactionStatus == null)
|
|
928
|
+
.map(output => output.transactionId);
|
|
929
|
+
const missingStatuses = await storage.findTransactionStatusesByIds(userId, missingStatusIds, trx);
|
|
930
|
+
const candidates = rawCandidates.map(output => ({
|
|
931
|
+
...output,
|
|
932
|
+
transactionStatus: output.transactionStatus ?? missingStatuses.get(output.transactionId)
|
|
933
|
+
}));
|
|
934
|
+
if (candidates.some(output => output.transactionStatus == null)) {
|
|
935
|
+
throw new WERR_errors_1.WERR_INTERNAL('managed change candidate is missing its source transaction status');
|
|
936
|
+
}
|
|
937
|
+
return candidates;
|
|
938
|
+
}
|
|
939
|
+
async function buildFundingPlanForTier(storage, context, candidates, tier, parent) {
|
|
940
|
+
try {
|
|
941
|
+
return {
|
|
942
|
+
plan: await buildFundingPlan(storage, context, candidates, tier.statuses, tier.policyTier, false, parent)
|
|
943
|
+
};
|
|
944
|
+
}
|
|
945
|
+
catch (error) {
|
|
946
|
+
if (!(error instanceof WERR_errors_1.WERR_INSUFFICIENT_FUNDS))
|
|
947
|
+
throw error;
|
|
948
|
+
}
|
|
949
|
+
// Pool shaping is optional. Before widening ancestry to unproven or sending
|
|
950
|
+
// parents, retry the same status tier with the former funding shape. This is
|
|
951
|
+
// the one-way compatibility guarantee: a preferred minimum can never
|
|
952
|
+
// manufacture starvation or force a pending chain.
|
|
953
|
+
try {
|
|
954
|
+
return {
|
|
955
|
+
plan: await buildFundingPlan(storage, context, candidates, tier.statuses, 'compatibility', true, parent)
|
|
956
|
+
};
|
|
957
|
+
}
|
|
958
|
+
catch (error) {
|
|
959
|
+
if (!(error instanceof WERR_errors_1.WERR_INSUFFICIENT_FUNDS))
|
|
960
|
+
throw error;
|
|
961
|
+
return { fundingError: error };
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
function firstPlanNeedsNoPendingComparison(storage, plan) {
|
|
965
|
+
const threshold = storage.managedChangePolicy.pendingComparisonInputs;
|
|
966
|
+
return threshold === -1 || plan.selected.length <= threshold;
|
|
967
|
+
}
|
|
968
|
+
async function chooseLowestSerializedFundingPlan(storage, plans, knownTxids) {
|
|
969
|
+
let chosen = plans[0];
|
|
970
|
+
let chosenCost = await fundingPlanSerializedCost(storage, chosen, knownTxids);
|
|
971
|
+
for (const alternative of plans.slice(1)) {
|
|
972
|
+
const cost = await fundingPlanSerializedCost(storage, alternative, knownTxids);
|
|
973
|
+
if (cost < chosenCost) {
|
|
974
|
+
chosen = alternative;
|
|
975
|
+
chosenCost = cost;
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
return chosen;
|
|
979
|
+
}
|
|
980
|
+
async function prepareFundingPlanWithLiquidityPolicy(storage, context, parent, trx) {
|
|
981
|
+
const [userId, vargs, , , changeBasket] = context;
|
|
982
|
+
const candidates = await resolveFundingCandidates(storage, userId, changeBasket.basketId, parent, trx);
|
|
983
|
+
const successful = [];
|
|
984
|
+
let fundingError;
|
|
985
|
+
for (const tier of FUNDING_TIERS) {
|
|
986
|
+
const attempted = await buildFundingPlanForTier(storage, context, candidates, tier, parent);
|
|
987
|
+
fundingError = attempted.fundingError ?? fundingError;
|
|
988
|
+
const plan = attempted.plan;
|
|
989
|
+
if (plan != null) {
|
|
990
|
+
successful.push(plan);
|
|
991
|
+
if (successful.length === 1 && firstPlanNeedsNoPendingComparison(storage, plan))
|
|
992
|
+
return plan;
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
if (successful.length > 0) {
|
|
996
|
+
if (successful.length === 1)
|
|
997
|
+
return successful[0];
|
|
998
|
+
return await chooseLowestSerializedFundingPlan(storage, successful, vargs.options.knownTxids);
|
|
999
|
+
}
|
|
1000
|
+
if (fundingError != null)
|
|
1001
|
+
throw fundingError;
|
|
1002
|
+
throw new WERR_errors_1.WERR_INTERNAL('funding policy produced neither a plan nor an error');
|
|
1003
|
+
}
|
|
796
1004
|
async function claimFundingPlan(storage, request) {
|
|
797
|
-
const [userId, basketId,
|
|
1005
|
+
const [userId, basketId, eligibleStatuses, transactionId, noSendChangeIn, plan, trx] = request;
|
|
798
1006
|
if (plan.selected.length === 0) {
|
|
799
1007
|
return { outputs: [], sourceTransactionCount: 0, hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
|
|
800
1008
|
}
|
|
801
1009
|
const noSendIds = new Set(noSendChangeIn.map(output => output.outputId));
|
|
802
|
-
const
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
const claim = await storage.transaction(async (claimTrx) => {
|
|
806
|
-
const currentById = await storage.findFundingOutputsForUpdate(userId, plan.selected.map(output => output.outputId), statuses, claimTrx);
|
|
1010
|
+
const claim = await storage
|
|
1011
|
+
.transaction(async (claimTrx) => {
|
|
1012
|
+
const currentById = await storage.findFundingOutputsForUpdate(userId, plan.selected.map(output => output.outputId), eligibleStatuses, claimTrx);
|
|
807
1013
|
const transactionIds = [...new Set(Object.values(currentById).map(output => output.transactionId))];
|
|
808
1014
|
const claimed = [];
|
|
809
1015
|
for (const planned of plan.selected) {
|
|
@@ -827,7 +1033,8 @@ async function claimFundingPlan(storage, request) {
|
|
|
827
1033
|
output.spentBy = transactionId;
|
|
828
1034
|
}
|
|
829
1035
|
return { outputs: claimed, sourceTransactionCount: transactionIds.length };
|
|
830
|
-
}, trx)
|
|
1036
|
+
}, trx)
|
|
1037
|
+
.catch(error => {
|
|
831
1038
|
if (error instanceof FundingClaimConflict)
|
|
832
1039
|
return { conflict: error.conflict };
|
|
833
1040
|
throw error;
|
|
@@ -843,9 +1050,12 @@ async function claimFundingPlan(storage, request) {
|
|
|
843
1050
|
}
|
|
844
1051
|
async function hydrateFundingInputScripts(storage, outputs, trx) {
|
|
845
1052
|
const missing = outputs.filter(output => output.lockingScript?.length !== output.scriptLength &&
|
|
846
|
-
output.scriptLength != null &&
|
|
847
|
-
output.
|
|
848
|
-
output.
|
|
1053
|
+
output.scriptLength != null &&
|
|
1054
|
+
output.scriptLength > 0 &&
|
|
1055
|
+
output.scriptOffset != null &&
|
|
1056
|
+
output.scriptOffset > 0 &&
|
|
1057
|
+
output.txid != null &&
|
|
1058
|
+
output.txid !== '');
|
|
849
1059
|
if (missing.length === 0)
|
|
850
1060
|
return { hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
|
|
851
1061
|
const byTxid = new Map();
|
|
@@ -890,7 +1100,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
|
|
|
890
1100
|
const claim = await claimFundingPlan(storage, [
|
|
891
1101
|
userId,
|
|
892
1102
|
ctx.changeBasket.basketId,
|
|
893
|
-
|
|
1103
|
+
plan.eligibleStatuses,
|
|
894
1104
|
ctx.transactionId,
|
|
895
1105
|
ctx.noSendChangeIn,
|
|
896
1106
|
plan,
|
|
@@ -912,17 +1122,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
|
|
|
912
1122
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange', 'outputs that remain spendable during action planning');
|
|
913
1123
|
}
|
|
914
1124
|
retryCount++;
|
|
915
|
-
plan = await
|
|
916
|
-
userId,
|
|
917
|
-
vargs,
|
|
918
|
-
ctx.xinputs,
|
|
919
|
-
ctx.xoutputs,
|
|
920
|
-
ctx.changeBasket,
|
|
921
|
-
ctx.noSendChangeIn,
|
|
922
|
-
ctx.feeModel,
|
|
923
|
-
parent,
|
|
924
|
-
trx
|
|
925
|
-
]);
|
|
1125
|
+
plan = await prepareFundingPlanWithLiquidityPolicy(storage, [userId, vargs, ctx.xinputs, ctx.xoutputs, ctx.changeBasket, ctx.noSendChangeIn, ctx.feeModel], parent, trx);
|
|
926
1126
|
}
|
|
927
1127
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('wallet funding changed repeatedly during action planning; retry createAction');
|
|
928
1128
|
});
|
|
@@ -959,10 +1159,16 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
|
|
|
959
1159
|
for (let i = 0; i < count; i++)
|
|
960
1160
|
val.push(rand(0, 255));
|
|
961
1161
|
}
|
|
962
|
-
return
|
|
1162
|
+
return (0, utils_1.toBase64)(val);
|
|
963
1163
|
};
|
|
964
1164
|
// Generate a derivation prefix for the payment
|
|
965
1165
|
const derivationPrefix = randomDerivation(16);
|
|
1166
|
+
ctx.derivationPrefix = derivationPrefix;
|
|
1167
|
+
for (const output of ctx.xoutputs) {
|
|
1168
|
+
if (output.purpose === 'change' && output.derivationSuffix == null) {
|
|
1169
|
+
output.derivationSuffix = randomDerivation(16);
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
966
1172
|
const r = {
|
|
967
1173
|
maxPossibleSatoshisAdjustment: gcr.maxPossibleSatoshisAdjustment,
|
|
968
1174
|
allocatedChange,
|
|
@@ -997,6 +1203,21 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
|
|
|
997
1203
|
};
|
|
998
1204
|
return r;
|
|
999
1205
|
}
|
|
1206
|
+
function validateBrc177FundingPlan(vargs, plan) {
|
|
1207
|
+
if (vargs.brc177?.kind !== 'protected')
|
|
1208
|
+
return;
|
|
1209
|
+
if (plan.selected.length !== 1 || vargs.options.noSendChange.length !== 1) {
|
|
1210
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action must use exactly one revocation anchor');
|
|
1211
|
+
}
|
|
1212
|
+
const selected = plan.selected[0];
|
|
1213
|
+
const anchor = vargs.options.noSendChange[0];
|
|
1214
|
+
if (selected.txid !== anchor.txid || selected.vout !== anchor.vout) {
|
|
1215
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action selected a non-anchor wallet input');
|
|
1216
|
+
}
|
|
1217
|
+
if (plan.result.changeOutputs.length !== 0) {
|
|
1218
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action must not create wallet change');
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1000
1221
|
/**
|
|
1001
1222
|
* Avoid returning any known raw transaction data by converting any known transaction
|
|
1002
1223
|
* in the `beef` to txidOnly.
|
|
@@ -1029,19 +1250,77 @@ function makeKnownTxidLookup(knownTxids) {
|
|
|
1029
1250
|
return knownTxids.includes(txid);
|
|
1030
1251
|
};
|
|
1031
1252
|
}
|
|
1253
|
+
function preparedBeefStorage(storage) {
|
|
1254
|
+
return storage;
|
|
1255
|
+
}
|
|
1256
|
+
function appendPreparedBeefPreparation(preparations, writeEnabled, userId, rootTxids) {
|
|
1257
|
+
if (!writeEnabled)
|
|
1258
|
+
return;
|
|
1259
|
+
preparations.push({ userId, rootTxids });
|
|
1260
|
+
}
|
|
1261
|
+
function enqueuePreparedBeefs(storage, preparations) {
|
|
1262
|
+
const extension = preparedBeefStorage(storage);
|
|
1263
|
+
if (typeof extension.enqueuePreparedBeef !== 'function')
|
|
1264
|
+
return;
|
|
1265
|
+
for (const preparation of preparations)
|
|
1266
|
+
extension.enqueuePreparedBeef.call(storage, preparation);
|
|
1267
|
+
}
|
|
1268
|
+
async function loadAllocatedChangeBeef(storage, userId, txids, options, parent) {
|
|
1269
|
+
const extension = preparedBeefStorage(storage);
|
|
1270
|
+
const readEnabled = extension.preparedBeefReadsEnabled?.call(storage) === true;
|
|
1271
|
+
const writeEnabled = extension.preparedBeefWritesEnabled?.call(storage) === true;
|
|
1272
|
+
const lookup = readEnabled && typeof extension.lookupPreparedBeefs === 'function'
|
|
1273
|
+
? await extension.lookupPreparedBeefs.call(storage, userId, txids, parent)
|
|
1274
|
+
: {
|
|
1275
|
+
beef: new sdk_1.Beef(),
|
|
1276
|
+
hitTxids: [],
|
|
1277
|
+
missingTxids: [...new Set(txids)],
|
|
1278
|
+
corruptCount: 0,
|
|
1279
|
+
byteLength: 0
|
|
1280
|
+
};
|
|
1281
|
+
const beef = lookup.beef;
|
|
1282
|
+
const preparations = [];
|
|
1283
|
+
if (lookup.missingTxids.length > 0) {
|
|
1284
|
+
const fetched = await storage.getBeefForTransactions(lookup.missingTxids, {
|
|
1285
|
+
...options,
|
|
1286
|
+
mergeToBeef: undefined
|
|
1287
|
+
});
|
|
1288
|
+
if (lookup.hitTxids.length === 0) {
|
|
1289
|
+
// Preserve the original disabled/cold path without merging into an
|
|
1290
|
+
// otherwise empty BEEF solely for this optimization.
|
|
1291
|
+
appendPreparedBeefPreparation(preparations, writeEnabled, userId, lookup.missingTxids);
|
|
1292
|
+
return {
|
|
1293
|
+
beef: fetched,
|
|
1294
|
+
preparations,
|
|
1295
|
+
preparedHitCount: 0,
|
|
1296
|
+
canonicalFetchCount: lookup.missingTxids.length
|
|
1297
|
+
};
|
|
1298
|
+
}
|
|
1299
|
+
beef.mergeBeef(fetched);
|
|
1300
|
+
// A caller's knownTxids may leave placeholders which are unsuitable for a
|
|
1301
|
+
// reusable artifact. Rebuild those roots strictly in the worker.
|
|
1302
|
+
appendPreparedBeefPreparation(preparations, writeEnabled, userId, lookup.missingTxids);
|
|
1303
|
+
}
|
|
1304
|
+
return {
|
|
1305
|
+
beef,
|
|
1306
|
+
preparations,
|
|
1307
|
+
preparedHitCount: lookup.hitTxids.length,
|
|
1308
|
+
canonicalFetchCount: lookup.missingTxids.length
|
|
1309
|
+
};
|
|
1310
|
+
}
|
|
1032
1311
|
function missingAllocatedChangeTxids(allocatedChange, beef, knownTxids) {
|
|
1033
1312
|
const hasKnownTxid = makeKnownTxidLookup(knownTxids);
|
|
1034
1313
|
return Array.from(new Set(allocatedChange
|
|
1035
1314
|
.map(output => (0, utilityHelpers_1.verifyTruthy)(output.txid))
|
|
1036
1315
|
.filter(txid => beef.findTxid(txid) == null && !hasKnownTxid(txid))));
|
|
1037
1316
|
}
|
|
1038
|
-
function startAllocatedChangeBeefPrefetch(storage, vargs, allocatedChange, beef, parent) {
|
|
1317
|
+
function startAllocatedChangeBeefPrefetch(storage, userId, vargs, allocatedChange, beef, parent) {
|
|
1039
1318
|
if (vargs.options.returnTXIDOnly)
|
|
1040
|
-
return Promise.resolve({ sourceCount: 0, txids: [] });
|
|
1319
|
+
return Promise.resolve({ sourceCount: 0, txids: [], preparations: [] });
|
|
1041
1320
|
const knownTxids = vargs.options.knownTxids ?? [];
|
|
1042
1321
|
const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
|
|
1043
1322
|
if (missing.length === 0)
|
|
1044
|
-
return Promise.resolve({ sourceCount: 0, txids: [] });
|
|
1323
|
+
return Promise.resolve({ sourceCount: 0, txids: [], preparations: [] });
|
|
1045
1324
|
const options = {
|
|
1046
1325
|
trustSelf: undefined,
|
|
1047
1326
|
knownTxids,
|
|
@@ -1055,15 +1334,22 @@ function startAllocatedChangeBeefPrefetch(storage, vargs, allocatedChange, beef,
|
|
|
1055
1334
|
'beef.missing_source_count': missing.length,
|
|
1056
1335
|
'beef.storage_batch_count': missing.length === 0 ? 0 : 1
|
|
1057
1336
|
}, async (span) => {
|
|
1058
|
-
const fetched = await storage
|
|
1337
|
+
const fetched = await loadAllocatedChangeBeef(storage, userId, missing, options, parent);
|
|
1059
1338
|
span?.end({
|
|
1060
1339
|
attributes: {
|
|
1061
|
-
'beef.fetched_tx_count': fetched.txs.length,
|
|
1062
|
-
'beef.fetched_bump_count': fetched.bumps.length
|
|
1340
|
+
'beef.fetched_tx_count': fetched.beef.txs.length,
|
|
1341
|
+
'beef.fetched_bump_count': fetched.beef.bumps.length,
|
|
1342
|
+
'beef.prepared_hit_count': fetched.preparedHitCount,
|
|
1343
|
+
'beef.canonical_fetch_count': fetched.canonicalFetchCount
|
|
1063
1344
|
}
|
|
1064
1345
|
});
|
|
1065
1346
|
return fetched;
|
|
1066
|
-
}).then(prefetched => ({
|
|
1347
|
+
}).then(prefetched => ({
|
|
1348
|
+
beef: prefetched.beef,
|
|
1349
|
+
preparations: prefetched.preparations,
|
|
1350
|
+
sourceCount: missing.length,
|
|
1351
|
+
txids: missing
|
|
1352
|
+
}), error => ({ error, preparations: [], sourceCount: missing.length, txids: missing }));
|
|
1067
1353
|
}
|
|
1068
1354
|
function sameTxids(left, right) {
|
|
1069
1355
|
if (left.length !== right.length)
|
|
@@ -1071,7 +1357,7 @@ function sameTxids(left, right) {
|
|
|
1071
1357
|
const expected = new Set(left);
|
|
1072
1358
|
return right.every(txid => expected.has(txid));
|
|
1073
1359
|
}
|
|
1074
|
-
async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef, prefetch, parent) {
|
|
1360
|
+
async function mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef, prefetch, parent) {
|
|
1075
1361
|
const options = {
|
|
1076
1362
|
trustSelf: undefined,
|
|
1077
1363
|
knownTxids: vargs.options.knownTxids,
|
|
@@ -1082,7 +1368,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1082
1368
|
minProofLevel: undefined
|
|
1083
1369
|
};
|
|
1084
1370
|
if (vargs.options.returnTXIDOnly)
|
|
1085
|
-
return undefined;
|
|
1371
|
+
return { inputBeef: undefined, preparations: [] };
|
|
1086
1372
|
const knownTxids = vargs.options.knownTxids ?? [];
|
|
1087
1373
|
const requiredBeforePrefetch = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
|
|
1088
1374
|
const prefetched = await traceStorageStep(storage, 'wallet.storage.create_action.beef_prefetch_join', parent, { 'beef.prefetch_source_count': 0 }, async (span) => {
|
|
@@ -1098,6 +1384,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1098
1384
|
throw prefetched.error;
|
|
1099
1385
|
if (usePrefetch && prefetched.beef != null)
|
|
1100
1386
|
beef.mergeBeef(prefetched.beef);
|
|
1387
|
+
const preparations = usePrefetch ? [...prefetched.preparations] : [];
|
|
1101
1388
|
// If a concurrent spender forced the funding claim to be replanned, only
|
|
1102
1389
|
// the newly selected roots remain. The normal uncontended path is empty.
|
|
1103
1390
|
const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
|
|
@@ -1111,7 +1398,9 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1111
1398
|
'beef.prefetch_reused': usePrefetch
|
|
1112
1399
|
}, async (span) => {
|
|
1113
1400
|
if (missing.length > 0) {
|
|
1114
|
-
|
|
1401
|
+
const loaded = await loadAllocatedChangeBeef(storage, userId, missing, options, parent);
|
|
1402
|
+
fetched = loaded.beef;
|
|
1403
|
+
preparations.push(...loaded.preparations);
|
|
1115
1404
|
}
|
|
1116
1405
|
span?.end({
|
|
1117
1406
|
attributes: {
|
|
@@ -1131,7 +1420,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1131
1420
|
}
|
|
1132
1421
|
});
|
|
1133
1422
|
});
|
|
1134
|
-
|
|
1423
|
+
const inputBeef = await traceStorageStep(storage, 'wallet.storage.create_action.beef_trim_serialize', parent, {
|
|
1135
1424
|
'beef.tx_count': beef.txs.length,
|
|
1136
1425
|
'beef.bump_count': beef.bumps.length,
|
|
1137
1426
|
'beef.known_txid_count': knownTxids.length
|
|
@@ -1140,5 +1429,6 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1140
1429
|
span?.end({ attributes: { 'beef.result_bytes': result?.length ?? 0 } });
|
|
1141
1430
|
return result;
|
|
1142
1431
|
});
|
|
1432
|
+
return { inputBeef, preparations };
|
|
1143
1433
|
}
|
|
1144
1434
|
//# sourceMappingURL=createAction.js.map
|