@bsv/wallet-toolbox-mobile 2.1.24 → 2.1.26
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/out/src/CWIStyleWalletManager.d.ts +33 -7
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +281 -313
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/SimpleWalletManager.d.ts +12 -2
- package/out/src/SimpleWalletManager.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.js +46 -30
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.d.ts +1 -1
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +102 -100
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +1 -1
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +3 -3
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.d.ts.map +1 -1
- package/out/src/WalletLogger.js +16 -8
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +89 -18
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +656 -870
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.d.ts +2 -2
- package/out/src/WalletSettingsManager.d.ts.map +1 -1
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/mockchain/MockChainMigrations.d.ts +3 -3
- 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 +8 -8
- 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 +10 -10
- 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 +3 -3
- package/out/src/mockchain/MockMiner.js.map +1 -1
- package/out/src/mockchain/MockServices.d.ts +9 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +201 -243
- 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 +21 -12
- package/out/src/mockchain/merkleTree.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +17 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +63 -80
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -2
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +10 -23
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +2 -2
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +28 -16
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +1 -2
- package/out/src/monitor/tasks/TaskCheckNoSends.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 +0 -1
- package/out/src/monitor/tasks/TaskClock.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts +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 +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js +1 -1
- package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts +2 -2
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +7 -5
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts +1 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js +2 -2
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +10 -10
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +2 -2
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +4 -5
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +13 -15
- 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 +3 -1
- package/out/src/monitor/tasks/WalletMonitorTask.js.map +1 -1
- package/out/src/sdk/CertOpsWallet.d.ts +3 -3
- package/out/src/sdk/CertOpsWallet.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts +3 -3
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +32 -24
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/out/src/sdk/WERR_errors.js +5 -5
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.d.ts +1 -1
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +28 -20
- 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 +1 -3
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +19 -19
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +59 -59
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.d.ts +4 -4
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +3 -3
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/ServiceCollection.d.ts +6 -6
- package/out/src/services/ServiceCollection.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.js +6 -8
- 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 +190 -196
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +5 -5
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts +5 -3
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +20 -10
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +228 -221
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +9 -10
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.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 +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts +1 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +3 -3
- 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 +3 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.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 +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.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 +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +6 -39
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +8 -6
- 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 +9 -16
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +34 -22
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +31 -30
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +11 -10
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +247 -227
- 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 +8 -7
- 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 +35 -25
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +5 -5
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +13 -11
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +0 -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/HeightRange.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +21 -13
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +2 -2
- 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 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +28 -24
- 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.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +9 -10
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +3 -3
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +7 -14
- 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 +1 -1
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +17 -17
- 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 +2 -0
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +109 -233
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
- package/out/src/services/providers/exchangeRates.js +3 -3
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts +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 +68 -0
- package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -0
- package/out/src/services/providers/whatsOnChainHelpers.js +147 -0
- package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -0
- package/out/src/signer/WalletSigner.d.ts.map +1 -1
- package/out/src/signer/WalletSigner.js.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js +1 -1
- 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 +21 -13
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/completeSignedTransaction.js +20 -21
- 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 +8 -7
- 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 +8 -6
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.js +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +8 -10
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +10 -0
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +171 -197
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +14 -13
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +0 -1
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +32 -35
- 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 +4 -4
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +3 -0
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +95 -84
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/index.mobile.d.ts +3 -0
- package/out/src/storage/index.mobile.d.ts.map +1 -1
- package/out/src/storage/index.mobile.js +3 -0
- package/out/src/storage/index.mobile.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts +6 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js +28 -2
- 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 +8 -11
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +83 -0
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +224 -61
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +230 -270
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +99 -80
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +15 -13
- 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 +4 -3
- package/out/src/storage/methods/getSyncChunk.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +41 -51
- package/out/src/storage/methods/internalizeAction.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 +7 -7
- package/out/src/storage/methods/listCertificates.js.map +1 -1
- package/out/src/storage/methods/offsetKey.d.ts +1 -1
- package/out/src/storage/methods/offsetKey.d.ts.map +1 -1
- package/out/src/storage/methods/offsetKey.js +3 -5
- package/out/src/storage/methods/offsetKey.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts +0 -11
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +90 -83
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/utils.d.ts.map +1 -1
- package/out/src/storage/methods/utils.js +7 -1
- package/out/src/storage/methods/utils.js.map +1 -1
- package/out/src/storage/portable/index.d.ts +55 -0
- package/out/src/storage/portable/index.d.ts.map +1 -0
- package/out/src/storage/portable/index.js +830 -0
- package/out/src/storage/portable/index.js.map +1 -0
- package/out/src/storage/remoting/StorageClient.d.ts +4 -270
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +16 -423
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +289 -0
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -0
- package/out/src/storage/remoting/StorageClientBase.js +375 -0
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -0
- package/out/src/storage/remoting/StorageMobile.d.ts +7 -275
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +12 -421
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/entityValidationHelpers.d.ts +29 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.js +91 -0
- package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -0
- 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 +5 -4
- 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 +5 -7
- 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 +6 -8
- 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 +21 -24
- 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 +6 -6
- 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 +2 -2
- 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 +4 -6
- package/out/src/storage/schema/entities/EntityOutputTagMap.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +3 -3
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +22 -23
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts +9 -0
- package/out/src/storage/schema/entities/EntityProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +116 -68
- 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 +19 -18
- 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 +25 -26
- 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 +2 -2
- 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 +4 -6
- 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 +3 -3
- 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 +6 -6
- package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts +2 -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 +3 -2
- package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutput.js +1 -1
- package/out/src/storage/schema/tables/TableOutput.js.map +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +24 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/tables/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/storageProviderHelpers.d.ts +34 -0
- package/out/src/storage/storageProviderHelpers.d.ts.map +1 -0
- package/out/src/storage/storageProviderHelpers.js +100 -0
- package/out/src/storage/storageProviderHelpers.js.map +1 -0
- package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.js +4 -2
- package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
- package/out/src/utility/aggregateResults.d.ts +1 -1
- package/out/src/utility/aggregateResults.d.ts.map +1 -1
- package/out/src/utility/aggregateResults.js +2 -2
- package/out/src/utility/aggregateResults.js.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.d.ts +2 -2
- package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.js +17 -10
- package/out/src/utility/brc114ActionTimeLabels.js.map +1 -1
- package/out/src/utility/identityUtils.d.ts.map +1 -1
- package/out/src/utility/identityUtils.js +6 -6
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/index.client.d.ts +1 -0
- package/out/src/utility/index.client.d.ts.map +1 -1
- package/out/src/utility/index.client.js +1 -0
- package/out/src/utility/index.client.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts +4 -4
- package/out/src/utility/parseTxScriptOffsets.d.ts.map +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 +6 -4
- package/out/src/utility/stampLog.js.map +1 -1
- 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.d.ts +1 -2
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +12 -12
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.d.ts +7 -3
- package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +3 -3
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/wab-client/WABClient.d.ts +3 -3
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +12 -12
- package/out/src/wab-client/WABClient.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 +3 -3
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
- package/out/tsconfig.mobile.tsbuildinfo +1 -1
- package/package.json +7 -6
- package/out/src/SetupClient.d.ts +0 -135
- package/out/src/SetupClient.d.ts.map +0 -1
- package/out/src/SetupClient.js +0 -226
- package/out/src/SetupClient.js.map +0 -1
- package/out/src/SetupWallet.d.ts +0 -103
- package/out/src/SetupWallet.d.ts.map +0 -1
- package/out/src/SetupWallet.js +0 -3
- package/out/src/SetupWallet.js.map +0 -1
- package/out/src/fundWalletP2PKH.d.ts +0 -48
- package/out/src/fundWalletP2PKH.d.ts.map +0 -1
- package/out/src/fundWalletP2PKH.js +0 -239
- package/out/src/fundWalletP2PKH.js.map +0 -1
- package/out/src/index.client.d.ts +0 -23
- package/out/src/index.client.d.ts.map +0 -1
- package/out/src/index.client.js +0 -62
- package/out/src/index.client.js.map +0 -1
- package/out/src/services/chaintracker/BHServiceClient.d.ts +0 -39
- package/out/src/services/chaintracker/BHServiceClient.d.ts.map +0 -1
- package/out/src/services/chaintracker/BHServiceClient.js +0 -174
- package/out/src/services/chaintracker/BHServiceClient.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +0 -5
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +0 -29
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +0 -13
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +0 -27
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/index.client.d.ts +0 -4
- package/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/index.client.js +0 -20
- package/out/src/services/chaintracker/chaintracks/index.client.js.map +0 -1
- package/out/src/services/chaintracker/index.client.d.ts +0 -4
- package/out/src/services/chaintracker/index.client.d.ts.map +0 -1
- package/out/src/services/chaintracker/index.client.js +0 -20
- package/out/src/services/chaintracker/index.client.js.map +0 -1
- package/out/src/storage/StorageIdb.d.ts +0 -218
- package/out/src/storage/StorageIdb.d.ts.map +0 -1
- package/out/src/storage/StorageIdb.js +0 -2389
- package/out/src/storage/StorageIdb.js.map +0 -1
- package/out/src/storage/index.client.d.ts +0 -8
- package/out/src/storage/index.client.d.ts.map +0 -1
- package/out/src/storage/index.client.js +0 -24
- package/out/src/storage/index.client.js.map +0 -1
- package/out/src/storage/methods/listActionsIdb.d.ts +0 -5
- package/out/src/storage/methods/listActionsIdb.d.ts.map +0 -1
- package/out/src/storage/methods/listActionsIdb.js +0 -169
- package/out/src/storage/methods/listActionsIdb.js.map +0 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts +0 -5
- package/out/src/storage/methods/listOutputsIdb.d.ts.map +0 -1
- package/out/src/storage/methods/listOutputsIdb.js +0 -182
- package/out/src/storage/methods/listOutputsIdb.js.map +0 -1
- package/out/src/storage/methods/purgeDataIdb.d.ts +0 -4
- package/out/src/storage/methods/purgeDataIdb.d.ts.map +0 -1
- package/out/src/storage/methods/purgeDataIdb.js +0 -9
- package/out/src/storage/methods/purgeDataIdb.js.map +0 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts +0 -20
- package/out/src/storage/methods/reviewStatusIdb.d.ts.map +0 -1
- package/out/src/storage/methods/reviewStatusIdb.js +0 -35
- package/out/src/storage/methods/reviewStatusIdb.js.map +0 -1
- package/out/src/storage/schema/StorageIdbSchema.d.ts +0 -133
- package/out/src/storage/schema/StorageIdbSchema.d.ts.map +0 -1
- package/out/src/storage/schema/StorageIdbSchema.js +0 -3
- package/out/src/storage/schema/StorageIdbSchema.js.map +0 -1
|
@@ -43,6 +43,23 @@ const MockChainStorage_1 = require("./MockChainStorage");
|
|
|
43
43
|
const MockChainTracker_1 = require("./MockChainTracker");
|
|
44
44
|
const MockMiner_1 = require("./MockMiner");
|
|
45
45
|
const merkleTree_1 = require("./merkleTree");
|
|
46
|
+
const mockFiatRatesByUsd = {
|
|
47
|
+
USD: 1,
|
|
48
|
+
EUR: 0.92,
|
|
49
|
+
GBP: 0.79,
|
|
50
|
+
JPY: 156.5,
|
|
51
|
+
CNY: 7.24,
|
|
52
|
+
INR: 83.42,
|
|
53
|
+
AUD: 1.51,
|
|
54
|
+
CAD: 1.37,
|
|
55
|
+
CHF: 0.9,
|
|
56
|
+
HKD: 7.81,
|
|
57
|
+
SGD: 1.35,
|
|
58
|
+
NZD: 1.64,
|
|
59
|
+
SEK: 10.52,
|
|
60
|
+
NOK: 10.74,
|
|
61
|
+
MXN: 16.68
|
|
62
|
+
};
|
|
46
63
|
class MockServices {
|
|
47
64
|
constructor(knex) {
|
|
48
65
|
this.knex = knex;
|
|
@@ -55,261 +72,197 @@ class MockServices {
|
|
|
55
72
|
await this.storage.migrate();
|
|
56
73
|
// Mine genesis block if chain is empty
|
|
57
74
|
const tip = await this.storage.getChainTip();
|
|
58
|
-
if (
|
|
75
|
+
if (tip == null) {
|
|
59
76
|
await this.miner.mineBlock(this.storage);
|
|
60
77
|
}
|
|
61
78
|
}
|
|
62
79
|
async mineBlock() {
|
|
63
|
-
return this.miner.mineBlock(this.storage);
|
|
80
|
+
return await this.miner.mineBlock(this.storage);
|
|
64
81
|
}
|
|
65
82
|
async postBeef(beef, txids) {
|
|
66
|
-
var _a;
|
|
67
83
|
const results = [];
|
|
68
84
|
for (const txid of txids) {
|
|
69
85
|
try {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (!beefTx) {
|
|
73
|
-
results.push({
|
|
74
|
-
name: 'MockServices',
|
|
75
|
-
status: 'error',
|
|
76
|
-
error: new WERR_errors_1.WERR_INVALID_PARAMETER('txid', `present in provided BEEF. txid: ${txid}`),
|
|
77
|
-
txidResults: [{ txid, status: 'error' }]
|
|
78
|
-
});
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
const rawTx = beefTx.rawTx;
|
|
82
|
-
if (!rawTx) {
|
|
83
|
-
results.push({
|
|
84
|
-
name: 'MockServices',
|
|
85
|
-
status: 'error',
|
|
86
|
-
error: new WERR_errors_1.WERR_INVALID_PARAMETER('rawTx', `present in BEEF for txid: ${txid}`),
|
|
87
|
-
txidResults: [{ txid, status: 'error' }]
|
|
88
|
-
});
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
const tx = sdk_1.Transaction.fromBinary(rawTx);
|
|
92
|
-
// Validate inputs
|
|
93
|
-
const currentHeight = await this.tracker.currentHeight();
|
|
94
|
-
for (let i = 0; i < tx.inputs.length; i++) {
|
|
95
|
-
const input = tx.inputs[i];
|
|
96
|
-
const sourceTxid = input.sourceTXID || (input.sourceTransaction ? input.sourceTransaction.id('hex') : undefined);
|
|
97
|
-
if (!sourceTxid) {
|
|
98
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('input.sourceTXID', `defined for input ${i}`);
|
|
99
|
-
}
|
|
100
|
-
const sourceVout = input.sourceOutputIndex;
|
|
101
|
-
const utxo = await this.storage.getUtxo(sourceTxid, sourceVout);
|
|
102
|
-
if (!utxo) {
|
|
103
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('input', `reference a known UTXO. Input ${i}: ${sourceTxid}.${sourceVout} not found`);
|
|
104
|
-
}
|
|
105
|
-
if (utxo.spentByTxid) {
|
|
106
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('input', `not be already spent. Input ${i}: ${sourceTxid}.${sourceVout} spent by ${utxo.spentByTxid}`);
|
|
107
|
-
}
|
|
108
|
-
// Coinbase maturity check
|
|
109
|
-
if (utxo.isCoinbase && utxo.blockHeight !== null) {
|
|
110
|
-
if (currentHeight - utxo.blockHeight < 100) {
|
|
111
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('input', `not spend immature coinbase. Input ${i}: coinbase at height ${utxo.blockHeight}, current height ${currentHeight}, need 100 confirmations`);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// Ensure source transaction is set for script validation
|
|
115
|
-
if (!input.sourceTransaction) {
|
|
116
|
-
const sourceTxRow = await this.storage.getTransaction(sourceTxid);
|
|
117
|
-
if (sourceTxRow) {
|
|
118
|
-
const sourceRaw = sourceTxRow.rawTx instanceof Buffer
|
|
119
|
-
? Array.from(sourceTxRow.rawTx)
|
|
120
|
-
: Array.isArray(sourceTxRow.rawTx)
|
|
121
|
-
? sourceTxRow.rawTx
|
|
122
|
-
: Array.from(sourceTxRow.rawTx);
|
|
123
|
-
input.sourceTransaction = sdk_1.Transaction.fromBinary(sourceRaw);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// Validate scripts using the SDK script interpreter
|
|
128
|
-
// We set sourceTransaction on each input above, so verify should work.
|
|
129
|
-
// Also set merklePath on source transactions to satisfy the SDK's proof requirement.
|
|
130
|
-
for (const input of tx.inputs) {
|
|
131
|
-
if (input.sourceTransaction && !input.sourceTransaction.merklePath) {
|
|
132
|
-
const stxid = input.sourceTransaction.id('hex');
|
|
133
|
-
const stx = await this.storage.getTransaction(stxid);
|
|
134
|
-
if (stx && stx.blockHeight !== null) {
|
|
135
|
-
const txsInBlock = await this.storage.getTransactionsInBlock(stx.blockHeight);
|
|
136
|
-
const stxids = txsInBlock.map(t => t.txid);
|
|
137
|
-
const idx = stxids.indexOf(stxid);
|
|
138
|
-
if (idx >= 0) {
|
|
139
|
-
input.sourceTransaction.merklePath = (0, merkleTree_1.computeMerklePath)(stxids, idx, stx.blockHeight);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
const verified = await tx.verify('scripts only');
|
|
145
|
-
if (verified !== true) {
|
|
146
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('transaction', `pass script validation: ${verified}`);
|
|
147
|
-
}
|
|
148
|
-
// Store transaction
|
|
149
|
-
await this.storage.insertTransaction(txid, Array.from(rawTx));
|
|
150
|
-
// Create UTXOs for each output
|
|
151
|
-
for (let vout = 0; vout < tx.outputs.length; vout++) {
|
|
152
|
-
const output = tx.outputs[vout];
|
|
153
|
-
const scriptBinary = output.lockingScript.toBinary();
|
|
154
|
-
const scriptHash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.sha256Hash)(Array.from(scriptBinary)));
|
|
155
|
-
await this.storage.insertUtxo(txid, vout, Array.from(scriptBinary), (_a = output.satoshis) !== null && _a !== void 0 ? _a : 0, scriptHash);
|
|
156
|
-
}
|
|
157
|
-
// Spend inputs
|
|
158
|
-
for (const input of tx.inputs) {
|
|
159
|
-
const sourceTxid = input.sourceTXID || (input.sourceTransaction ? input.sourceTransaction.id('hex') : '');
|
|
160
|
-
await this.storage.markUtxoSpent(sourceTxid, input.sourceOutputIndex, txid);
|
|
161
|
-
}
|
|
162
|
-
results.push({
|
|
163
|
-
name: 'MockServices',
|
|
164
|
-
status: 'success',
|
|
165
|
-
txidResults: [{ txid, status: 'success' }]
|
|
166
|
-
});
|
|
86
|
+
await this.postOneTx(beef, txid);
|
|
87
|
+
results.push({ name: 'MockServices', status: 'success', txidResults: [{ txid, status: 'success' }] });
|
|
167
88
|
}
|
|
168
|
-
catch (
|
|
169
|
-
const error =
|
|
170
|
-
results.push({
|
|
171
|
-
name: 'MockServices',
|
|
172
|
-
status: 'error',
|
|
173
|
-
error,
|
|
174
|
-
txidResults: [{ txid, status: 'error' }]
|
|
175
|
-
});
|
|
89
|
+
catch (error_) {
|
|
90
|
+
const error = error_ instanceof Error ? new WERR_errors_1.WERR_INTERNAL(error_.message) : new WERR_errors_1.WERR_INTERNAL(String(error_));
|
|
91
|
+
results.push({ name: 'MockServices', status: 'error', error, txidResults: [{ txid, status: 'error' }] });
|
|
176
92
|
}
|
|
177
93
|
}
|
|
178
94
|
return results;
|
|
179
95
|
}
|
|
96
|
+
async postOneTx(beef, txid) {
|
|
97
|
+
const beefTx = beef.findTxid(txid);
|
|
98
|
+
if (beefTx == null)
|
|
99
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('txid', `present in provided BEEF. txid: ${txid}`);
|
|
100
|
+
const rawTx = beefTx.rawTx;
|
|
101
|
+
if (rawTx == null)
|
|
102
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('rawTx', `present in BEEF for txid: ${txid}`);
|
|
103
|
+
const tx = sdk_1.Transaction.fromBinary(rawTx);
|
|
104
|
+
await this.validateTxInputs(tx);
|
|
105
|
+
await this.populateMerklePaths(tx);
|
|
106
|
+
const verified = await tx.verify('scripts only');
|
|
107
|
+
if (!verified)
|
|
108
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('transaction', `pass script validation: ${String(verified)}`);
|
|
109
|
+
await this.storage.insertTransaction(txid, Array.from(rawTx));
|
|
110
|
+
await this.storeOutputs(tx, txid);
|
|
111
|
+
await this.spendInputs(tx, txid);
|
|
112
|
+
}
|
|
113
|
+
async validateTxInputs(tx) {
|
|
114
|
+
const currentHeight = await this.tracker.currentHeight();
|
|
115
|
+
for (let i = 0; i < tx.inputs.length; i++) {
|
|
116
|
+
const input = tx.inputs[i];
|
|
117
|
+
const sourceTxid = (input.sourceTXID != null && input.sourceTXID !== '') ? input.sourceTXID : ((input.sourceTransaction != null) ? input.sourceTransaction.id('hex') : undefined);
|
|
118
|
+
if (sourceTxid == null || sourceTxid === '')
|
|
119
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('input.sourceTXID', `defined for input ${i}`);
|
|
120
|
+
const utxo = await this.storage.getUtxo(sourceTxid, input.sourceOutputIndex);
|
|
121
|
+
if (utxo == null)
|
|
122
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('input', `reference a known UTXO. Input ${i}: ${sourceTxid}.${input.sourceOutputIndex} not found`);
|
|
123
|
+
if (utxo.spentByTxid != null && utxo.spentByTxid !== '')
|
|
124
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('input', `not be already spent. Input ${i}: ${sourceTxid}.${input.sourceOutputIndex} spent by ${utxo.spentByTxid}`);
|
|
125
|
+
if (utxo.isCoinbase && utxo.blockHeight !== null && currentHeight - utxo.blockHeight < 100) {
|
|
126
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('input', `not spend immature coinbase. Input ${i}: coinbase at height ${utxo.blockHeight}, current height ${currentHeight}, need 100 confirmations`);
|
|
127
|
+
}
|
|
128
|
+
if (input.sourceTransaction == null) {
|
|
129
|
+
input.sourceTransaction = await this.loadSourceTransaction(sourceTxid);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async loadSourceTransaction(sourceTxid) {
|
|
134
|
+
const sourceTxRow = await this.storage.getTransaction(sourceTxid);
|
|
135
|
+
if (sourceTxRow == null)
|
|
136
|
+
return undefined;
|
|
137
|
+
const raw = sourceTxRow.rawTx instanceof Buffer
|
|
138
|
+
? Array.from(sourceTxRow.rawTx)
|
|
139
|
+
: Array.isArray(sourceTxRow.rawTx) ? sourceTxRow.rawTx : Array.from(sourceTxRow.rawTx);
|
|
140
|
+
return sdk_1.Transaction.fromBinary(raw);
|
|
141
|
+
}
|
|
142
|
+
async populateMerklePaths(tx) {
|
|
143
|
+
for (const input of tx.inputs) {
|
|
144
|
+
if ((input.sourceTransaction == null) || (input.sourceTransaction.merklePath != null))
|
|
145
|
+
continue;
|
|
146
|
+
const stxid = input.sourceTransaction.id('hex');
|
|
147
|
+
const stx = await this.storage.getTransaction(stxid);
|
|
148
|
+
if ((stx == null) || stx.blockHeight === null)
|
|
149
|
+
continue;
|
|
150
|
+
const txsInBlock = await this.storage.getTransactionsInBlock(stx.blockHeight);
|
|
151
|
+
const stxids = txsInBlock.map(t => t.txid);
|
|
152
|
+
const idx = stxids.indexOf(stxid);
|
|
153
|
+
if (idx >= 0)
|
|
154
|
+
input.sourceTransaction.merklePath = (0, merkleTree_1.computeMerklePath)(stxids, idx, stx.blockHeight);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async storeOutputs(tx, txid) {
|
|
158
|
+
var _a;
|
|
159
|
+
for (let vout = 0; vout < tx.outputs.length; vout++) {
|
|
160
|
+
const output = tx.outputs[vout];
|
|
161
|
+
const scriptBinary = output.lockingScript.toBinary();
|
|
162
|
+
const scriptHash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.sha256Hash)(Array.from(scriptBinary)));
|
|
163
|
+
await this.storage.insertUtxo(txid, vout, Array.from(scriptBinary), (_a = output.satoshis) !== null && _a !== void 0 ? _a : 0, scriptHash);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
async spendInputs(tx, txid) {
|
|
167
|
+
for (const input of tx.inputs) {
|
|
168
|
+
const sourceTxid = (input.sourceTXID != null && input.sourceTXID !== '') ? input.sourceTXID : ((input.sourceTransaction != null) ? input.sourceTransaction.id('hex') : '');
|
|
169
|
+
await this.storage.markUtxoSpent(sourceTxid, input.sourceOutputIndex, txid);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
180
172
|
async reorg(startingHeight, numBlocks, txidMap) {
|
|
181
173
|
const oldTip = await this.storage.getChainTip();
|
|
182
|
-
if (
|
|
174
|
+
if (oldTip == null)
|
|
183
175
|
throw new WERR_errors_1.WERR_INTERNAL('Cannot reorg empty chain');
|
|
184
|
-
if (startingHeight > oldTip.height)
|
|
176
|
+
if (startingHeight > oldTip.height)
|
|
185
177
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('startingHeight', `<= current tip height ${oldTip.height}`);
|
|
186
|
-
}
|
|
187
178
|
const deactivatedHeaders = [];
|
|
188
|
-
// Collect all deactivated headers
|
|
189
179
|
for (let h = startingHeight; h <= oldTip.height; h++) {
|
|
190
180
|
const header = await this.storage.getBlockHeaderByHeight(h);
|
|
191
|
-
if (header)
|
|
181
|
+
if (header != null)
|
|
192
182
|
deactivatedHeaders.push(header);
|
|
193
183
|
}
|
|
194
184
|
await this.knex.transaction(async (trx) => {
|
|
195
185
|
const trxStorage = new MockChainStorage_1.MockChainStorage(trx);
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const txsInBlock = await trxStorage.getTransactionsInBlock(h);
|
|
199
|
-
// Get coinbaseTxid from the raw row (not BlockHeader which lacks it)
|
|
200
|
-
const headerRow = await trxStorage.knex('mockchain_block_headers').where({ height: h }).first();
|
|
201
|
-
const coinbaseTxid = headerRow === null || headerRow === void 0 ? void 0 : headerRow.coinbaseTxid;
|
|
202
|
-
for (const tx of txsInBlock) {
|
|
203
|
-
if (coinbaseTxid && tx.txid === coinbaseTxid) {
|
|
204
|
-
// Delete coinbase UTXOs and transaction
|
|
205
|
-
await trxStorage.deleteUtxosByTxid(tx.txid);
|
|
206
|
-
await trxStorage.deleteTransaction(tx.txid);
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
// Return non-coinbase tx to mempool
|
|
210
|
-
await trxStorage.setTransactionBlock(tx.txid, null, null);
|
|
211
|
-
await trxStorage.setUtxoBlockHeight(tx.txid, null);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
if (headerRow) {
|
|
215
|
-
await trxStorage.deleteBlockHeader(h);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
// Mine numBlocks new blocks
|
|
219
|
-
for (let i = 0; i < numBlocks; i++) {
|
|
220
|
-
const newHeight = startingHeight + i;
|
|
221
|
-
// Determine which txids go in this block from txidMap
|
|
222
|
-
const mappedTxids = [];
|
|
223
|
-
if (txidMap) {
|
|
224
|
-
for (const [tid, offset] of Object.entries(txidMap)) {
|
|
225
|
-
if (offset === i)
|
|
226
|
-
mappedTxids.push(tid);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// Get previous hash
|
|
230
|
-
let prevHash;
|
|
231
|
-
if (newHeight === 0) {
|
|
232
|
-
prevHash = '00'.repeat(32);
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
const prevHeader = await trxStorage.getBlockHeaderByHeight(newHeight - 1);
|
|
236
|
-
if (!prevHeader)
|
|
237
|
-
throw new WERR_errors_1.WERR_INTERNAL(`Missing block header at height ${newHeight - 1}`);
|
|
238
|
-
prevHash = prevHeader.hash;
|
|
239
|
-
}
|
|
240
|
-
// Create coinbase
|
|
241
|
-
const { createCoinbaseTransaction } = await Promise.resolve().then(() => __importStar(require('./MockMiner')));
|
|
242
|
-
const coinbaseTx = createCoinbaseTransaction(newHeight);
|
|
243
|
-
const coinbaseTxid = coinbaseTx.id('hex');
|
|
244
|
-
const coinbaseRawTx = Array.from(coinbaseTx.toBinary());
|
|
245
|
-
const allTxids = [coinbaseTxid, ...mappedTxids];
|
|
246
|
-
const { computeMerkleRoot } = await Promise.resolve().then(() => __importStar(require('./merkleTree')));
|
|
247
|
-
const merkleRoot = computeMerkleRoot(allTxids);
|
|
248
|
-
const time = Math.floor(Date.now() / 1000);
|
|
249
|
-
const bits = 0x207fffff;
|
|
250
|
-
const nonceBytes = (0, sdk_1.Random)(4);
|
|
251
|
-
const nonce = ((nonceBytes[0] << 24) | (nonceBytes[1] << 16) | (nonceBytes[2] << 8) | nonceBytes[3]) >>> 0;
|
|
252
|
-
const headerObj = { version: 1, previousHash: prevHash, merkleRoot, time, bits, nonce };
|
|
253
|
-
const headerBinary = (0, Services_1.toBinaryBaseBlockHeader)(headerObj);
|
|
254
|
-
const hash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.doubleSha256BE)(headerBinary));
|
|
255
|
-
// Insert coinbase tx
|
|
256
|
-
await trxStorage.knex('mockchain_transactions').insert({
|
|
257
|
-
txid: coinbaseTxid,
|
|
258
|
-
rawTx: Buffer.from(coinbaseRawTx),
|
|
259
|
-
blockHeight: newHeight,
|
|
260
|
-
blockIndex: 0
|
|
261
|
-
});
|
|
262
|
-
// Insert coinbase UTXO
|
|
263
|
-
const coinbaseOutputScript = [0x51];
|
|
264
|
-
const coinbaseScriptHash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.sha256Hash)(coinbaseOutputScript));
|
|
265
|
-
await trxStorage.knex('mockchain_utxos').insert({
|
|
266
|
-
txid: coinbaseTxid,
|
|
267
|
-
vout: 0,
|
|
268
|
-
lockingScript: Buffer.from(coinbaseOutputScript),
|
|
269
|
-
satoshis: 5000000000,
|
|
270
|
-
scriptHash: coinbaseScriptHash,
|
|
271
|
-
spentByTxid: null,
|
|
272
|
-
isCoinbase: true,
|
|
273
|
-
blockHeight: newHeight
|
|
274
|
-
});
|
|
275
|
-
// Update mapped txs
|
|
276
|
-
for (let j = 0; j < mappedTxids.length; j++) {
|
|
277
|
-
await trxStorage.setTransactionBlock(mappedTxids[j], newHeight, j + 1);
|
|
278
|
-
await trxStorage.setUtxoBlockHeight(mappedTxids[j], newHeight);
|
|
279
|
-
}
|
|
280
|
-
// Insert block header
|
|
281
|
-
await trxStorage.knex('mockchain_block_headers').insert({
|
|
282
|
-
height: newHeight,
|
|
283
|
-
hash,
|
|
284
|
-
previousHash: prevHash,
|
|
285
|
-
merkleRoot,
|
|
286
|
-
version: 1,
|
|
287
|
-
time,
|
|
288
|
-
bits,
|
|
289
|
-
nonce,
|
|
290
|
-
coinbaseTxid
|
|
291
|
-
});
|
|
292
|
-
}
|
|
186
|
+
await this.tearDownOldBlocks(trxStorage, oldTip.height, startingHeight);
|
|
187
|
+
await this.mineReorgBlocks(trxStorage, startingHeight, numBlocks, txidMap);
|
|
293
188
|
});
|
|
294
189
|
const newTip = await this.storage.getChainTip();
|
|
295
|
-
if (
|
|
190
|
+
if (newTip == null)
|
|
296
191
|
throw new WERR_errors_1.WERR_INTERNAL('Chain tip missing after reorg');
|
|
297
192
|
return { oldTip, newTip, deactivatedHeaders };
|
|
298
193
|
}
|
|
194
|
+
async tearDownOldBlocks(trxStorage, fromHeight, toHeight) {
|
|
195
|
+
for (let h = fromHeight; h >= toHeight; h--) {
|
|
196
|
+
const txsInBlock = await trxStorage.getTransactionsInBlock(h);
|
|
197
|
+
const headerRow = await trxStorage.knex('mockchain_block_headers').where({ height: h }).first();
|
|
198
|
+
const coinbaseTxid = headerRow === null || headerRow === void 0 ? void 0 : headerRow.coinbaseTxid;
|
|
199
|
+
for (const tx of txsInBlock) {
|
|
200
|
+
if (coinbaseTxid != null && tx.txid === coinbaseTxid) {
|
|
201
|
+
await trxStorage.deleteUtxosByTxid(tx.txid);
|
|
202
|
+
await trxStorage.deleteTransaction(tx.txid);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
await trxStorage.setTransactionBlock(tx.txid, null, null);
|
|
206
|
+
await trxStorage.setUtxoBlockHeight(tx.txid, null);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (headerRow != null)
|
|
210
|
+
await trxStorage.deleteBlockHeader(h);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
async mineReorgBlocks(trxStorage, startingHeight, numBlocks, txidMap) {
|
|
214
|
+
const { createCoinbaseTransaction } = await Promise.resolve().then(() => __importStar(require('./MockMiner')));
|
|
215
|
+
const { computeMerkleRoot } = await Promise.resolve().then(() => __importStar(require('./merkleTree')));
|
|
216
|
+
for (let i = 0; i < numBlocks; i++) {
|
|
217
|
+
const newHeight = startingHeight + i;
|
|
218
|
+
const mappedTxids = txidMap != null ? Object.entries(txidMap).filter(([, o]) => o === i).map(([tid]) => tid) : [];
|
|
219
|
+
const prevHash = newHeight === 0
|
|
220
|
+
? '00'.repeat(32)
|
|
221
|
+
: await this.getPrevHashForHeight(trxStorage, newHeight);
|
|
222
|
+
const coinbaseTx = createCoinbaseTransaction(newHeight);
|
|
223
|
+
const coinbaseTxid = coinbaseTx.id('hex');
|
|
224
|
+
const coinbaseRawTx = Array.from(coinbaseTx.toBinary());
|
|
225
|
+
const merkleRoot = computeMerkleRoot([coinbaseTxid, ...mappedTxids]);
|
|
226
|
+
const time = Math.floor(Date.now() / 1000);
|
|
227
|
+
const bits = 0x207fffff;
|
|
228
|
+
const nonceBytes = (0, sdk_1.Random)(4);
|
|
229
|
+
const nonce = ((nonceBytes[0] << 24) | (nonceBytes[1] << 16) | (nonceBytes[2] << 8) | nonceBytes[3]) >>> 0;
|
|
230
|
+
const hash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.doubleSha256BE)((0, Services_1.toBinaryBaseBlockHeader)({ version: 1, previousHash: prevHash, merkleRoot, time, bits, nonce })));
|
|
231
|
+
await trxStorage.knex('mockchain_transactions').insert({ txid: coinbaseTxid, rawTx: Buffer.from(coinbaseRawTx), blockHeight: newHeight, blockIndex: 0 });
|
|
232
|
+
const coinbaseOutputScript = [0x51];
|
|
233
|
+
await trxStorage.knex('mockchain_utxos').insert({ txid: coinbaseTxid, vout: 0, lockingScript: Buffer.from(coinbaseOutputScript), satoshis: 5000000000, scriptHash: (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.sha256Hash)(coinbaseOutputScript)), spentByTxid: null, isCoinbase: true, blockHeight: newHeight });
|
|
234
|
+
for (let j = 0; j < mappedTxids.length; j++) {
|
|
235
|
+
await trxStorage.setTransactionBlock(mappedTxids[j], newHeight, j + 1);
|
|
236
|
+
await trxStorage.setUtxoBlockHeight(mappedTxids[j], newHeight);
|
|
237
|
+
}
|
|
238
|
+
await trxStorage.knex('mockchain_block_headers').insert({ height: newHeight, hash, previousHash: prevHash, merkleRoot, version: 1, time, bits, nonce, coinbaseTxid });
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
async getPrevHashForHeight(trxStorage, height) {
|
|
242
|
+
const prevHeader = await trxStorage.getBlockHeaderByHeight(height - 1);
|
|
243
|
+
if (prevHeader == null)
|
|
244
|
+
throw new WERR_errors_1.WERR_INTERNAL(`Missing block header at height ${height - 1}`);
|
|
245
|
+
return prevHeader.hash;
|
|
246
|
+
}
|
|
299
247
|
async getRawTx(txid) {
|
|
300
248
|
const tx = await this.storage.getTransaction(txid);
|
|
301
|
-
if (
|
|
249
|
+
if (tx == null)
|
|
302
250
|
return { txid };
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
251
|
+
let rawTx;
|
|
252
|
+
if (tx.rawTx instanceof Buffer) {
|
|
253
|
+
rawTx = Array.from(tx.rawTx);
|
|
254
|
+
}
|
|
255
|
+
else if (Array.isArray(tx.rawTx)) {
|
|
256
|
+
rawTx = tx.rawTx;
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
rawTx = Array.from(tx.rawTx);
|
|
260
|
+
}
|
|
308
261
|
return { txid, rawTx, name: 'MockServices' };
|
|
309
262
|
}
|
|
310
263
|
async getMerklePath(txid) {
|
|
311
264
|
const tx = await this.storage.getTransaction(txid);
|
|
312
|
-
if (
|
|
265
|
+
if ((tx == null) || tx.blockHeight === null)
|
|
313
266
|
return {};
|
|
314
267
|
const txsInBlock = await this.storage.getTransactionsInBlock(tx.blockHeight);
|
|
315
268
|
const txids = txsInBlock.map(t => t.txid);
|
|
@@ -318,14 +271,14 @@ class MockServices {
|
|
|
318
271
|
return {};
|
|
319
272
|
const header = await this.storage.getBlockHeaderByHeight(tx.blockHeight);
|
|
320
273
|
const merklePath = (0, merkleTree_1.computeMerklePath)(txids, targetIndex, tx.blockHeight);
|
|
321
|
-
return { merklePath, header: header
|
|
274
|
+
return { merklePath, header: header !== null && header !== void 0 ? header : undefined, name: 'MockServices' };
|
|
322
275
|
}
|
|
323
276
|
async getUtxoStatus(output, outputFormat, outpoint) {
|
|
324
277
|
const hashBE = (0, Services_1.validateScriptHash)(output, outputFormat);
|
|
325
278
|
// Convert hashBE to hashLE for our storage (which stores hashLE)
|
|
326
279
|
const hashLE = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_noBuffer_1.asArray)(hashBE).reverse());
|
|
327
280
|
const utxos = await this.storage.getUtxosByScriptHash(hashLE);
|
|
328
|
-
const unspent = utxos.filter(u =>
|
|
281
|
+
const unspent = utxos.filter(u => u.spentByTxid == null || u.spentByTxid === '');
|
|
329
282
|
let isUtxo = unspent.length > 0;
|
|
330
283
|
const details = unspent.map(u => {
|
|
331
284
|
var _a;
|
|
@@ -337,11 +290,11 @@ class MockServices {
|
|
|
337
290
|
});
|
|
338
291
|
});
|
|
339
292
|
// If outpoint is provided, filter to match
|
|
340
|
-
if (outpoint && isUtxo) {
|
|
293
|
+
if (outpoint != null && outpoint !== '' && isUtxo) {
|
|
341
294
|
const [opTxid, opVoutStr] = outpoint.split('.');
|
|
342
|
-
const opVout = parseInt(opVoutStr, 10);
|
|
295
|
+
const opVout = Number.parseInt(opVoutStr, 10);
|
|
343
296
|
const match = details.find(d => d.txid === opTxid && d.index === opVout);
|
|
344
|
-
isUtxo =
|
|
297
|
+
isUtxo = match != null;
|
|
345
298
|
}
|
|
346
299
|
return {
|
|
347
300
|
name: 'MockServices',
|
|
@@ -354,7 +307,7 @@ class MockServices {
|
|
|
354
307
|
const currentHeight = await this.tracker.currentHeight();
|
|
355
308
|
const results = await Promise.all(txids.map(async (txid) => {
|
|
356
309
|
const tx = await this.storage.getTransaction(txid);
|
|
357
|
-
if (
|
|
310
|
+
if (tx == null)
|
|
358
311
|
return { txid, status: 'unknown', depth: undefined };
|
|
359
312
|
if (tx.blockHeight !== null) {
|
|
360
313
|
const depth = currentHeight - tx.blockHeight + 1;
|
|
@@ -380,16 +333,16 @@ class MockServices {
|
|
|
380
333
|
}
|
|
381
334
|
async getHeaderForHeight(height) {
|
|
382
335
|
const header = await this.storage.getBlockHeaderByHeight(height);
|
|
383
|
-
if (
|
|
336
|
+
if (header == null)
|
|
384
337
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('height', `valid height '${height}' on mock chain`);
|
|
385
338
|
return (0, Services_1.toBinaryBaseBlockHeader)(header);
|
|
386
339
|
}
|
|
387
340
|
async getHeight() {
|
|
388
|
-
return this.tracker.currentHeight();
|
|
341
|
+
return await this.tracker.currentHeight();
|
|
389
342
|
}
|
|
390
343
|
async hashToHeader(hash) {
|
|
391
344
|
const header = await this.storage.getBlockHeaderByHash(hash);
|
|
392
|
-
if (
|
|
345
|
+
if (header == null)
|
|
393
346
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', `valid blockhash '${hash}' on mock chain`);
|
|
394
347
|
return header;
|
|
395
348
|
}
|
|
@@ -398,25 +351,25 @@ class MockServices {
|
|
|
398
351
|
return hash;
|
|
399
352
|
}
|
|
400
353
|
async isUtxo(output) {
|
|
401
|
-
|
|
354
|
+
var _a;
|
|
355
|
+
if (output.lockingScript == null) {
|
|
402
356
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('output.lockingScript', 'validated by storage provider validateOutputScript.');
|
|
403
357
|
}
|
|
404
358
|
const hash = this.hashOutputScript(sdk_1.Utils.toHex(output.lockingScript));
|
|
405
|
-
const or = await this.getUtxoStatus(hash, undefined, `${output.txid}.${output.vout}`);
|
|
359
|
+
const or = await this.getUtxoStatus(hash, undefined, `${(_a = output.txid) !== null && _a !== void 0 ? _a : ''}.${output.vout}`);
|
|
406
360
|
return or.isUtxo === true;
|
|
407
361
|
}
|
|
408
362
|
async getBsvExchangeRate() {
|
|
409
|
-
return 50
|
|
363
|
+
return 50;
|
|
410
364
|
}
|
|
411
365
|
async getFiatExchangeRate(currency, base) {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
return 1.0;
|
|
366
|
+
const baseCurrency = base !== null && base !== void 0 ? base : 'USD';
|
|
367
|
+
return mockFiatRatesByUsd[currency] / mockFiatRatesByUsd[baseCurrency];
|
|
415
368
|
}
|
|
416
369
|
async getFiatExchangeRates(targetCurrencies) {
|
|
417
370
|
const rates = {};
|
|
418
371
|
for (const c of targetCurrencies)
|
|
419
|
-
rates[c] =
|
|
372
|
+
rates[c] = mockFiatRatesByUsd[c];
|
|
420
373
|
return {
|
|
421
374
|
timestamp: new Date(),
|
|
422
375
|
base: 'USD',
|
|
@@ -459,17 +412,22 @@ class MockServices {
|
|
|
459
412
|
return;
|
|
460
413
|
alreadyAdded.add(tid);
|
|
461
414
|
const txRow = await this.storage.getTransaction(tid);
|
|
462
|
-
if (
|
|
415
|
+
if (txRow == null)
|
|
463
416
|
return;
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
417
|
+
let rawTx;
|
|
418
|
+
if (txRow.rawTx instanceof Buffer) {
|
|
419
|
+
rawTx = Array.from(txRow.rawTx);
|
|
420
|
+
}
|
|
421
|
+
else if (Array.isArray(txRow.rawTx)) {
|
|
422
|
+
rawTx = txRow.rawTx;
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
rawTx = Array.from(txRow.rawTx);
|
|
426
|
+
}
|
|
469
427
|
if (txRow.blockHeight !== null) {
|
|
470
428
|
// Mined: add with merkle path
|
|
471
429
|
const pathResult = await this.getMerklePath(tid);
|
|
472
|
-
if (pathResult.merklePath) {
|
|
430
|
+
if (pathResult.merklePath != null) {
|
|
473
431
|
const bumpIndex = beef.mergeBump(pathResult.merklePath);
|
|
474
432
|
beef.mergeRawTx(rawTx, bumpIndex);
|
|
475
433
|
return;
|
|
@@ -478,8 +436,8 @@ class MockServices {
|
|
|
478
436
|
// Unmined or no path: recursively add source transactions
|
|
479
437
|
const tx = sdk_1.Transaction.fromBinary(rawTx);
|
|
480
438
|
for (const input of tx.inputs) {
|
|
481
|
-
const sourceTxid = input.sourceTXID
|
|
482
|
-
if (sourceTxid && sourceTxid !== '00'.repeat(32)) {
|
|
439
|
+
const sourceTxid = (input.sourceTXID != null && input.sourceTXID !== '') ? input.sourceTXID : ((input.sourceTransaction != null) ? input.sourceTransaction.id('hex') : undefined);
|
|
440
|
+
if (sourceTxid != null && sourceTxid !== '' && sourceTxid !== '00'.repeat(32)) {
|
|
483
441
|
await addTx(sourceTxid, alreadyAdded);
|
|
484
442
|
}
|
|
485
443
|
}
|