@bsv/wallet-toolbox 2.4.4 → 2.4.20
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 +43 -0
- package/LICENSE.txt +58 -0
- package/README.md +98 -36
- package/docs/action-batch-planning.md +117 -14
- package/docs/client.md +1535 -4125
- package/docs/monitor.md +34 -137
- package/docs/services.md +296 -602
- package/docs/setup.md +48 -28
- package/docs/storage.md +358 -1901
- package/docs/wallet.md +10316 -5665
- package/out/src/CWIStyleWalletManager.d.ts +11 -2
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +118 -87
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +7 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +10 -11
- package/out/src/Setup.js.map +1 -1
- package/out/src/SetupClient.d.ts +2 -0
- package/out/src/SetupClient.d.ts.map +1 -1
- package/out/src/SetupClient.js +8 -9
- package/out/src/SetupClient.js.map +1 -1
- package/out/src/SetupWallet.d.ts +6 -0
- package/out/src/SetupWallet.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.js.map +1 -1
- package/out/src/SimpleWalletManager.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.js +2 -5
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.d.ts +28 -10
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +146 -125
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +11 -1
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +7 -6
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.d.ts.map +1 -1
- package/out/src/WalletLogger.js +33 -30
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +22 -1
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +392 -267
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.d.ts.map +1 -1
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
- package/out/src/entropy/EntropyCollector.js +6 -8
- package/out/src/entropy/EntropyCollector.js.map +1 -1
- package/out/src/fundWalletP2PKH.js.map +1 -1
- package/out/src/index.all.js.map +1 -1
- package/out/src/index.client.js.map +1 -1
- package/out/src/index.mobile.d.ts +1 -0
- package/out/src/index.mobile.d.ts.map +1 -1
- package/out/src/index.mobile.js +1 -0
- package/out/src/index.mobile.js.map +1 -1
- package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -1
- package/out/src/mockchain/MockChainMigrations.js.map +1 -1
- package/out/src/mockchain/MockChainStorage.d.ts.map +1 -1
- package/out/src/mockchain/MockChainStorage.js.map +1 -1
- package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
- package/out/src/mockchain/MockChainTracker.js.map +1 -1
- package/out/src/mockchain/MockMiner.d.ts.map +1 -1
- package/out/src/mockchain/MockMiner.js.map +1 -1
- package/out/src/mockchain/MockServices.d.ts +4 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +69 -74
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/mockchain/merkleTree.d.ts.map +1 -1
- package/out/src/mockchain/merkleTree.js +51 -56
- package/out/src/mockchain/merkleTree.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +4 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +56 -54
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts +3 -0
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +65 -56
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/index.all.js.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +5 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +86 -77
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +4 -2
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +132 -131
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +3 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +3 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/monitor/tasks/TaskCleanupActionBatches.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCleanupActionBatches.js.map +1 -1
- package/out/src/monitor/tasks/TaskClock.d.ts +1 -1
- package/out/src/monitor/tasks/TaskClock.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskClock.js +1 -1
- package/out/src/monitor/tasks/TaskClock.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.d.ts +3 -1
- package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.js +3 -1
- package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts +4 -3
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +4 -3
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts +3 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.js +3 -1
- package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +3 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +3 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +3 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +3 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts +3 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js +3 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +3 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +3 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts +3 -0
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +53 -46
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.js +1 -1
- package/out/src/monitor/tasks/TaskSyncWhenIdle.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts +3 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +3 -1
- package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/out/src/monitor/tasks/WalletMonitorTask.d.ts.map +1 -1
- package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
- package/out/src/sdk/ActionBatch.interfaces.d.ts +56 -2
- 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 -3
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WERR_errors.d.ts +1 -1
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/out/src/sdk/WERR_errors.js +2 -2
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.d.ts +3 -0
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +53 -56
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +3 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +5 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/ServiceCollection.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +8 -2
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +86 -44
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.d.ts +7 -7
- package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.js +9 -9
- package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +4 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +42 -6
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +4 -4
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +45 -40
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +5 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +25 -18
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +3 -3
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +6 -7
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
- 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.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.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/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +0 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
- 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.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +12 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +110 -103
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +58 -48
- 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.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +55 -54
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +97 -72
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +5 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +145 -136
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +92 -68
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +43 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +76 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts +18 -0
- package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js +24 -0
- package/out/src/services/chaintracker/chaintracks/configureKnexChaintracks.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +2 -3
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +4 -22
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -4
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +12 -25
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -3
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +4 -22
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +3 -15
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +3 -15
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +3 -15
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +64 -61
- 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.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +4 -3
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +8 -10
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +14 -24
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +1 -11
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +20 -49
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +4 -2
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +23 -14
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +1 -14
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/networkConfig.js.map +1 -1
- package/out/src/services/providers/ARC.d.ts +4 -0
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +96 -83
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +4 -0
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +118 -92
- package/out/src/services/providers/Arcade.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +107 -86
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +19 -6
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/exchangeRates.js +1 -1
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
- package/out/src/signer/WalletSigner.d.ts.map +1 -1
- package/out/src/signer/WalletSigner.js.map +1 -1
- 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 +68 -35
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +217 -41
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +11 -0
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -0
- package/out/src/signer/actionBatch/actionBatchBootstrap.js +38 -0
- package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -0
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +95 -106
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.d.ts +3 -7
- package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.js +14 -57
- package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +47 -20
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +4 -4
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/out/src/signer/methods/resultBeef.js.map +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +29 -4
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.d.ts +17 -0
- package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -0
- package/out/src/signer/methods/verifyUnlockScripts.js +137 -0
- package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -0
- package/out/src/storage/StorageIdb.d.ts +5 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +80 -27
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +10 -1
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +118 -9
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +41 -13
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +241 -158
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +13 -5
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +3 -0
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js.map +1 -1
- package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +2 -0
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +25 -6
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +79 -0
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +47 -16
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/adminServer/adminUi.js.map +1 -1
- package/out/src/storage/idbHelpers.js.map +1 -1
- package/out/src/storage/index.all.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js +48 -71
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +29 -27
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/actionBatch.d.ts +2 -1
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatch.js +143 -50
- package/out/src/storage/methods/actionBatch.js.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.d.ts +6 -3
- package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.js +77 -14
- package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.d.ts +6 -4
- package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.js +261 -155
- package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
- package/out/src/storage/methods/actionPlanning.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +0 -21
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +43 -51
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +57 -38
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +2 -2
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +66 -38
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +48 -42
- 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 +8 -6
- package/out/src/storage/methods/getSyncChunk.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +145 -121
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +1 -1
- package/out/src/storage/methods/listActionsKnex.js.map +1 -1
- package/out/src/storage/methods/listCertificates.d.ts +1 -1
- package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
- package/out/src/storage/methods/listCertificates.js +1 -1
- package/out/src/storage/methods/listCertificates.js.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts +1 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.js +133 -152
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js +213 -254
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/managedChange.d.ts +3 -3
- package/out/src/storage/methods/managedChange.d.ts.map +1 -1
- package/out/src/storage/methods/managedChange.js +1 -2
- package/out/src/storage/methods/managedChange.js.map +1 -1
- package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
- package/out/src/storage/methods/offsetKey.js +0 -1
- package/out/src/storage/methods/offsetKey.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts +2 -0
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +8 -8
- 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 +157 -179
- package/out/src/storage/methods/purgeData.js.map +1 -1
- package/out/src/storage/methods/purgeDataIdb.d.ts +1 -1
- package/out/src/storage/methods/purgeDataIdb.d.ts.map +1 -1
- package/out/src/storage/methods/purgeDataIdb.js +1 -1
- package/out/src/storage/methods/purgeDataIdb.js.map +1 -1
- package/out/src/storage/methods/reviewStatus.js +6 -6
- package/out/src/storage/methods/reviewStatus.js.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
- package/out/src/storage/methods/utils.Buffer.js.map +1 -1
- package/out/src/storage/methods/utils.js.map +1 -1
- package/out/src/storage/portable/index.js +2 -2
- package/out/src/storage/portable/index.js.map +1 -1
- package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
- package/out/src/storage/remoting/BinaryJson.js +84 -38
- package/out/src/storage/remoting/BinaryJson.js.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
- package/out/src/storage/remoting/RateLimitPolicy.d.ts +10 -0
- package/out/src/storage/remoting/RateLimitPolicy.d.ts.map +1 -0
- package/out/src/storage/remoting/RateLimitPolicy.js +37 -0
- package/out/src/storage/remoting/RateLimitPolicy.js.map +1 -0
- package/out/src/storage/remoting/StorageClient.d.ts +2 -0
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +82 -50
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +15 -5
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +61 -3
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +34 -22
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +52 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +340 -201
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/edgePolicy.d.ts +57 -0
- package/out/src/storage/remoting/edgePolicy.d.ts.map +1 -0
- package/out/src/storage/remoting/edgePolicy.js +387 -0
- package/out/src/storage/remoting/edgePolicy.js.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
- package/out/src/storage/remoting/entityValidationHelpers.js +22 -5
- package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +12 -0
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/entities/EntityBase.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityBase.js.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificate.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificate.js.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityCertificateField.js.map +1 -1
- package/out/src/storage/schema/entities/EntityCommission.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityCommission.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- 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.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTag.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -0
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +46 -36
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +2 -2
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +12 -10
- package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +25 -34
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabel.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTxLabelMap.js.map +1 -1
- package/out/src/storage/schema/entities/EntityUser.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityUser.js.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.d.ts.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.js +9 -14
- package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
- package/out/src/storage/schema/tables/TableActionBatch.d.ts +3 -1
- package/out/src/storage/schema/tables/TableActionBatch.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -1
- package/out/src/storage/storageProviderHelpers.js.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts +3 -0
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +30 -16
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/Format.d.ts.map +1 -1
- package/out/src/utility/Format.js +2 -2
- package/out/src/utility/Format.js.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
- package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
- package/out/src/utility/actionBatchDigest.js +41 -3
- package/out/src/utility/actionBatchDigest.js.map +1 -1
- package/out/src/utility/actionBatchPack.d.ts +16 -0
- package/out/src/utility/actionBatchPack.d.ts.map +1 -0
- package/out/src/utility/actionBatchPack.js +220 -0
- package/out/src/utility/actionBatchPack.js.map +1 -0
- package/out/src/utility/aggregateResults.d.ts.map +1 -1
- package/out/src/utility/aggregateResults.js.map +1 -1
- package/out/src/utility/beefForTxids.js.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.js +26 -30
- package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
- package/out/src/utility/formatUnknown.d.ts +6 -0
- package/out/src/utility/formatUnknown.d.ts.map +1 -0
- package/out/src/utility/formatUnknown.js +39 -0
- package/out/src/utility/formatUnknown.js.map +1 -0
- package/out/src/utility/hashWasm.d.ts +5 -0
- package/out/src/utility/hashWasm.d.ts.map +1 -0
- package/out/src/utility/hashWasm.js +15 -0
- package/out/src/utility/hashWasm.js.map +1 -0
- package/out/src/utility/identityUtils.d.ts.map +1 -1
- package/out/src/utility/identityUtils.js +2 -4
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.js +1 -1
- package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
- package/out/src/utility/stampLog.d.ts.map +1 -1
- package/out/src/utility/stampLog.js +49 -42
- package/out/src/utility/stampLog.js.map +1 -1
- package/out/src/utility/traceContext.d.ts +13 -0
- package/out/src/utility/traceContext.d.ts.map +1 -0
- package/out/src/utility/traceContext.js +34 -0
- package/out/src/utility/traceContext.js.map +1 -0
- package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
- package/out/src/utility/tscProofToMerklePath.js +1 -1
- package/out/src/utility/tscProofToMerklePath.js.map +1 -1
- package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts +2 -2
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +8 -4
- 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 +1 -2
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +1 -1
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/WABTransport.d.ts +33 -5
- package/out/src/wab-client/WABTransport.d.ts.map +1 -1
- package/out/src/wab-client/WABTransport.js +240 -120
- package/out/src/wab-client/WABTransport.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +1 -1
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
- package/package.json +57 -21
- package/license.md +0 -28
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,49 @@ attention to changes that materially alter behavior or extend functionality.
|
|
|
6
6
|
|
|
7
7
|
## wallet-toolbox (unreleased)
|
|
8
8
|
|
|
9
|
+
- Point Wallet Toolbox contributors and AI agents to the canonical stack-level
|
|
10
|
+
contribution and quality policy; keep client and mobile candidate versions
|
|
11
|
+
in release lockstep without changing runtime behavior.
|
|
12
|
+
- Harden storage, action-batch, remoting, WAB, authentication, chaintracker,
|
|
13
|
+
and monitor implementation paths while preserving persisted schemas,
|
|
14
|
+
positional call compatibility, and public wallet/storage contracts.
|
|
15
|
+
- Refresh compatible rate-limit, MySQL, and React Native build dependencies;
|
|
16
|
+
consolidate entropy, Merkle-path, and action-batch iteration without
|
|
17
|
+
changing persisted data, generated paths, or public wallet contracts.
|
|
18
|
+
- Remove generated SQLite test databases before and after every Jest run so
|
|
19
|
+
repeated local validation cannot silently consume unbounded disk space.
|
|
20
|
+
- Ship the Express declaration dependency required by the public storage
|
|
21
|
+
server, edge-policy, and rate-limit declarations. Validate authenticated
|
|
22
|
+
storage identities explicitly and normalize multi-value Express 5 headers
|
|
23
|
+
instead of relying on implicit request augmentation or scalar headers.
|
|
24
|
+
- Add capability-negotiated action-batch manifest format 2 without changing
|
|
25
|
+
BRC-100. It derives source/output scripts from the authenticated transaction
|
|
26
|
+
graph, retains only the external proof frontier, bulk-loads shared storage
|
|
27
|
+
rows, and commits an already prepared manifest by semantic digest. Version-1
|
|
28
|
+
providers and clients retain their existing behavior.
|
|
29
|
+
- Add authenticated `ABP1` multi-blob uploads with bounded gzip/Brotli/identity
|
|
30
|
+
negotiation, decompression limits, prepared-manifest authorization, per-item
|
|
31
|
+
content verification, bounded concurrency, and one-transaction bulk storage.
|
|
32
|
+
The physical request limit chunks unbounded logical transactions; it is not
|
|
33
|
+
a script or consensus limit.
|
|
34
|
+
- Add optional script-verifier injection to Wallet, setup helpers, and local
|
|
35
|
+
storage providers. Internal checks use explicit consensus context, distinguish
|
|
36
|
+
resource exhaustion from invalid scripts, and continue verifying resolvable
|
|
37
|
+
inputs when another source transaction is intentionally omitted.
|
|
38
|
+
- Retain typed bytes through action-batch planning, hashing, validation, and
|
|
39
|
+
chunk assembly; preload external inputs and shared metadata once per atomic
|
|
40
|
+
manifest; and convert Atomic BEEF only at the historical public `number[]`
|
|
41
|
+
boundary without changing BRC-100 or storage protocol contracts.
|
|
42
|
+
- Make StorageServer, AdminServer, and the reusable ChaintracksService
|
|
43
|
+
credential-free public-CORS compatible by default, with opt-in exact origin
|
|
44
|
+
lists and configurable CSP/browser response headers. Add bounded parsers,
|
|
45
|
+
in-flight work and Node connection limits, stable non-sensitive errors, and
|
|
46
|
+
metadata-only request logging. Storage RPC work remains protected by
|
|
47
|
+
BRC-103 identity, per-IP/per-identity limits, method allowlisting, and
|
|
48
|
+
optional payment policy.
|
|
49
|
+
- Bound StorageServer work per source IP before BRC-103 authentication and per
|
|
50
|
+
identity before payment/RPC handling. Both stages support shared stores, and
|
|
51
|
+
proxy trust now requires an explicit hop/subnet/predicate configuration.
|
|
9
52
|
- Harden CWI/WAB account continuity so overlay failures, malformed or ambiguous
|
|
10
53
|
UMP results, and snapshot-load failures cannot silently enter new-user
|
|
11
54
|
onboarding. Add an expiring WAB auth session, legacy-compatible WAB account
|
package/LICENSE.txt
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
Open BSV License Version 6 – granted by BSV Association, Alpenstrasse 15, 6300
|
|
2
|
+
Zug, Switzerland (CHE-427.008.338) ("Licensor"), to you as a user (henceforth
|
|
3
|
+
"You", "User" or "Licensee").
|
|
4
|
+
|
|
5
|
+
For the purposes of this license, the definitions below have the following
|
|
6
|
+
meanings:
|
|
7
|
+
|
|
8
|
+
"Bitcoin Protocol" means the protocol implementation, cryptographic rules,
|
|
9
|
+
network protocols, and consensus mechanisms in the Bitcoin White Paper as
|
|
10
|
+
described here https://protocol.bsvblockchain.org.
|
|
11
|
+
|
|
12
|
+
"Bitcoin White Paper" means the paper entitled 'Bitcoin: A Peer-to-Peer
|
|
13
|
+
Electronic Cash System' published by 'Satoshi Nakamoto' in October 2008.
|
|
14
|
+
|
|
15
|
+
"BSV Blockchain" means:
|
|
16
|
+
|
|
17
|
+
(a) the Bitcoin blockchain containing block height #556767 with the hash
|
|
18
|
+
"000000000000000001d956714215d96ffc00e0afda4cd0a96c96f8d802b1662b" and
|
|
19
|
+
that contains the longest honest persistent chain of blocks which has been
|
|
20
|
+
produced in a manner which is consistent with the rules set forth in the
|
|
21
|
+
Network Access Rules; and
|
|
22
|
+
(b) the test blockchains that contain the longest honest persistent chains of
|
|
23
|
+
blocks which has been produced in a manner which is consistent with the
|
|
24
|
+
rules set forth in the Network Access Rules.
|
|
25
|
+
|
|
26
|
+
"Network Access Rules" or "Rules" means the set of rules regulating the
|
|
27
|
+
relationship between BSV Association and the nodes on BSV based on the Bitcoin
|
|
28
|
+
Protocol rules and those set out in the Bitcoin White Paper, and available here
|
|
29
|
+
https://bsvblockchain.org/network-access-rules.
|
|
30
|
+
|
|
31
|
+
"Software" means the software the subject of this license, including any/all
|
|
32
|
+
intellectual property rights therein and associated documentation files.
|
|
33
|
+
|
|
34
|
+
BSV Association grants permission, free of charge and on a non-exclusive basis
|
|
35
|
+
to any person obtaining a copy of the Software to deal in the Software, including
|
|
36
|
+
without limitation the rights to use, copy, modify, merge, publish, distribute,
|
|
37
|
+
sublicense, and/or sell copies of the Software, and to permit persons to whom the
|
|
38
|
+
Software is furnished to do so, subject to and conditioned upon the following
|
|
39
|
+
conditions:
|
|
40
|
+
|
|
41
|
+
1 - The text "© BSV Association", and this license shall be included in all
|
|
42
|
+
copies or substantial portions of the Software.
|
|
43
|
+
|
|
44
|
+
2 - The Software, and any software that is derived from the Software or parts
|
|
45
|
+
thereof, may only be used exclusively on the BSV Blockchain.
|
|
46
|
+
|
|
47
|
+
For the avoidance of doubt, this license is granted subject to and conditioned
|
|
48
|
+
upon your compliance with these terms only and is limited to uses on the BSV
|
|
49
|
+
Blockchain. Any exercise of rights not compliant with these terms including
|
|
50
|
+
use not for the BSV Blockchain is deemed outside the scope of the license.
|
|
51
|
+
|
|
52
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
53
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES REGARDING ENTITLEMENT,
|
|
54
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
|
|
55
|
+
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS THEREOF BE LIABLE FOR ANY CLAIM,
|
|
56
|
+
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
57
|
+
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
58
|
+
DEALINGS IN THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -14,17 +14,17 @@ BSV Desktop and BSV Browser are the BSV Association reference wallet application
|
|
|
14
14
|
|
|
15
15
|
### What's Inside
|
|
16
16
|
|
|
17
|
-
| Module
|
|
18
|
-
|
|
19
|
-
| **Wallet**
|
|
20
|
-
| **Storage**
|
|
21
|
-
| **Services**
|
|
22
|
-
| **Monitor**
|
|
23
|
-
| **Signer**
|
|
24
|
-
| **Key Management** | `PrivilegedKeyManager` for secure key storage with Shamir secret sharing and obfuscation; protocol-based key derivation per BRC-42/43
|
|
25
|
-
| **Permissions**
|
|
26
|
-
| **MockChain**
|
|
27
|
-
| **Entropy**
|
|
17
|
+
| Module | Description |
|
|
18
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
19
|
+
| **Wallet** | Full BRC-100 wallet — action creation, signing, certificate management, identity discovery, output tracking |
|
|
20
|
+
| **Storage** | Pluggable persistence with three backends: **SQLite/MySQL** (via Knex), **IndexedDB** (browser/mobile), and **remote** (client/server over HTTP) |
|
|
21
|
+
| **Services** | Network layer — ARC transaction broadcasting, chain tracking (Chaintracks), merkle proof verification, UTXO lookups via WhatsOnChain |
|
|
22
|
+
| **Monitor** | Background daemon that watches pending transactions, rebroadcasts failures, handles chain reorganizations, and manages proof acquisition |
|
|
23
|
+
| **Signer** | `WalletSigner` bridges any BRC-100 wallet to the SDK's `Transaction` signing interface |
|
|
24
|
+
| **Key Management** | `PrivilegedKeyManager` for secure key storage with Shamir secret sharing and obfuscation; protocol-based key derivation per BRC-42/43 |
|
|
25
|
+
| **Permissions** | `WalletPermissionsManager` for fine-grained per-app, per-protocol permission control with grouped approval flows |
|
|
26
|
+
| **MockChain** | In-memory blockchain for testing — mock mining, UTXO tracking, and merkle proof generation without a network |
|
|
27
|
+
| **Entropy** | `EntropyCollector` gathers mouse/touch entropy for high-quality randomness in browser environments |
|
|
28
28
|
|
|
29
29
|
### Packages
|
|
30
30
|
|
|
@@ -63,11 +63,13 @@ const wallet = await SetupWallet({
|
|
|
63
63
|
// Create a transaction
|
|
64
64
|
const result = await wallet.createAction({
|
|
65
65
|
description: 'Send payment',
|
|
66
|
-
outputs: [
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
outputs: [
|
|
67
|
+
{
|
|
68
|
+
lockingScript: '76a914...88ac',
|
|
69
|
+
satoshis: 1000,
|
|
70
|
+
outputDescription: 'payment'
|
|
71
|
+
}
|
|
72
|
+
]
|
|
71
73
|
})
|
|
72
74
|
```
|
|
73
75
|
|
|
@@ -79,6 +81,10 @@ See [Managed change, sweeping, and recovery](./docs/managed-change-policy.md)
|
|
|
79
81
|
for the default-basket invariant, automatic funding policy, and supported
|
|
80
82
|
`internalizeAction` repair paths.
|
|
81
83
|
|
|
84
|
+
See [In-memory action batch planning](./docs/action-batch-planning.md) for
|
|
85
|
+
capability-negotiated `noSend` planning, compact manifests, compressed binary
|
|
86
|
+
pack transport, atomic commit, compatibility behavior, and retained benchmarks.
|
|
87
|
+
|
|
82
88
|
The codebase has detailed JSDoc annotations throughout — these will surface inline in editors like VS Code.
|
|
83
89
|
|
|
84
90
|
### Horizontal Storage scaling
|
|
@@ -88,11 +94,7 @@ running multiple processes or replicas behind a non-sticky load balancer, use
|
|
|
88
94
|
the shared Knex implementation against the same migrated wallet database:
|
|
89
95
|
|
|
90
96
|
```typescript
|
|
91
|
-
import {
|
|
92
|
-
KnexSessionManager,
|
|
93
|
-
StorageKnex,
|
|
94
|
-
StorageServer
|
|
95
|
-
} from '@bsv/wallet-toolbox'
|
|
97
|
+
import { KnexSessionManager, StorageKnex, StorageServer } from '@bsv/wallet-toolbox'
|
|
96
98
|
|
|
97
99
|
const storage = new StorageKnex(storageOptions)
|
|
98
100
|
await storage.migrate(storageName, storageIdentityKey)
|
|
@@ -107,11 +109,36 @@ const server = new StorageServer(storage, {
|
|
|
107
109
|
wallet,
|
|
108
110
|
monetize: false,
|
|
109
111
|
sessionManager,
|
|
112
|
+
// Optional: exact trusted proxy chain. Omit for direct-socket IPs.
|
|
113
|
+
trustProxy: 1,
|
|
114
|
+
// Per-IP before auth (default 300/minute).
|
|
115
|
+
preAuthRateLimit: { limit: 300, windowMs: 60_000 },
|
|
116
|
+
// Per-identity before payment/RPC work (default 1,000/minute).
|
|
117
|
+
rateLimit: { limit: 1_000, windowMs: 60_000 },
|
|
118
|
+
// Public CORS is the default. Supply exact origins to opt into a whitelist.
|
|
119
|
+
allowedOrigins: process.env.WALLET_ALLOWED_ORIGINS?.split(','),
|
|
120
|
+
// Optional CSP/security-header overrides for an embedding deployment.
|
|
121
|
+
securityHeaders: {
|
|
122
|
+
contentSecurityPolicy: "default-src 'none'"
|
|
123
|
+
},
|
|
110
124
|
logRpcRequests: false
|
|
111
125
|
})
|
|
112
126
|
server.start()
|
|
113
127
|
```
|
|
114
128
|
|
|
129
|
+
Both stages return HTTP 429 with `ERR_RATE_LIMITED`. For multi-process or
|
|
130
|
+
multi-replica deployments, configure a shared `express-rate-limit` store in
|
|
131
|
+
both options so limits are aggregate rather than per process. Never use a
|
|
132
|
+
permissive trust-all proxy setting; use a known hop count, subnet, or trust
|
|
133
|
+
predicate.
|
|
134
|
+
|
|
135
|
+
The storage service is intentionally reachable by browser apps on previously
|
|
136
|
+
unknown domains. With no origin configuration it uses public wildcard CORS
|
|
137
|
+
without cookie credentials. Passing `allowedOrigins`, setting
|
|
138
|
+
`WALLET_STORAGE_CORS_MODE=allowlist`, or setting the mode to `disabled`
|
|
139
|
+
provides opt-in restriction. BRC-103 authentication and optional payment
|
|
140
|
+
policy are unchanged by CORS mode.
|
|
141
|
+
|
|
115
142
|
Every replica must share the same database and session TTL. Run
|
|
116
143
|
`sessionManager.pruneExpiredSessions()` from one scheduled maintenance worker;
|
|
117
144
|
reads exclude expired rows even before they are physically pruned. Once every
|
|
@@ -128,36 +155,71 @@ does not apply schema changes.
|
|
|
128
155
|
git clone https://github.com/bsv-blockchain/ts-stack.git
|
|
129
156
|
cd ts-stack
|
|
130
157
|
pnpm install
|
|
131
|
-
pnpm --filter @bsv/wallet-toolbox
|
|
158
|
+
pnpm --filter @bsv/wallet-toolbox format:check
|
|
159
|
+
pnpm --filter @bsv/wallet-toolbox lint
|
|
160
|
+
pnpm --filter @bsv/wallet-toolbox typecheck
|
|
132
161
|
pnpm --filter @bsv/wallet-toolbox test
|
|
162
|
+
pnpm --filter @bsv/wallet-toolbox test:coverage
|
|
163
|
+
pnpm --filter @bsv/wallet-toolbox pack:check
|
|
164
|
+
pnpm --filter @bsv/wallet-toolbox-client test:browser
|
|
165
|
+
pnpm --filter @bsv/wallet-toolbox-mobile test:mobile
|
|
133
166
|
```
|
|
134
167
|
|
|
135
|
-
Tests use Jest.
|
|
168
|
+
Tests use Jest. The default and coverage suites are deterministic and must not
|
|
169
|
+
depend on live third-party services. Files named `*.man.test.ts` are explicit
|
|
170
|
+
manual/integration tests excluded from CI because they require credentials,
|
|
171
|
+
network access, or long runtimes. Files named `*.live.test.ts` are public-network
|
|
172
|
+
checks, also excluded from deterministic PR coverage. Run exactly one governed
|
|
173
|
+
suite with `test:manual -- <path>` or `test:live -- <path>` after reviewing
|
|
174
|
+
`governance/test-quality/policy.json`; never batch-run operator suites. CI
|
|
175
|
+
merges four Wallet Toolbox coverage shards
|
|
176
|
+
for reporting; the complete local `test:coverage` run currently measures
|
|
177
|
+
69.12% statements, 59.09% branches, 72.83% functions, and 71.06% lines.
|
|
178
|
+
|
|
179
|
+
Operational repair, migration, export, and long-running service procedures are
|
|
180
|
+
not tests. They live under [`operator/`](./operator/README.md), produce an exact
|
|
181
|
+
dry-run plan by default, and require explicit confirmation before they write
|
|
182
|
+
state or artifacts. The exact manual-suite disposition inventory in
|
|
183
|
+
`governance/test-quality/wallet-toolbox-manual-suites.json` prevents new
|
|
184
|
+
operator procedures, fixture generators, diagnostics, or examples from being
|
|
185
|
+
silently added as Jest suites.
|
|
186
|
+
|
|
187
|
+
Reusable source recipes live under [`examples/`](./examples/README.md). Manual
|
|
188
|
+
integration suites may validate an example against an explicitly configured
|
|
189
|
+
environment, but the example implementation itself does not live inside a test
|
|
190
|
+
body.
|
|
191
|
+
|
|
192
|
+
`pack:check` installs the exact CommonJS tarball and verifies its public API.
|
|
193
|
+
The browser and mobile commands build platform-specific packages and reject
|
|
194
|
+
Node-only dependency leakage. Publishing and version changes are owned by the
|
|
195
|
+
repository release workflow.
|
|
136
196
|
|
|
137
197
|
## Contributing
|
|
138
198
|
|
|
139
199
|
We welcome bug reports, feature requests, and pull requests.
|
|
140
200
|
|
|
141
201
|
1. Fork and clone the repository
|
|
142
|
-
2. `
|
|
202
|
+
2. `pnpm install` at the `ts-stack` repository root
|
|
143
203
|
3. Create a feature branch
|
|
144
|
-
4. Make your changes and
|
|
204
|
+
4. Make your changes and run the relevant package checks above
|
|
145
205
|
5. Open a pull request
|
|
146
206
|
|
|
147
|
-
See
|
|
207
|
+
See the
|
|
208
|
+
[repository contribution guidelines](https://github.com/bsv-blockchain/ts-stack/blob/main/CONTRIBUTING.md)
|
|
209
|
+
for the full stack-wide policy.
|
|
148
210
|
|
|
149
211
|
## Contributors
|
|
150
212
|
|
|
151
|
-
|
|
|
152
|
-
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
213
|
+
| | Name | GitHub | Role |
|
|
214
|
+
| --- | --------------------- | ------------------------------------------------------ | -------------------------- |
|
|
215
|
+
| | Tone Engel | [@tonesnotes](https://github.com/tonesnotes) | Lead developer, maintainer |
|
|
216
|
+
| | Darren Kellenschwiler | [@sirdeggen](https://github.com/sirdeggen) | Core contributor |
|
|
217
|
+
| | Brayden Langley | [@BraydenLangley](https://github.com/BraydenLangley) | Core contributor |
|
|
218
|
+
| | Ty Everett | [@ty-everett](https://github.com/ty-everett) | Core contributor, reviewer |
|
|
219
|
+
| | Jackie Lu | [@jackielu3](https://github.com/jackielu3) | Contributor |
|
|
220
|
+
| | David Case | [@shruggr](https://github.com/shruggr) | Contributor |
|
|
221
|
+
| | Stephen Thomson | [@Stephen-Thomson](https://github.com/Stephen-Thomson) | Contributor |
|
|
222
|
+
| | Chance Barimbao | [@ChanceBarimbao](https://github.com/ChanceBarimbao) | Contributor |
|
|
161
223
|
|
|
162
224
|
## License
|
|
163
225
|
|
|
@@ -13,6 +13,16 @@ mode, the wallet asks its active storage provider for capabilities once. A provi
|
|
|
13
13
|
advertising `actionBatch: { version: 1, ...limits }` enables local planning. A
|
|
14
14
|
provider without that capability uses the existing persistence flow before any
|
|
15
15
|
workspace begins. A workspace never mixes storage modes or changes active provider.
|
|
16
|
+
Large first actions use compact bootstrap only when the provider also advertises
|
|
17
|
+
`compactBegin: true`; this keeps new clients compatible with older version-1
|
|
18
|
+
servers during a rolling deployment.
|
|
19
|
+
|
|
20
|
+
The original manifest and one-blob-per-request transport remain version 1. A
|
|
21
|
+
provider can independently advertise the additive `manifestVersion: 2`,
|
|
22
|
+
`commitByDigest`, and `packedUploads` capabilities. A new client uses each
|
|
23
|
+
optimization only when its provider advertises it. Old clients ignore the extra
|
|
24
|
+
fields, new clients retain the version-1 path against old providers, and the two
|
|
25
|
+
new storage methods are optional for third-party `WalletStorage` implementations.
|
|
16
26
|
|
|
17
27
|
The capability and its methods are Wallet Toolbox storage extensions. They do not
|
|
18
28
|
extend `WalletInterface`, `CreateActionArgs`, `SignActionArgs`, `noSend`,
|
|
@@ -22,10 +32,15 @@ extend `WalletInterface`, `CreateActionArgs`, `SignActionArgs`, `noSend`,
|
|
|
22
32
|
|
|
23
33
|
1. The first `noSend` action begins a workspace, reserves the canonical funding
|
|
24
34
|
inputs needed for that action plus limited headroom, and returns their proof
|
|
25
|
-
data in one storage call.
|
|
35
|
+
data in one storage call. Format 2 sends only planning metadata and exact
|
|
36
|
+
output-script lengths at bootstrap. Signed transactions and the external
|
|
37
|
+
proof frontier follow through the binary commit path, so a hexadecimal
|
|
38
|
+
script is not duplicated into a large JSON request.
|
|
26
39
|
2. The wallet plans, signs, validates, and indexes subsequent actions locally. A
|
|
27
|
-
shared BEEF graph
|
|
28
|
-
|
|
40
|
+
shared BEEF graph avoids retaining repeated ancestry. The signed transaction
|
|
41
|
+
is the canonical source for output scripts; format 2 carries script digests
|
|
42
|
+
for validation, rather than carrying the same scripts as transaction bytes,
|
|
43
|
+
plan strings, metadata strings, and standalone blobs.
|
|
29
44
|
3. If confirmed funding runs low, the wallet extends its reservation pool using
|
|
30
45
|
an EWMA estimate and geometrically increasing runway. Forwarded staged change
|
|
31
46
|
needs no reservation or extension.
|
|
@@ -77,12 +92,81 @@ outputs, labels, tags, maps, and proof requests are written under one database
|
|
|
77
92
|
transaction together with reservation consumption and release. Batch ID plus a
|
|
78
93
|
semantic manifest digest makes persistence retries idempotent.
|
|
79
94
|
|
|
80
|
-
Content-addressed raw transactions
|
|
95
|
+
Content-addressed raw transactions and the external dependency BEEF travel
|
|
81
96
|
inline for batches up to the provider's inline limit (4 MiB by default). Larger
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
97
|
+
format-2 workspaces prepare a compact digest-only manifest and upload only the
|
|
98
|
+
content-addressed physical blobs the server reports missing. Multiple blobs
|
|
99
|
+
share one `ABP1` binary pack, bounded by the provider's advertised request size
|
|
100
|
+
and item count. Packs use the first mutually supported `CompressionStream`
|
|
101
|
+
encoding (`gzip`, then optional Brotli) when it reduces bytes; otherwise they
|
|
102
|
+
use identity encoding.
|
|
103
|
+
|
|
104
|
+
The client sends no HTTP `Content-Encoding` header: a dedicated authenticated
|
|
105
|
+
pack-encoding header describes the exact request body seen by BRC-103. The
|
|
106
|
+
server bounds both compressed request bytes and decompressed pack bytes,
|
|
107
|
+
validates the frame, every SHA-256 digest, prepared-manifest authorization,
|
|
108
|
+
batch ownership, and hard lifetime, then inserts the pack in one storage
|
|
109
|
+
transaction. The final JSON-RPC call sends only the batch ID and semantic
|
|
110
|
+
manifest digest. The server commits the exact prepared manifest retained under
|
|
111
|
+
that digest.
|
|
112
|
+
|
|
113
|
+
Logical blobs are split at the provider's advertised limit (8 MiB by default),
|
|
114
|
+
deduplicated by digest, and uploaded with at most four concurrent requests. The
|
|
115
|
+
8 MiB value is a physical request target, not a logical transaction limit: one
|
|
116
|
+
transaction or dependency BEEF may span any number of chunks. There is no
|
|
117
|
+
consensus script-size limit in this path. Incomplete uploads remain scoped to
|
|
118
|
+
their authenticated batch and expire with it.
|
|
119
|
+
|
|
120
|
+
Allocation failure in a particular JavaScript host remains a local resource
|
|
121
|
+
failure. It is reported as an operation/runtime failure rather than evidence that
|
|
122
|
+
the transaction or script is consensus-invalid.
|
|
123
|
+
|
|
124
|
+
The planner, validator, digest pipeline, browser IndexedDB store, and chunk
|
|
125
|
+
assembler retain `Uint8Array` storage throughout this path. SQL adapters create
|
|
126
|
+
buffer views only at the driver boundary. Atomic commit also preloads blob rows,
|
|
127
|
+
external inputs, baskets, tags, and labels once per manifest instead of
|
|
128
|
+
repeating those lookups for every action. It stores only the external input
|
|
129
|
+
proof frontier for each persisted request and reuses the already validated
|
|
130
|
+
complete BEEF graph for immediate/delayed share preparation. The full graph is
|
|
131
|
+
still reconstructed and verified before persistence. These are storage
|
|
132
|
+
implementation details; BRC-100 arguments and results are unchanged.
|
|
133
|
+
|
|
134
|
+
Wallet and locally hosted storage construction can receive an optional
|
|
135
|
+
`scriptVerifier`. Batch and ordinary action checks pass explicit consensus
|
|
136
|
+
context and known source-output heights to that verifier. A provider with a
|
|
137
|
+
packed Spend lane verifies all selected staged inputs in one backend scheduling
|
|
138
|
+
pass, allowing a warm native/WASM implementation to handle large scripts without
|
|
139
|
+
changing the wallet contract. If no verifier is supplied, the SDK TypeScript
|
|
140
|
+
interpreter remains the default.
|
|
141
|
+
|
|
142
|
+
Verifier configuration is process- or page-local. A browser or local wallet
|
|
143
|
+
verifier accelerates checks performed by that wallet; it is not serialized over
|
|
144
|
+
BRC-100 or storage RPC. A remote storage process must create, preload, and inject
|
|
145
|
+
its own verifier into `StorageKnex` if server-side atomic-commit checks should use
|
|
146
|
+
the same backend. Backend initialization, ABI, or memory failures propagate as
|
|
147
|
+
operational failures and are never rewritten as invalid-script verdicts.
|
|
148
|
+
|
|
149
|
+
## Deployment behavior for large scripts
|
|
150
|
+
|
|
151
|
+
| Deployment | Before these changes | Current behavior |
|
|
152
|
+
| --- | --- | --- |
|
|
153
|
+
| Local Node wallet with Knex | TypeScript execution was the normal path; its default 32 MiB stack budget could turn local exhaustion into an invalid-action error. Repeated action persistence added storage round trips and row lookups. | A preloaded verifier can execute ordinary and batch checks in explicit consensus mode. Default JS execution has no arbitrary consensus stack cap. `noSend` chains plan in memory, bulk-load shared rows, and commit atomically. |
|
|
154
|
+
| Browser wallet with IndexedDB | Large byte values were commonly boxed or hex/string copied, and validation stayed on the TypeScript interpreter. | Browser VeriFast uses the same consensus context and typed-byte paths. IndexedDB stores packed blobs in one transaction and the wallet receives the configured verifier. Host quota or memory exhaustion remains a browser resource failure, not consensus invalidity. |
|
|
155
|
+
| Browser/Node wallet using remote Toolbox storage | The first large action and later commit values could encounter JSON/body limits; repeated scripts appeared in several JSON/manifest fields; every blob needed a request; and server verification could not be configured independently. | Compact bootstrap and format-2 manifests derive scripts from signed transactions. Manifest-authorized, compressed, multi-blob binary packs avoid JSON expansion and reduce request count. Digest-only commit makes the final request small. Client and server independently preload/inject verifiers, and server commit batches selected spends. |
|
|
156
|
+
|
|
157
|
+
For latency-sensitive startup, call `await verifier.preload()` before constructing
|
|
158
|
+
or first using the wallet. The default adaptive mode deliberately lets a cold
|
|
159
|
+
first call use the TypeScript interpreter while WASM warms in the background;
|
|
160
|
+
`mode: 'always'` instead waits for WASM. In a remote deployment, repeat that
|
|
161
|
+
startup step in both the client runtime and every storage-server process.
|
|
162
|
+
|
|
163
|
+
The remaining transport boundaries are resource and protocol facts rather than
|
|
164
|
+
consensus limits. Raw action-batch pack requests stay bounded and logical values
|
|
165
|
+
chunk around that bound. Cicada/Wallet Wire uses typed bytes and zero-copy frame
|
|
166
|
+
handoffs. Browser XDM uses structured clone. HTTP JSON and React Native retain
|
|
167
|
+
their existing BRC-100 encodings, so operators must configure infrastructure
|
|
168
|
+
request limits for ordinary non-batched calls or use action batching for
|
|
169
|
+
multi-megabyte transaction flows.
|
|
86
170
|
|
|
87
171
|
The remote server derives the batch user ID and active-storage state from the
|
|
88
172
|
BRC-103 authenticated identity for every management call and binary upload.
|
|
@@ -106,12 +190,31 @@ The retained benchmark is the performance regression gate:
|
|
|
106
190
|
pnpm --filter @bsv/wallet-toolbox bench:action-batch
|
|
107
191
|
```
|
|
108
192
|
|
|
193
|
+
On the same Apple Silicon host with Node.js v25.9.0, a representative cold
|
|
194
|
+
250-action, 1 KiB-script run reduced planning/signing/validation from
|
|
195
|
+
19,117.03 ms in legacy mode to 10,907.93 ms in batch mode (42.9%, or 1.75x).
|
|
196
|
+
Including atomic commit, total local time was 19,163.87 ms versus 11,462.13 ms
|
|
197
|
+
(40.2% lower), while storage calls fell from 501 to 2 and database transactions
|
|
198
|
+
from 252 to 3. At 100 ms storage RTT those calls represent 50,100 ms versus
|
|
199
|
+
200 ms of control-path latency, a 99.6% reduction.
|
|
200
|
+
|
|
201
|
+
A generic single 4 MiB zero-filled script took 1,258.13 ms through the legacy
|
|
202
|
+
path and 208.60 ms through format 2, including upload and atomic commit: 83.4%
|
|
203
|
+
less local time. Its instrumented requests fell from 13,982,465 bytes to 8,064
|
|
204
|
+
bytes. The one 4,195,234-byte logical pack compressed to 5,233 bytes and was
|
|
205
|
+
uploaded in one call. This synthetic compression ratio represents highly
|
|
206
|
+
repetitive data; incompressible data falls back to identity encoding without
|
|
207
|
+
expansion. Absolute times remain host- and database-dependent.
|
|
208
|
+
|
|
109
209
|
It records planning, signing and validation, storage RPCs, database transactions,
|
|
110
210
|
request bytes, commit and broadcast time, CPU, and incremental peak heap. Physical
|
|
111
211
|
SQLite runs compare 1, 10, 50, and 250 action chains at 1 KiB and exercise each
|
|
112
|
-
larger script size with a real action, including the 4 MiB upload path. Its
|
|
113
|
-
model covers dependent, independent, explicit-input, and two-step
|
|
114
|
-
at every action count; 1 KiB, 64 KiB, 1 MiB, and 4 MiB
|
|
115
|
-
250 ms storage RTT.
|
|
116
|
-
|
|
117
|
-
|
|
212
|
+
larger script size with a real action, including the 4 MiB upload path. Its
|
|
213
|
+
complete model covers dependent, independent, explicit-input, and two-step
|
|
214
|
+
signing workloads at every action count; 1 KiB, 64 KiB, 1 MiB, and 4 MiB
|
|
215
|
+
scripts; and 25, 100, and 250 ms storage RTT. The measured cases deliberately
|
|
216
|
+
include both many-small-action and few-large-action shapes so transport tuning
|
|
217
|
+
is not fitted to one contract or graph. Production rollout should additionally
|
|
218
|
+
track reservation conflicts, extensions, expiries, commit retries, pack
|
|
219
|
+
compression, upload deduplication, commit duration, and broadcaster review
|
|
220
|
+
outcomes by provider type.
|