@bsv/wallet-toolbox 1.1.60 → 1.1.61
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/.prettierrc +1 -1
- package/docs/client.md +39 -5
- package/docs/services.md +1 -0
- package/docs/setup.md +9 -26
- package/docs/storage.md +35 -0
- package/docs/wallet.md +39 -5
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +6 -16
- package/out/src/Setup.js.map +1 -1
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +4 -11
- package/out/src/Wallet.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +1 -3
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +2 -10
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +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/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +1 -2
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskPurge.js +1 -2
- package/out/src/monitor/tasks/TaskPurge.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewStatus.js +1 -2
- package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/sdk/CertOps.d.ts.map +1 -1
- package/out/src/sdk/CertOps.js +4 -12
- package/out/src/sdk/CertOps.js.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- 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.map +1 -1
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +1 -4
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +2 -0
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/__test/CertificateLifeCycle.test.js +1 -3
- package/out/src/sdk/__test/CertificateLifeCycle.test.js.map +1 -1
- package/out/src/sdk/__test/PrivilegedKeyManager.test.js +13 -26
- package/out/src/sdk/__test/PrivilegedKeyManager.test.js.map +1 -1
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +2 -10
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/sdk/validationHelpers.d.ts.map +1 -1
- package/out/src/sdk/validationHelpers.js +5 -12
- package/out/src/sdk/validationHelpers.js.map +1 -1
- package/out/src/services/Services.d.ts +1 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +29 -38
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/__tests/bitrails.test.js.map +1 -1
- package/out/src/services/__tests/getMerklePath.test.js.map +1 -1
- package/out/src/services/__tests/getRawTx.test.js.map +1 -1
- package/out/src/services/__tests/verifyBeef.test.js +2 -1
- package/out/src/services/__tests/verifyBeef.test.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +1 -3
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- 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 +1 -2
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +62 -134
- 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 +6 -21
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/__tests/WhatsOnChain.test.js +1 -2
- package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +1 -1
- package/out/src/services/providers/echangeRates.d.ts.map +1 -1
- package/out/src/services/providers/echangeRates.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/methods/acquireDirectCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js +1 -3
- 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 +3 -11
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +3 -10
- 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.map +1 -1
- package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +2 -7
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +15 -44
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +9 -34
- 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.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.map +1 -1
- package/out/src/storage/WalletStorageManager.js +5 -10
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/__test/WalletStorageManager.test.js +2 -8
- package/out/src/storage/__test/WalletStorageManager.test.js.map +1 -1
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +10 -30
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +1 -1
- package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.d.ts.map +1 -1
- package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.js +17 -28
- package/out/src/storage/methods/__test/GenerateChange/randomValsUsed1.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +6 -20
- 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 +4 -9
- 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 +7 -18
- 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 +1 -3
- 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.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +2 -9
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActions.d.ts.map +1 -1
- package/out/src/storage/methods/listActions.js +3 -15
- package/out/src/storage/methods/listActions.js.map +1 -1
- package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
- package/out/src/storage/methods/listCertificates.js.map +1 -1
- package/out/src/storage/methods/listOutputs.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputs.js +4 -11
- package/out/src/storage/methods/listOutputs.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +4 -10
- 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 +8 -32
- package/out/src/storage/methods/purgeData.js.map +1 -1
- package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatus.js +1 -3
- package/out/src/storage/methods/reviewStatus.js.map +1 -1
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +15 -41
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +2 -5
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +24 -130
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/entities/Certificate.d.ts.map +1 -1
- package/out/src/storage/schema/entities/Certificate.js +1 -1
- package/out/src/storage/schema/entities/Certificate.js.map +1 -1
- package/out/src/storage/schema/entities/CertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/entities/CertificateField.js +2 -5
- package/out/src/storage/schema/entities/CertificateField.js.map +1 -1
- package/out/src/storage/schema/entities/Commission.d.ts.map +1 -1
- package/out/src/storage/schema/entities/Commission.js +2 -5
- package/out/src/storage/schema/entities/Commission.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/MergeEntity.d.ts.map +1 -1
- package/out/src/storage/schema/entities/MergeEntity.js +14 -9
- package/out/src/storage/schema/entities/MergeEntity.js.map +1 -1
- package/out/src/storage/schema/entities/Output.d.ts.map +1 -1
- package/out/src/storage/schema/entities/Output.js +8 -25
- package/out/src/storage/schema/entities/Output.js.map +1 -1
- package/out/src/storage/schema/entities/OutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/entities/OutputBasket.js +1 -1
- package/out/src/storage/schema/entities/OutputBasket.js.map +1 -1
- package/out/src/storage/schema/entities/OutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/entities/OutputTag.js +1 -1
- package/out/src/storage/schema/entities/OutputTag.js.map +1 -1
- package/out/src/storage/schema/entities/OutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/OutputTagMap.js +3 -7
- package/out/src/storage/schema/entities/OutputTagMap.js.map +1 -1
- package/out/src/storage/schema/entities/ProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/ProvenTx.js +10 -20
- package/out/src/storage/schema/entities/ProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/ProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/entities/ProvenTxReq.js +8 -18
- package/out/src/storage/schema/entities/ProvenTxReq.js.map +1 -1
- package/out/src/storage/schema/entities/SyncState.d.ts +1 -0
- package/out/src/storage/schema/entities/SyncState.d.ts.map +1 -1
- package/out/src/storage/schema/entities/SyncState.js +41 -6
- package/out/src/storage/schema/entities/SyncState.js.map +1 -1
- package/out/src/storage/schema/entities/Transaction.d.ts.map +1 -1
- package/out/src/storage/schema/entities/Transaction.js +4 -13
- package/out/src/storage/schema/entities/Transaction.js.map +1 -1
- package/out/src/storage/schema/entities/TxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/entities/TxLabel.js +1 -1
- package/out/src/storage/schema/entities/TxLabel.js.map +1 -1
- package/out/src/storage/schema/entities/TxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/entities/TxLabelMap.js +3 -9
- package/out/src/storage/schema/entities/TxLabelMap.js.map +1 -1
- package/out/src/storage/schema/entities/User.d.ts.map +1 -1
- package/out/src/storage/schema/entities/User.js +3 -5
- package/out/src/storage/schema/entities/User.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/CertificateFieldTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/CertificateTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/CommissionTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/OutputBasketTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/OutputTagMapTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/OutputTagTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/OutputTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxReqTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +1 -2
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/SyncStateTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.js +2 -2
- package/out/src/storage/schema/entities/__tests/TransactionTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/TxLabelMapTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/TxLabelTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/stampLogTests.test.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/usersTests.test.js.map +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +1 -3
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.d.ts.map +1 -1
- package/out/src/utility/ScriptTemplateBRC29.js +1 -2
- package/out/src/utility/ScriptTemplateBRC29.js.map +1 -1
- package/out/src/utility/stampLog.d.ts.map +1 -1
- 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.map +1 -1
- package/out/src/utility/utilityHelpers.buffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.buffer.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +1 -3
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/test/Wallet/StorageClient/storageClient.man.test.js.map +1 -1
- package/out/test/Wallet/action/internalizeAction.a.test.js.map +1 -1
- package/out/test/Wallet/certificate/acquireCertificate.test.js.map +1 -1
- package/out/test/Wallet/certificate/listCertificates.test.js.map +1 -1
- package/out/test/Wallet/get/getHeaderForHeight.test.js +2 -6
- package/out/test/Wallet/get/getHeaderForHeight.test.js.map +1 -1
- package/out/test/Wallet/get/getHeight.test.js.map +1 -1
- package/out/test/Wallet/get/getKnownTxids.test.js.map +1 -1
- package/out/test/Wallet/get/getNetwork.test.js.map +1 -1
- package/out/test/Wallet/get/getVersion.test.js.map +1 -1
- package/out/test/Wallet/live/walletLive.man.test.d.ts.map +1 -1
- package/out/test/Wallet/live/walletLive.man.test.js +3 -9
- package/out/test/Wallet/live/walletLive.man.test.js.map +1 -1
- package/out/test/Wallet/local/localWallet.man.test.d.ts.map +1 -1
- package/out/test/Wallet/local/localWallet.man.test.js +15 -22
- package/out/test/Wallet/local/localWallet.man.test.js.map +1 -1
- package/out/test/Wallet/specOps/specOps.man.test.js +1 -4
- package/out/test/Wallet/specOps/specOps.man.test.js.map +1 -1
- package/out/test/Wallet/support/janitor.man.test.js.map +1 -1
- package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js.map +1 -1
- package/out/test/Wallet/sync/setActive.test.js +73 -50
- package/out/test/Wallet/sync/setActive.test.js.map +1 -1
- package/out/test/checkDB.d.ts.map +1 -1
- package/out/test/checkDB.js.map +1 -1
- package/out/test/examples/backup.man.test.d.ts.map +1 -1
- package/out/test/examples/backup.man.test.js.map +1 -1
- package/out/test/examples/pushdrop.test.d.ts.map +1 -1
- package/out/test/examples/pushdrop.test.js +5 -4
- package/out/test/examples/pushdrop.test.js.map +1 -1
- package/out/test/monitor/Monitor.test.js.map +1 -1
- package/out/test/services/Services.test.js.map +1 -1
- package/out/test/storage/KnexMigrations.test.js.map +1 -1
- package/out/test/storage/StorageMySQLDojoReader.man.test.js +1 -3
- package/out/test/storage/StorageMySQLDojoReader.man.test.js.map +1 -1
- package/out/test/storage/count.test.js.map +1 -1
- package/out/test/storage/find.test.js +5 -10
- package/out/test/storage/find.test.js.map +1 -1
- package/out/test/storage/findLegacy.test.js.map +1 -1
- package/out/test/storage/insert.test.js.map +1 -1
- package/out/test/storage/update.test.js +7 -19
- package/out/test/storage/update.test.js.map +1 -1
- package/out/test/storage/update2.test.js +22 -24
- package/out/test/storage/update2.test.js.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.d.ts +3 -1
- package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.js +52 -76
- package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
- package/out/test/wallet/action/abortAction.test.js.map +1 -1
- package/out/test/wallet/action/createAction.test.js +1 -2
- package/out/test/wallet/action/createAction.test.js.map +1 -1
- package/out/test/wallet/action/createAction2.test.d.ts.map +1 -1
- package/out/test/wallet/action/createAction2.test.js +6 -16
- package/out/test/wallet/action/createAction2.test.js.map +1 -1
- package/out/test/wallet/action/createActionToGenerateBeefs.man.test.js.map +1 -1
- package/out/test/wallet/action/internalizeAction.test.js.map +1 -1
- package/out/test/wallet/action/relinquishOutput.test.js.map +1 -1
- package/out/test/wallet/list/listActions.test.js.map +1 -1
- package/out/test/wallet/list/listActions2.test.js.map +1 -1
- package/out/test/wallet/list/listCertificates.test.js +2 -6
- package/out/test/wallet/list/listCertificates.test.js.map +1 -1
- package/out/test/wallet/list/listOutputs.test.js +2 -10
- package/out/test/wallet/list/listOutputs.test.js.map +1 -1
- package/out/test/wallet/sync/Wallet.sync.test.js +4 -6
- package/out/test/wallet/sync/Wallet.sync.test.js.map +1 -1
- package/out/tsconfig.all.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/Setup.ts +15 -52
- package/src/Wallet.ts +58 -161
- package/src/monitor/Monitor.ts +7 -22
- package/src/monitor/MonitorDaemon.ts +6 -23
- package/src/monitor/tasks/TaskCheckForProofs.ts +4 -23
- package/src/monitor/tasks/TaskClock.ts +1 -3
- package/src/monitor/tasks/TaskFailAbandoned.ts +1 -3
- package/src/monitor/tasks/TaskNewHeader.ts +1 -4
- package/src/monitor/tasks/TaskPurge.ts +1 -2
- package/src/monitor/tasks/TaskReviewStatus.ts +1 -3
- package/src/monitor/tasks/TaskSendWaiting.ts +3 -10
- package/src/sdk/CertOps.ts +31 -103
- package/src/sdk/PrivilegedKeyManager.ts +18 -48
- package/src/sdk/WERR_errors.ts +6 -25
- package/src/sdk/WalletError.ts +5 -21
- package/src/sdk/WalletServices.interfaces.ts +11 -33
- package/src/sdk/WalletStorage.interfaces.ts +25 -91
- package/src/sdk/__test/CertificateLifeCycle.test.ts +9 -27
- package/src/sdk/__test/PrivilegedKeyManager.test.ts +29 -66
- package/src/sdk/types.ts +6 -26
- package/src/sdk/validationHelpers.ts +111 -402
- package/src/services/Services.ts +51 -114
- package/src/services/__tests/bitrails.test.ts +4 -15
- package/src/services/__tests/getMerklePath.test.ts +1 -2
- package/src/services/__tests/getRawTx.test.ts +1 -3
- package/src/services/__tests/verifyBeef.test.ts +2 -1
- package/src/services/chaintracker/ChaintracksChainTracker.ts +3 -13
- package/src/services/chaintracker/chaintracks/BlockHeaderApi.ts +4 -12
- package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +9 -27
- package/src/services/createDefaultWalletServicesOptions.ts +2 -5
- package/src/services/providers/ARC.ts +5 -24
- package/src/services/providers/Bitails.ts +61 -159
- package/src/services/providers/SdkWhatsOnChain.ts +4 -17
- package/src/services/providers/WhatsOnChain.ts +31 -100
- package/src/services/providers/__tests/WhatsOnChain.test.ts +5 -15
- package/src/services/providers/echangeRates.ts +7 -22
- package/src/signer/WalletSigner.ts +1 -5
- package/src/signer/methods/acquireDirectCertificate.ts +1 -4
- package/src/signer/methods/buildSignableTransaction.ts +5 -20
- package/src/signer/methods/createAction.ts +15 -54
- package/src/signer/methods/internalizeAction.ts +10 -39
- package/src/signer/methods/proveCertificate.ts +2 -5
- package/src/signer/methods/signAction.ts +9 -39
- package/src/storage/StorageKnex.ts +166 -499
- package/src/storage/StorageProvider.ts +75 -291
- package/src/storage/StorageReader.ts +20 -65
- package/src/storage/StorageReaderWriter.ts +67 -264
- package/src/storage/StorageSyncReader.ts +2 -5
- package/src/storage/WalletStorageManager.ts +33 -108
- package/src/storage/__test/WalletStorageManager.test.ts +6 -23
- package/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts +53 -171
- package/src/storage/methods/__test/GenerateChange/randomValsUsed1.ts +17 -28
- package/src/storage/methods/attemptToPostReqsToNetwork.ts +9 -37
- package/src/storage/methods/createAction.ts +45 -181
- package/src/storage/methods/generateChange.ts +33 -114
- package/src/storage/methods/getBeefForTransaction.ts +7 -37
- package/src/storage/methods/getSyncChunk.ts +18 -69
- package/src/storage/methods/internalizeAction.ts +18 -70
- package/src/storage/methods/listActions.ts +6 -23
- package/src/storage/methods/listCertificates.ts +5 -14
- package/src/storage/methods/listOutputs.ts +14 -68
- package/src/storage/methods/processAction.ts +29 -104
- package/src/storage/methods/purgeData.ts +11 -45
- package/src/storage/methods/reviewStatus.ts +3 -9
- package/src/storage/remoting/StorageClient.ts +43 -146
- package/src/storage/remoting/StorageServer.ts +21 -59
- package/src/storage/schema/KnexMigrations.ts +34 -165
- package/src/storage/schema/entities/Certificate.ts +3 -14
- package/src/storage/schema/entities/CertificateField.ts +6 -28
- package/src/storage/schema/entities/Commission.ts +6 -23
- package/src/storage/schema/entities/EntityBase.ts +1 -6
- package/src/storage/schema/entities/MergeEntity.ts +14 -21
- package/src/storage/schema/entities/Output.ts +10 -39
- package/src/storage/schema/entities/OutputBasket.ts +4 -16
- package/src/storage/schema/entities/OutputTag.ts +4 -17
- package/src/storage/schema/entities/OutputTagMap.ts +7 -30
- package/src/storage/schema/entities/ProvenTx.ts +16 -57
- package/src/storage/schema/entities/ProvenTxReq.ts +29 -93
- package/src/storage/schema/entities/SyncState.ts +64 -116
- package/src/storage/schema/entities/Transaction.ts +10 -35
- package/src/storage/schema/entities/TxLabel.ts +4 -17
- package/src/storage/schema/entities/TxLabelMap.ts +6 -28
- package/src/storage/schema/entities/User.ts +8 -31
- package/src/storage/schema/entities/__tests/CertificateFieldTests.test.ts +23 -54
- package/src/storage/schema/entities/__tests/CertificateTests.test.ts +26 -59
- package/src/storage/schema/entities/__tests/CommissionTests.test.ts +2 -11
- package/src/storage/schema/entities/__tests/OutputBasketTests.test.ts +2 -10
- package/src/storage/schema/entities/__tests/OutputTagMapTests.test.ts +2 -10
- package/src/storage/schema/entities/__tests/OutputTagTests.test.ts +1 -4
- package/src/storage/schema/entities/__tests/OutputTests.test.ts +3 -14
- package/src/storage/schema/entities/__tests/ProvenTxReqTests.test.ts +4 -16
- package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +5 -18
- package/src/storage/schema/entities/__tests/SyncStateTests.test.ts +5 -26
- package/src/storage/schema/entities/__tests/TransactionTests.test.ts +12 -48
- package/src/storage/schema/entities/__tests/TxLabelMapTests.test.ts +4 -22
- package/src/storage/schema/entities/__tests/TxLabelTests.test.ts +2 -10
- package/src/storage/schema/entities/__tests/stampLogTests.test.ts +3 -10
- package/src/storage/schema/entities/__tests/usersTests.test.ts +4 -7
- package/src/storage/schema/tables/TableSettings.ts +1 -3
- package/src/storage/sync/StorageMySQLDojoReader.ts +47 -148
- package/src/utility/ScriptTemplateBRC29.ts +2 -11
- package/src/utility/stampLog.ts +2 -6
- package/src/utility/tscProofToMerklePath.ts +1 -4
- package/src/utility/utilityHelpers.buffer.ts +3 -12
- package/src/utility/utilityHelpers.ts +14 -49
- package/test/Wallet/StorageClient/storageClient.man.test.ts +2 -8
- package/test/Wallet/action/internalizeAction.a.test.ts +8 -23
- package/test/Wallet/certificate/acquireCertificate.test.ts +10 -24
- package/test/Wallet/certificate/listCertificates.test.ts +8 -18
- package/test/Wallet/get/getHeaderForHeight.test.ts +4 -15
- package/test/Wallet/get/getHeight.test.ts +2 -6
- package/test/Wallet/get/getKnownTxids.test.ts +1 -5
- package/test/Wallet/get/getNetwork.test.ts +1 -2
- package/test/Wallet/get/getVersion.test.ts +1 -2
- package/test/Wallet/live/walletLive.man.test.ts +14 -41
- package/test/Wallet/local/localWallet.man.test.ts +26 -99
- package/test/Wallet/specOps/specOps.man.test.ts +4 -13
- package/test/Wallet/support/janitor.man.test.ts +2 -7
- package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +11 -34
- package/test/Wallet/sync/setActive.test.ts +75 -61
- package/test/checkDB.ts +2 -8
- package/test/examples/backup.man.test.ts +2 -9
- package/test/examples/pushdrop.test.ts +7 -20
- package/test/monitor/Monitor.test.ts +33 -87
- package/test/services/Services.test.ts +8 -19
- package/test/storage/KnexMigrations.test.ts +3 -18
- package/test/storage/StorageMySQLDojoReader.man.test.ts +4 -15
- package/test/storage/count.test.ts +7 -24
- package/test/storage/find.test.ts +7 -29
- package/test/storage/findLegacy.test.ts +2 -5
- package/test/storage/insert.test.ts +3 -19
- package/test/storage/update.test.ts +47 -179
- package/test/storage/update2.test.ts +54 -176
- package/test/utils/TestUtilsWalletStorage.ts +139 -372
- package/test/wallet/action/abortAction.test.ts +4 -12
- package/test/wallet/action/createAction.test.ts +4 -14
- package/test/wallet/action/createAction2.test.ts +74 -208
- package/test/wallet/action/createActionToGenerateBeefs.man.test.ts +8 -11
- package/test/wallet/action/internalizeAction.test.ts +20 -72
- package/test/wallet/action/relinquishOutput.test.ts +3 -9
- package/test/wallet/list/listActions.test.ts +2 -9
- package/test/wallet/list/listActions2.test.ts +8 -34
- package/test/wallet/list/listCertificates.test.ts +5 -16
- package/test/wallet/list/listOutputs.test.ts +15 -54
- package/test/wallet/sync/Wallet.sync.test.ts +18 -49
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
-
import {
|
|
3
|
-
Beef,
|
|
4
|
-
Transaction as BsvTransaction,
|
|
5
|
-
SendWithResult,
|
|
6
|
-
SendWithResultStatus
|
|
7
|
-
} from '@bsv/sdk'
|
|
2
|
+
import { Beef, Transaction as BsvTransaction, SendWithResult, SendWithResultStatus } from '@bsv/sdk'
|
|
8
3
|
import {
|
|
9
4
|
asArray,
|
|
10
5
|
asString,
|
|
@@ -49,30 +44,17 @@ export async function processAction(
|
|
|
49
44
|
|
|
50
45
|
if (args.isNewTx) {
|
|
51
46
|
const vargs = await validateCommitNewTxToStorageArgs(storage, userId, args)
|
|
52
|
-
;({ req, log: args.log } = await commitNewTxToStorage(
|
|
53
|
-
storage,
|
|
54
|
-
userId,
|
|
55
|
-
vargs
|
|
56
|
-
))
|
|
47
|
+
;({ req, log: args.log } = await commitNewTxToStorage(storage, userId, vargs))
|
|
57
48
|
if (!req) throw new sdk.WERR_INTERNAL()
|
|
58
49
|
// Add the new txid to sendWith unless there are no others to send and the noSend option is set.
|
|
59
|
-
if (args.isNoSend && !args.isSendWith)
|
|
60
|
-
stampLog(args.log, `... storage processActionSdk newTx committed noSend`)
|
|
50
|
+
if (args.isNoSend && !args.isSendWith) stampLog(args.log, `... storage processActionSdk newTx committed noSend`)
|
|
61
51
|
else {
|
|
62
52
|
txidsOfReqsToShareWithWorld.push(req.txid)
|
|
63
|
-
stampLog(
|
|
64
|
-
args.log,
|
|
65
|
-
`... storage processActionSdk newTx committed sendWith ${req.txid}`
|
|
66
|
-
)
|
|
53
|
+
stampLog(args.log, `... storage processActionSdk newTx committed sendWith ${req.txid}`)
|
|
67
54
|
}
|
|
68
55
|
}
|
|
69
56
|
|
|
70
|
-
const swr = await shareReqsWithWorld(
|
|
71
|
-
storage,
|
|
72
|
-
userId,
|
|
73
|
-
txidsOfReqsToShareWithWorld,
|
|
74
|
-
args.isDelayed
|
|
75
|
-
)
|
|
57
|
+
const swr = await shareReqsWithWorld(storage, userId, txidsOfReqsToShareWithWorld, args.isDelayed)
|
|
76
58
|
|
|
77
59
|
r.sendWithResults = swr
|
|
78
60
|
|
|
@@ -111,22 +93,15 @@ async function shareReqsWithWorld(
|
|
|
111
93
|
for (const getReq of r.details) ars.push({ txid: getReq.txid, getReq })
|
|
112
94
|
|
|
113
95
|
// Filter original txids down to reqIds that are available and need sending
|
|
114
|
-
const readyToSendReqs = r.details
|
|
115
|
-
.filter(d => d.status === 'readyToSend')
|
|
116
|
-
.map(d => new EntityProvenTxReq(d.req!))
|
|
96
|
+
const readyToSendReqs = r.details.filter(d => d.status === 'readyToSend').map(d => new EntityProvenTxReq(d.req!))
|
|
117
97
|
const readyToSendReqIds = readyToSendReqs.map(r => r.id)
|
|
118
|
-
const transactionIds = readyToSendReqs
|
|
119
|
-
.map(r => r.notify.transactionIds || [])
|
|
120
|
-
.flat()
|
|
98
|
+
const transactionIds = readyToSendReqs.map(r => r.notify.transactionIds || []).flat()
|
|
121
99
|
|
|
122
100
|
// If there are reqs to send, verify that we have a valid aggregate beef for them.
|
|
123
101
|
// If isDelayed, this (or a different beef) will have to be rebuilt at the time of sending.
|
|
124
102
|
if (readyToSendReqs.length > 0) {
|
|
125
|
-
const beefIsValid = await r.beef.verify(
|
|
126
|
-
|
|
127
|
-
)
|
|
128
|
-
if (!beefIsValid)
|
|
129
|
-
throw new sdk.WERR_INTERNAL(`merged Beef failed validation.`)
|
|
103
|
+
const beefIsValid = await r.beef.verify(await storage.getServices().getChainTracker())
|
|
104
|
+
if (!beefIsValid) throw new sdk.WERR_INTERNAL(`merged Beef failed validation.`)
|
|
130
105
|
}
|
|
131
106
|
|
|
132
107
|
// Set req batch property for the reqs being sent
|
|
@@ -136,16 +111,8 @@ async function shareReqsWithWorld(
|
|
|
136
111
|
// Just bump the req status to 'unsent' to enable background sending...
|
|
137
112
|
if (readyToSendReqIds.length > 0) {
|
|
138
113
|
await storage.transaction(async trx => {
|
|
139
|
-
await storage.updateProvenTxReq(
|
|
140
|
-
|
|
141
|
-
{ status: 'unsent', batch },
|
|
142
|
-
trx
|
|
143
|
-
)
|
|
144
|
-
await storage.updateTransaction(
|
|
145
|
-
transactionIds,
|
|
146
|
-
{ status: 'sending' },
|
|
147
|
-
trx
|
|
148
|
-
)
|
|
114
|
+
await storage.updateProvenTxReq(readyToSendReqIds, { status: 'unsent', batch }, trx)
|
|
115
|
+
await storage.updateTransaction(transactionIds, { status: 'sending' }, trx)
|
|
149
116
|
})
|
|
150
117
|
}
|
|
151
118
|
return createSendWithResults()
|
|
@@ -174,10 +141,7 @@ async function shareReqsWithWorld(
|
|
|
174
141
|
// If the immediate (un-delayed) broadcast attempt APPEARS to fail,
|
|
175
142
|
// fall back to delayed sending and tracking to make sure transaction
|
|
176
143
|
// gets tracked if it is valid and floating around the network...
|
|
177
|
-
const req = await EntityProvenTxReq.fromStorageId(
|
|
178
|
-
storage,
|
|
179
|
-
ar.getReq.req.provenTxReqId
|
|
180
|
-
)
|
|
144
|
+
const req = await EntityProvenTxReq.fromStorageId(storage, ar.getReq.req.provenTxReqId)
|
|
181
145
|
if (req.status === 'unprocessed') {
|
|
182
146
|
req.status = 'unsent'
|
|
183
147
|
await req.updateStorageDynamicProperties(storage)
|
|
@@ -195,10 +159,7 @@ async function shareReqsWithWorld(
|
|
|
195
159
|
for (const ar of ars) {
|
|
196
160
|
let status: SendWithResultStatus = 'failed'
|
|
197
161
|
if (ar.getReq.status === 'alreadySent') status = 'unproven'
|
|
198
|
-
else if (
|
|
199
|
-
ar.getReq.status === 'readyToSend' &&
|
|
200
|
-
(isDelayed || ar.postBeef?.status === 'success')
|
|
201
|
-
)
|
|
162
|
+
else if (ar.getReq.status === 'readyToSend' && (isDelayed || ar.postBeef?.status === 'success'))
|
|
202
163
|
status = 'sending'
|
|
203
164
|
rs.push({
|
|
204
165
|
txid: ar.txid,
|
|
@@ -248,21 +209,15 @@ async function validateCommitNewTxToStorageArgs(
|
|
|
248
209
|
params: sdk.StorageProcessActionArgs
|
|
249
210
|
): Promise<ValidCommitNewTxToStorageArgs> {
|
|
250
211
|
if (!params.reference || !params.txid || !params.rawTx)
|
|
251
|
-
throw new sdk.WERR_INVALID_OPERATION(
|
|
252
|
-
'One or more expected params are undefined.'
|
|
253
|
-
)
|
|
212
|
+
throw new sdk.WERR_INVALID_OPERATION('One or more expected params are undefined.')
|
|
254
213
|
let tx: BsvTransaction
|
|
255
214
|
try {
|
|
256
215
|
tx = BsvTransaction.fromBinary(params.rawTx)
|
|
257
216
|
} catch (e: unknown) {
|
|
258
|
-
throw new sdk.WERR_INVALID_OPERATION(
|
|
259
|
-
'Parsing serialized transaction failed.'
|
|
260
|
-
)
|
|
217
|
+
throw new sdk.WERR_INVALID_OPERATION('Parsing serialized transaction failed.')
|
|
261
218
|
}
|
|
262
219
|
if (params.txid !== tx.id('hex'))
|
|
263
|
-
throw new sdk.WERR_INVALID_OPERATION(
|
|
264
|
-
`Hash of serialized transaction doesn't match expected txid`
|
|
265
|
-
)
|
|
220
|
+
throw new sdk.WERR_INVALID_OPERATION(`Hash of serialized transaction doesn't match expected txid`)
|
|
266
221
|
if (!(await storage.getServices()).nLockTimeIsFinal(tx)) {
|
|
267
222
|
throw new sdk.WERR_INVALID_OPERATION(`This transaction is not final.
|
|
268
223
|
Ensure that the transaction meets the rules for being a finalized
|
|
@@ -274,16 +229,13 @@ async function validateCommitNewTxToStorageArgs(
|
|
|
274
229
|
partial: { userId, reference: params.reference }
|
|
275
230
|
})
|
|
276
231
|
)
|
|
277
|
-
if (!transaction.isOutgoing)
|
|
278
|
-
throw new sdk.WERR_INVALID_OPERATION('isOutgoing is not true')
|
|
232
|
+
if (!transaction.isOutgoing) throw new sdk.WERR_INVALID_OPERATION('isOutgoing is not true')
|
|
279
233
|
if (!transaction.inputBEEF) throw new sdk.WERR_INVALID_OPERATION()
|
|
280
234
|
const beef = Beef.fromBinary(asArray(transaction.inputBEEF))
|
|
281
235
|
// TODO: Could check beef validates transaction inputs...
|
|
282
236
|
// Transaction must have unsigned or unprocessed status
|
|
283
237
|
if (transaction.status !== 'unsigned' && transaction.status !== 'unprocessed')
|
|
284
|
-
throw new sdk.WERR_INVALID_OPERATION(
|
|
285
|
-
`invalid transaction status ${transaction.status}`
|
|
286
|
-
)
|
|
238
|
+
throw new sdk.WERR_INVALID_OPERATION(`invalid transaction status ${transaction.status}`)
|
|
287
239
|
const transactionId = verifyId(transaction.transactionId)
|
|
288
240
|
const outputOutputs = await storage.findOutputs({
|
|
289
241
|
partial: { userId, transactionId }
|
|
@@ -292,28 +244,18 @@ async function validateCommitNewTxToStorageArgs(
|
|
|
292
244
|
partial: { userId, spentBy: transactionId }
|
|
293
245
|
})
|
|
294
246
|
|
|
295
|
-
const commission = verifyOneOrNone(
|
|
296
|
-
await storage.findCommissions({ partial: { transactionId, userId } })
|
|
297
|
-
)
|
|
247
|
+
const commission = verifyOneOrNone(await storage.findCommissions({ partial: { transactionId, userId } }))
|
|
298
248
|
if (storage.commissionSatoshis > 0) {
|
|
299
249
|
// A commission is required...
|
|
300
250
|
if (!commission) throw new sdk.WERR_INTERNAL()
|
|
301
251
|
const commissionValid = tx.outputs.some(
|
|
302
|
-
x =>
|
|
303
|
-
x.satoshis === commission.satoshis &&
|
|
304
|
-
x.lockingScript.toHex() === asString(commission.lockingScript!)
|
|
252
|
+
x => x.satoshis === commission.satoshis && x.lockingScript.toHex() === asString(commission.lockingScript!)
|
|
305
253
|
)
|
|
306
254
|
if (!commissionValid)
|
|
307
|
-
throw new sdk.WERR_INVALID_OPERATION(
|
|
308
|
-
'Transaction did not include an output to cover service fee.'
|
|
309
|
-
)
|
|
255
|
+
throw new sdk.WERR_INVALID_OPERATION('Transaction did not include an output to cover service fee.')
|
|
310
256
|
}
|
|
311
257
|
|
|
312
|
-
const req = EntityProvenTxReq.fromTxid(
|
|
313
|
-
params.txid,
|
|
314
|
-
params.rawTx,
|
|
315
|
-
transaction.inputBEEF
|
|
316
|
-
)
|
|
258
|
+
const req = EntityProvenTxReq.fromTxid(params.txid, params.rawTx, transaction.inputBEEF)
|
|
317
259
|
req.addNotifyTransactionId(transactionId)
|
|
318
260
|
|
|
319
261
|
// "Processing" a transaction is the final step of creating a new one.
|
|
@@ -330,10 +272,8 @@ async function validateCommitNewTxToStorageArgs(
|
|
|
330
272
|
// !isNoSend && !isDelayed unprocessed unprocessed sending/unmined sending/unproven This is the only case that sends immediately.
|
|
331
273
|
let postStatus: ReqTxStatus | undefined = undefined
|
|
332
274
|
let status: ReqTxStatus
|
|
333
|
-
if (params.isNoSend && !params.isSendWith)
|
|
334
|
-
|
|
335
|
-
else if (!params.isNoSend && params.isDelayed)
|
|
336
|
-
status = { req: 'unsent', tx: 'unprocessed' }
|
|
275
|
+
if (params.isNoSend && !params.isSendWith) status = { req: 'nosend', tx: 'nosend' }
|
|
276
|
+
else if (!params.isNoSend && params.isDelayed) status = { req: 'unsent', tx: 'unprocessed' }
|
|
337
277
|
else if (!params.isNoSend && !params.isDelayed) {
|
|
338
278
|
status = { req: 'unprocessed', tx: 'unprocessed' }
|
|
339
279
|
postStatus = { req: 'unmined', tx: 'unproven' }
|
|
@@ -374,9 +314,7 @@ async function validateCommitNewTxToStorageArgs(
|
|
|
374
314
|
for (const o of vargs.outputOutputs) {
|
|
375
315
|
const vout = verifyInteger(o.vout)
|
|
376
316
|
const offset = vargs.txScriptOffsets.outputs[vout]
|
|
377
|
-
const rawTxScript = asString(
|
|
378
|
-
vargs.rawTx.slice(offset.offset, offset.offset + offset.length)
|
|
379
|
-
)
|
|
317
|
+
const rawTxScript = asString(vargs.rawTx.slice(offset.offset, offset.offset + offset.length))
|
|
380
318
|
if (o.lockingScript && rawTxScript !== asString(o.lockingScript))
|
|
381
319
|
throw new sdk.WERR_INVALID_OPERATION(
|
|
382
320
|
`rawTx output locking script for vout ${vout} not equal to expected output script.`
|
|
@@ -417,10 +355,7 @@ async function commitNewTxToStorage(
|
|
|
417
355
|
let req: EntityProvenTxReq | undefined
|
|
418
356
|
|
|
419
357
|
await storage.transaction(async trx => {
|
|
420
|
-
log = stampLog(
|
|
421
|
-
log,
|
|
422
|
-
`... storage commitNewTxToStorage storage transaction start`
|
|
423
|
-
)
|
|
358
|
+
log = stampLog(log, `... storage commitNewTxToStorage storage transaction start`)
|
|
424
359
|
|
|
425
360
|
// Create initial 'nosend' proven_tx_req record to store signed, valid rawTx and input beef
|
|
426
361
|
req = await vargs.req.insertOrMerge(storage, trx)
|
|
@@ -433,22 +368,12 @@ async function commitNewTxToStorage(
|
|
|
433
368
|
|
|
434
369
|
log = stampLog(log, `... storage commitNewTxToStorage outputs updated`)
|
|
435
370
|
|
|
436
|
-
await storage.updateTransaction(
|
|
437
|
-
vargs.transactionId,
|
|
438
|
-
vargs.transactionUpdate,
|
|
439
|
-
trx
|
|
440
|
-
)
|
|
371
|
+
await storage.updateTransaction(vargs.transactionId, vargs.transactionUpdate, trx)
|
|
441
372
|
|
|
442
|
-
log = stampLog(
|
|
443
|
-
log,
|
|
444
|
-
`... storage commitNewTxToStorage storage transaction end`
|
|
445
|
-
)
|
|
373
|
+
log = stampLog(log, `... storage commitNewTxToStorage storage transaction end`)
|
|
446
374
|
})
|
|
447
375
|
|
|
448
|
-
log = stampLog(
|
|
449
|
-
log,
|
|
450
|
-
`... storage commitNewTxToStorage storage transaction await done`
|
|
451
|
-
)
|
|
376
|
+
log = stampLog(log, `... storage commitNewTxToStorage storage transaction await done`)
|
|
452
377
|
|
|
453
378
|
const r: CommitNewTxResults = {
|
|
454
379
|
req: verifyTruthy(req),
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import { Beef } from '@bsv/sdk'
|
|
2
2
|
import { Knex } from 'knex'
|
|
3
|
-
import {
|
|
4
|
-
TableCommission,
|
|
5
|
-
TableOutput,
|
|
6
|
-
TableOutputTagMap,
|
|
7
|
-
TableTransaction,
|
|
8
|
-
TableTxLabelMap
|
|
9
|
-
} from '../index.client'
|
|
3
|
+
import { TableCommission, TableOutput, TableOutputTagMap, TableTransaction, TableTxLabelMap } from '../index.client'
|
|
10
4
|
import { sdk } from '../../index.client'
|
|
11
5
|
import { StorageKnex } from '../StorageKnex'
|
|
12
6
|
|
|
@@ -18,9 +12,7 @@ export async function purgeData(
|
|
|
18
12
|
const r: sdk.PurgeResults = { count: 0, log: '' }
|
|
19
13
|
const defaultAge = 1000 * 60 * 60 * 24 * 14
|
|
20
14
|
|
|
21
|
-
const runPurgeQuery = async <T extends object>(
|
|
22
|
-
pq: PurgeQuery
|
|
23
|
-
): Promise<void> => {
|
|
15
|
+
const runPurgeQuery = async <T extends object>(pq: PurgeQuery): Promise<void> => {
|
|
24
16
|
try {
|
|
25
17
|
pq.sql = pq.q.toString()
|
|
26
18
|
const count = await pq.q
|
|
@@ -72,10 +64,7 @@ export async function purgeData(
|
|
|
72
64
|
if (completedReqIds.length > 0) {
|
|
73
65
|
qs.push({
|
|
74
66
|
log: 'completed proven_tx_reqs deleted',
|
|
75
|
-
q: storage
|
|
76
|
-
.toDb(trx)('proven_tx_reqs')
|
|
77
|
-
.whereIn('provenTxReqId', completedReqIds)
|
|
78
|
-
.delete()
|
|
67
|
+
q: storage.toDb(trx)('proven_tx_reqs').whereIn('provenTxReqId', completedReqIds).delete()
|
|
79
68
|
})
|
|
80
69
|
}
|
|
81
70
|
|
|
@@ -107,10 +96,7 @@ export async function purgeData(
|
|
|
107
96
|
if (invalidReqIds.length > 0)
|
|
108
97
|
qs.push({
|
|
109
98
|
log: 'invalid proven_tx_reqs deleted',
|
|
110
|
-
q: storage
|
|
111
|
-
.toDb(trx)('proven_tx_reqs')
|
|
112
|
-
.whereIn('provenTxReqId', invalidReqIds)
|
|
113
|
-
.delete()
|
|
99
|
+
q: storage.toDb(trx)('proven_tx_reqs').whereIn('provenTxReqId', invalidReqIds).delete()
|
|
114
100
|
})
|
|
115
101
|
|
|
116
102
|
const doubleSpendReqs = await storage
|
|
@@ -122,10 +108,7 @@ export async function purgeData(
|
|
|
122
108
|
if (doubleSpendReqIds.length > 0)
|
|
123
109
|
qs.push({
|
|
124
110
|
log: 'doubleSpend proven_tx_reqs deleted',
|
|
125
|
-
q: storage
|
|
126
|
-
.toDb(trx)('proven_tx_reqs')
|
|
127
|
-
.whereIn('provenTxReqId', doubleSpendReqIds)
|
|
128
|
-
.delete()
|
|
111
|
+
q: storage.toDb(trx)('proven_tx_reqs').whereIn('provenTxReqId', doubleSpendReqIds).delete()
|
|
129
112
|
})
|
|
130
113
|
|
|
131
114
|
for (const q of qs) await runPurgeQuery(q)
|
|
@@ -173,9 +156,7 @@ export async function purgeData(
|
|
|
173
156
|
log: 'spent outputs no longer tracked by spentBy',
|
|
174
157
|
q: storage
|
|
175
158
|
.toDb(trx)<TableOutput>('outputs')
|
|
176
|
-
.update(
|
|
177
|
-
storage.validatePartialForUpdate(update, undefined, ['spendable'])
|
|
178
|
-
)
|
|
159
|
+
.update(storage.validatePartialForUpdate(update, undefined, ['spendable']))
|
|
179
160
|
.where('spendable', false)
|
|
180
161
|
.whereIn('spentBy', spentTxIds)
|
|
181
162
|
})
|
|
@@ -219,34 +200,22 @@ export async function purgeData(
|
|
|
219
200
|
if (outputIds.length > 0) {
|
|
220
201
|
qs.push({
|
|
221
202
|
log: `${reason} output_tags_map deleted`,
|
|
222
|
-
q: storage
|
|
223
|
-
.toDb(trx)<TableOutputTagMap>('output_tags_map')
|
|
224
|
-
.whereIn('outputId', outputIds)
|
|
225
|
-
.delete()
|
|
203
|
+
q: storage.toDb(trx)<TableOutputTagMap>('output_tags_map').whereIn('outputId', outputIds).delete()
|
|
226
204
|
})
|
|
227
205
|
qs.push({
|
|
228
206
|
log: `${reason} outputs deleted`,
|
|
229
|
-
q: storage
|
|
230
|
-
.toDb(trx)<TableOutput>('outputs')
|
|
231
|
-
.whereIn('outputId', outputIds)
|
|
232
|
-
.delete()
|
|
207
|
+
q: storage.toDb(trx)<TableOutput>('outputs').whereIn('outputId', outputIds).delete()
|
|
233
208
|
})
|
|
234
209
|
}
|
|
235
210
|
|
|
236
211
|
qs.push({
|
|
237
212
|
log: `${reason} tx_labels_map deleted`,
|
|
238
|
-
q: storage
|
|
239
|
-
.toDb(trx)<TableTxLabelMap>('tx_labels_map')
|
|
240
|
-
.whereIn('transactionId', transactionIds)
|
|
241
|
-
.delete()
|
|
213
|
+
q: storage.toDb(trx)<TableTxLabelMap>('tx_labels_map').whereIn('transactionId', transactionIds).delete()
|
|
242
214
|
})
|
|
243
215
|
|
|
244
216
|
qs.push({
|
|
245
217
|
log: `${reason} commissions deleted`,
|
|
246
|
-
q: storage
|
|
247
|
-
.toDb(trx)<TableCommission>('commissions')
|
|
248
|
-
.whereIn('transactionId', transactionIds)
|
|
249
|
-
.delete()
|
|
218
|
+
q: storage.toDb(trx)<TableCommission>('commissions').whereIn('transactionId', transactionIds).delete()
|
|
250
219
|
})
|
|
251
220
|
|
|
252
221
|
if (markNotSpentBy) {
|
|
@@ -261,10 +230,7 @@ export async function purgeData(
|
|
|
261
230
|
|
|
262
231
|
qs.push({
|
|
263
232
|
log: `${reason} transactions deleted`,
|
|
264
|
-
q: storage
|
|
265
|
-
.toDb(trx)<TableTransaction>('transactions')
|
|
266
|
-
.whereIn('transactionId', transactionIds)
|
|
267
|
-
.delete()
|
|
233
|
+
q: storage.toDb(trx)<TableTransaction>('transactions').whereIn('transactionId', transactionIds).delete()
|
|
268
234
|
})
|
|
269
235
|
}
|
|
270
236
|
}
|
|
@@ -10,9 +10,7 @@ export async function reviewStatus(
|
|
|
10
10
|
): Promise<{ log: string }> {
|
|
11
11
|
const r: { log: string } = { log: '' }
|
|
12
12
|
|
|
13
|
-
const runReviewStatusQuery = async <T extends object>(
|
|
14
|
-
pq: ReviewStatusQuery
|
|
15
|
-
): Promise<void> => {
|
|
13
|
+
const runReviewStatusQuery = async <T extends object>(pq: ReviewStatusQuery): Promise<void> => {
|
|
16
14
|
try {
|
|
17
15
|
pq.sql = pq.q.toString()
|
|
18
16
|
const count = await pq.q
|
|
@@ -71,15 +69,11 @@ export async function reviewStatus(
|
|
|
71
69
|
q: k<TableTransaction>('transactions')
|
|
72
70
|
.update({
|
|
73
71
|
status: 'completed',
|
|
74
|
-
provenTxId: k.raw(
|
|
75
|
-
'(SELECT provenTxId FROM proven_txs AS p WHERE transactions.txid = p.txid)'
|
|
76
|
-
)
|
|
72
|
+
provenTxId: k.raw('(SELECT provenTxId FROM proven_txs AS p WHERE transactions.txid = p.txid)')
|
|
77
73
|
})
|
|
78
74
|
.whereNull('provenTxId')
|
|
79
75
|
.whereExists(function () {
|
|
80
|
-
this.select(k.raw(1))
|
|
81
|
-
.from('proven_txs as p')
|
|
82
|
-
.whereRaw('transactions.txid = p.txid')
|
|
76
|
+
this.select(k.raw(1)).from('proven_txs as p').whereRaw('transactions.txid = p.txid')
|
|
83
77
|
})
|
|
84
78
|
})
|
|
85
79
|
|