@bsv/wallet-toolbox 1.1.60 → 1.1.62
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/ARC.test.js +9 -0
- package/out/src/services/__tests/ARC.test.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 +2 -3
- 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 +5 -12
- 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 +39 -31
- 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/ARC.test.ts +14 -1
- 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/processingErrors/arcSuccessError.json +76 -0
- package/src/services/providers/ARC.ts +6 -25
- 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 +15 -69
- 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 +45 -102
- 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
|
@@ -35,33 +35,15 @@ import {
|
|
|
35
35
|
verifyTruthy
|
|
36
36
|
} from '../index.client'
|
|
37
37
|
import { getBeefForTransaction } from './methods/getBeefForTransaction'
|
|
38
|
-
import {
|
|
39
|
-
|
|
40
|
-
GetReqsAndBeefResult,
|
|
41
|
-
processAction
|
|
42
|
-
} from './methods/processAction'
|
|
43
|
-
import {
|
|
44
|
-
attemptToPostReqsToNetwork,
|
|
45
|
-
PostReqsToNetworkResult
|
|
46
|
-
} from './methods/attemptToPostReqsToNetwork'
|
|
38
|
+
import { GetReqsAndBeefDetail, GetReqsAndBeefResult, processAction } from './methods/processAction'
|
|
39
|
+
import { attemptToPostReqsToNetwork, PostReqsToNetworkResult } from './methods/attemptToPostReqsToNetwork'
|
|
47
40
|
import { listCertificates } from './methods/listCertificates'
|
|
48
41
|
import { createAction } from './methods/createAction'
|
|
49
42
|
import { internalizeAction } from './methods/internalizeAction'
|
|
50
|
-
import {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
import {
|
|
55
|
-
EntityProvenTx,
|
|
56
|
-
EntityProvenTxReq,
|
|
57
|
-
EntitySyncState,
|
|
58
|
-
EntityTransaction
|
|
59
|
-
} from './schema/entities'
|
|
60
|
-
|
|
61
|
-
export abstract class StorageProvider
|
|
62
|
-
extends StorageReaderWriter
|
|
63
|
-
implements sdk.WalletStorageProvider
|
|
64
|
-
{
|
|
43
|
+
import { StorageReaderWriter, StorageReaderWriterOptions } from './StorageReaderWriter'
|
|
44
|
+
import { EntityProvenTx, EntityProvenTxReq, EntitySyncState, EntityTransaction } from './schema/entities'
|
|
45
|
+
|
|
46
|
+
export abstract class StorageProvider extends StorageReaderWriter implements sdk.WalletStorageProvider {
|
|
65
47
|
isDirty = false
|
|
66
48
|
_services?: sdk.WalletServices
|
|
67
49
|
feeModel: sdk.StorageFeeModel
|
|
@@ -92,15 +74,9 @@ export abstract class StorageProvider
|
|
|
92
74
|
this.commissionSatoshis = options.commissionSatoshis
|
|
93
75
|
}
|
|
94
76
|
|
|
95
|
-
abstract reviewStatus(args: {
|
|
96
|
-
agedLimit: Date
|
|
97
|
-
trx?: sdk.TrxToken
|
|
98
|
-
}): Promise<{ log: string }>
|
|
77
|
+
abstract reviewStatus(args: { agedLimit: Date; trx?: sdk.TrxToken }): Promise<{ log: string }>
|
|
99
78
|
|
|
100
|
-
abstract purgeData(
|
|
101
|
-
params: sdk.PurgeParams,
|
|
102
|
-
trx?: sdk.TrxToken
|
|
103
|
-
): Promise<sdk.PurgeResults>
|
|
79
|
+
abstract purgeData(params: sdk.PurgeParams, trx?: sdk.TrxToken): Promise<sdk.PurgeResults>
|
|
104
80
|
|
|
105
81
|
abstract allocateChangeInput(
|
|
106
82
|
userId: number,
|
|
@@ -111,10 +87,7 @@ export abstract class StorageProvider
|
|
|
111
87
|
transactionId: number
|
|
112
88
|
): Promise<TableOutput | undefined>
|
|
113
89
|
|
|
114
|
-
abstract getProvenOrRawTx(
|
|
115
|
-
txid: string,
|
|
116
|
-
trx?: sdk.TrxToken
|
|
117
|
-
): Promise<sdk.ProvenOrRawTx>
|
|
90
|
+
abstract getProvenOrRawTx(txid: string, trx?: sdk.TrxToken): Promise<sdk.ProvenOrRawTx>
|
|
118
91
|
abstract getRawTxOfKnownValidTransaction(
|
|
119
92
|
txid?: string,
|
|
120
93
|
offset?: number,
|
|
@@ -122,46 +95,18 @@ export abstract class StorageProvider
|
|
|
122
95
|
trx?: sdk.TrxToken
|
|
123
96
|
): Promise<number[] | undefined>
|
|
124
97
|
|
|
125
|
-
abstract getLabelsForTransactionId(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
): Promise<
|
|
129
|
-
abstract
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
abstract
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
): Promise<ListActionsResult>
|
|
138
|
-
abstract listOutputs(
|
|
139
|
-
auth: sdk.AuthId,
|
|
140
|
-
args: sdk.ValidListOutputsArgs
|
|
141
|
-
): Promise<ListOutputsResult>
|
|
142
|
-
|
|
143
|
-
abstract countChangeInputs(
|
|
144
|
-
userId: number,
|
|
145
|
-
basketId: number,
|
|
146
|
-
excludeSending: boolean
|
|
147
|
-
): Promise<number>
|
|
148
|
-
|
|
149
|
-
abstract findCertificatesAuth(
|
|
150
|
-
auth: sdk.AuthId,
|
|
151
|
-
args: sdk.FindCertificatesArgs
|
|
152
|
-
): Promise<TableCertificateX[]>
|
|
153
|
-
abstract findOutputBasketsAuth(
|
|
154
|
-
auth: sdk.AuthId,
|
|
155
|
-
args: sdk.FindOutputBasketsArgs
|
|
156
|
-
): Promise<TableOutputBasket[]>
|
|
157
|
-
abstract findOutputsAuth(
|
|
158
|
-
auth: sdk.AuthId,
|
|
159
|
-
args: sdk.FindOutputsArgs
|
|
160
|
-
): Promise<TableOutput[]>
|
|
161
|
-
abstract insertCertificateAuth(
|
|
162
|
-
auth: sdk.AuthId,
|
|
163
|
-
certificate: TableCertificateX
|
|
164
|
-
): Promise<number>
|
|
98
|
+
abstract getLabelsForTransactionId(transactionId?: number, trx?: sdk.TrxToken): Promise<TableTxLabel[]>
|
|
99
|
+
abstract getTagsForOutputId(outputId: number, trx?: sdk.TrxToken): Promise<TableOutputTag[]>
|
|
100
|
+
|
|
101
|
+
abstract listActions(auth: sdk.AuthId, args: sdk.ValidListActionsArgs): Promise<ListActionsResult>
|
|
102
|
+
abstract listOutputs(auth: sdk.AuthId, args: sdk.ValidListOutputsArgs): Promise<ListOutputsResult>
|
|
103
|
+
|
|
104
|
+
abstract countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number>
|
|
105
|
+
|
|
106
|
+
abstract findCertificatesAuth(auth: sdk.AuthId, args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]>
|
|
107
|
+
abstract findOutputBasketsAuth(auth: sdk.AuthId, args: sdk.FindOutputBasketsArgs): Promise<TableOutputBasket[]>
|
|
108
|
+
abstract findOutputsAuth(auth: sdk.AuthId, args: sdk.FindOutputsArgs): Promise<TableOutput[]>
|
|
109
|
+
abstract insertCertificateAuth(auth: sdk.AuthId, certificate: TableCertificateX): Promise<number>
|
|
165
110
|
|
|
166
111
|
override isStorageProvider(): boolean {
|
|
167
112
|
return true
|
|
@@ -171,17 +116,12 @@ export abstract class StorageProvider
|
|
|
171
116
|
this._services = v
|
|
172
117
|
}
|
|
173
118
|
getServices(): sdk.WalletServices {
|
|
174
|
-
if (!this._services)
|
|
175
|
-
throw new sdk.WERR_INVALID_OPERATION('Must setServices first.')
|
|
119
|
+
if (!this._services) throw new sdk.WERR_INVALID_OPERATION('Must setServices first.')
|
|
176
120
|
return this._services
|
|
177
121
|
}
|
|
178
122
|
|
|
179
|
-
async abortAction(
|
|
180
|
-
auth
|
|
181
|
-
args: AbortActionArgs
|
|
182
|
-
): Promise<AbortActionResult> {
|
|
183
|
-
if (!auth.userId)
|
|
184
|
-
throw new sdk.WERR_INVALID_PARAMETER('auth.userId', 'valid')
|
|
123
|
+
async abortAction(auth: sdk.AuthId, args: AbortActionArgs): Promise<AbortActionResult> {
|
|
124
|
+
if (!auth.userId) throw new sdk.WERR_INVALID_PARAMETER('auth.userId', 'valid')
|
|
185
125
|
|
|
186
126
|
const userId = auth.userId
|
|
187
127
|
let reference: string | undefined = args.reference
|
|
@@ -207,28 +147,13 @@ export abstract class StorageProvider
|
|
|
207
147
|
})
|
|
208
148
|
)
|
|
209
149
|
}
|
|
210
|
-
const unAbortableStatus: sdk.TransactionStatus[] = [
|
|
211
|
-
|
|
212
|
-
'failed',
|
|
213
|
-
'sending',
|
|
214
|
-
'unproven'
|
|
215
|
-
]
|
|
216
|
-
if (
|
|
217
|
-
!tx ||
|
|
218
|
-
!tx.isOutgoing ||
|
|
219
|
-
-1 < unAbortableStatus.findIndex(s => s === tx.status)
|
|
220
|
-
)
|
|
150
|
+
const unAbortableStatus: sdk.TransactionStatus[] = ['completed', 'failed', 'sending', 'unproven']
|
|
151
|
+
if (!tx || !tx.isOutgoing || -1 < unAbortableStatus.findIndex(s => s === tx.status))
|
|
221
152
|
throw new sdk.WERR_INVALID_PARAMETER(
|
|
222
153
|
'reference',
|
|
223
154
|
'an inprocess, outgoing action that has not been signed and shared to the network.'
|
|
224
155
|
)
|
|
225
|
-
await this.updateTransactionStatus(
|
|
226
|
-
'failed',
|
|
227
|
-
tx.transactionId,
|
|
228
|
-
userId,
|
|
229
|
-
reference,
|
|
230
|
-
trx
|
|
231
|
-
)
|
|
156
|
+
await this.updateTransactionStatus('failed', tx.transactionId, userId, reference, trx)
|
|
232
157
|
if (tx.txid) {
|
|
233
158
|
const req = await EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx)
|
|
234
159
|
if (req) {
|
|
@@ -245,10 +170,7 @@ export abstract class StorageProvider
|
|
|
245
170
|
return r
|
|
246
171
|
}
|
|
247
172
|
|
|
248
|
-
async internalizeAction(
|
|
249
|
-
auth: sdk.AuthId,
|
|
250
|
-
args: InternalizeActionArgs
|
|
251
|
-
): Promise<InternalizeActionResult> {
|
|
173
|
+
async internalizeAction(auth: sdk.AuthId, args: InternalizeActionArgs): Promise<InternalizeActionResult> {
|
|
252
174
|
return await internalizeAction(this, auth, args)
|
|
253
175
|
}
|
|
254
176
|
|
|
@@ -278,28 +200,14 @@ export abstract class StorageProvider
|
|
|
278
200
|
}
|
|
279
201
|
r.details.push(d)
|
|
280
202
|
try {
|
|
281
|
-
d.proven = verifyOneOrNone(
|
|
282
|
-
await this.findProvenTxs({ partial: { txid }, trx })
|
|
283
|
-
)
|
|
203
|
+
d.proven = verifyOneOrNone(await this.findProvenTxs({ partial: { txid }, trx }))
|
|
284
204
|
if (d.proven) d.status = 'alreadySent'
|
|
285
205
|
else {
|
|
286
|
-
const alreadySentStatus = [
|
|
287
|
-
|
|
288
|
-
'callback',
|
|
289
|
-
'unconfirmed',
|
|
290
|
-
'completed'
|
|
291
|
-
]
|
|
292
|
-
const readyToSendStatus = [
|
|
293
|
-
'sending',
|
|
294
|
-
'unsent',
|
|
295
|
-
'nosend',
|
|
296
|
-
'unprocessed'
|
|
297
|
-
]
|
|
206
|
+
const alreadySentStatus = ['unmined', 'callback', 'unconfirmed', 'completed']
|
|
207
|
+
const readyToSendStatus = ['sending', 'unsent', 'nosend', 'unprocessed']
|
|
298
208
|
const errorStatus = ['unknown', 'nonfinal', 'invalid', 'doubleSpend']
|
|
299
209
|
|
|
300
|
-
d.req = verifyOneOrNone(
|
|
301
|
-
await this.findProvenTxReqs({ partial: { txid }, trx })
|
|
302
|
-
)
|
|
210
|
+
d.req = verifyOneOrNone(await this.findProvenTxReqs({ partial: { txid }, trx }))
|
|
303
211
|
if (!d.req) {
|
|
304
212
|
d.status = 'error'
|
|
305
213
|
d.error = `ERR_UNKNOWN_TXID: ${txid} was not found.`
|
|
@@ -319,12 +227,7 @@ export abstract class StorageProvider
|
|
|
319
227
|
}
|
|
320
228
|
|
|
321
229
|
if (d.status === 'readyToSend') {
|
|
322
|
-
await this.mergeReqToBeefToShareExternally(
|
|
323
|
-
d.req!,
|
|
324
|
-
r.beef,
|
|
325
|
-
knownTxids,
|
|
326
|
-
trx
|
|
327
|
-
)
|
|
230
|
+
await this.mergeReqToBeefToShareExternally(d.req!, r.beef, knownTxids, trx)
|
|
328
231
|
}
|
|
329
232
|
}
|
|
330
233
|
} catch (eu: unknown) {
|
|
@@ -342,29 +245,17 @@ export abstract class StorageProvider
|
|
|
342
245
|
trx?: sdk.TrxToken
|
|
343
246
|
): Promise<void> {
|
|
344
247
|
const { rawTx, inputBEEF: beef } = req
|
|
345
|
-
if (!rawTx || !beef)
|
|
346
|
-
throw new sdk.WERR_INTERNAL(`req rawTx and beef must be valid.`)
|
|
248
|
+
if (!rawTx || !beef) throw new sdk.WERR_INTERNAL(`req rawTx and beef must be valid.`)
|
|
347
249
|
mergeToBeef.mergeRawTx(asArray(rawTx))
|
|
348
250
|
mergeToBeef.mergeBeef(asArray(beef))
|
|
349
251
|
const tx = BsvTransaction.fromBinary(asArray(rawTx))
|
|
350
252
|
for (const input of tx.inputs) {
|
|
351
|
-
if (!input.sourceTXID)
|
|
352
|
-
throw new sdk.WERR_INTERNAL(
|
|
353
|
-
`req all transaction inputs must have valid sourceTXID`
|
|
354
|
-
)
|
|
253
|
+
if (!input.sourceTXID) throw new sdk.WERR_INTERNAL(`req all transaction inputs must have valid sourceTXID`)
|
|
355
254
|
const txid = input.sourceTXID
|
|
356
255
|
const btx = mergeToBeef.findTxid(txid)
|
|
357
256
|
if (!btx) {
|
|
358
|
-
if (knownTxids && knownTxids.indexOf(txid) > -1)
|
|
359
|
-
|
|
360
|
-
else
|
|
361
|
-
await this.getValidBeefForKnownTxid(
|
|
362
|
-
txid,
|
|
363
|
-
mergeToBeef,
|
|
364
|
-
undefined,
|
|
365
|
-
knownTxids,
|
|
366
|
-
trx
|
|
367
|
-
)
|
|
257
|
+
if (knownTxids && knownTxids.indexOf(txid) > -1) mergeToBeef.mergeTxidOnly(txid)
|
|
258
|
+
else await this.getValidBeefForKnownTxid(txid, mergeToBeef, undefined, knownTxids, trx)
|
|
368
259
|
}
|
|
369
260
|
}
|
|
370
261
|
}
|
|
@@ -383,26 +274,17 @@ export abstract class StorageProvider
|
|
|
383
274
|
* @param trx
|
|
384
275
|
* @returns
|
|
385
276
|
*/
|
|
386
|
-
async getProvenOrReq(
|
|
387
|
-
txid
|
|
388
|
-
newReq?: TableProvenTxReq,
|
|
389
|
-
trx?: sdk.TrxToken
|
|
390
|
-
): Promise<sdk.StorageProvenOrReq> {
|
|
391
|
-
if (newReq && txid !== newReq.txid)
|
|
392
|
-
throw new sdk.WERR_INVALID_PARAMETER('newReq', `same txid`)
|
|
277
|
+
async getProvenOrReq(txid: string, newReq?: TableProvenTxReq, trx?: sdk.TrxToken): Promise<sdk.StorageProvenOrReq> {
|
|
278
|
+
if (newReq && txid !== newReq.txid) throw new sdk.WERR_INVALID_PARAMETER('newReq', `same txid`)
|
|
393
279
|
|
|
394
280
|
const r: sdk.StorageProvenOrReq = { proven: undefined, req: undefined }
|
|
395
281
|
|
|
396
|
-
r.proven = verifyOneOrNone(
|
|
397
|
-
await this.findProvenTxs({ partial: { txid }, trx })
|
|
398
|
-
)
|
|
282
|
+
r.proven = verifyOneOrNone(await this.findProvenTxs({ partial: { txid }, trx }))
|
|
399
283
|
if (r.proven) return r
|
|
400
284
|
|
|
401
285
|
for (let retry = 0; ; retry++) {
|
|
402
286
|
try {
|
|
403
|
-
r.req = verifyOneOrNone(
|
|
404
|
-
await this.findProvenTxReqs({ partial: { txid }, trx })
|
|
405
|
-
)
|
|
287
|
+
r.req = verifyOneOrNone(await this.findProvenTxReqs({ partial: { txid }, trx }))
|
|
406
288
|
if (!r.req && !newReq) break
|
|
407
289
|
if (!r.req && newReq) {
|
|
408
290
|
await this.insertProvenTxReq(newReq, trx)
|
|
@@ -423,19 +305,10 @@ export abstract class StorageProvider
|
|
|
423
305
|
return r
|
|
424
306
|
}
|
|
425
307
|
|
|
426
|
-
async updateTransactionsStatus(
|
|
427
|
-
transactionIds: number[],
|
|
428
|
-
status: sdk.TransactionStatus
|
|
429
|
-
): Promise<void> {
|
|
308
|
+
async updateTransactionsStatus(transactionIds: number[], status: sdk.TransactionStatus): Promise<void> {
|
|
430
309
|
await this.transaction(async trx => {
|
|
431
310
|
for (const id of transactionIds) {
|
|
432
|
-
await this.updateTransactionStatus(
|
|
433
|
-
status,
|
|
434
|
-
id,
|
|
435
|
-
undefined,
|
|
436
|
-
undefined,
|
|
437
|
-
trx
|
|
438
|
-
)
|
|
311
|
+
await this.updateTransactionStatus(status, id, undefined, undefined, trx)
|
|
439
312
|
}
|
|
440
313
|
})
|
|
441
314
|
}
|
|
@@ -459,9 +332,7 @@ export abstract class StorageProvider
|
|
|
459
332
|
trx?: sdk.TrxToken
|
|
460
333
|
): Promise<void> {
|
|
461
334
|
if (!transactionId && !(userId && reference))
|
|
462
|
-
throw new sdk.WERR_MISSING_PARAMETER(
|
|
463
|
-
'either transactionId or userId and reference'
|
|
464
|
-
)
|
|
335
|
+
throw new sdk.WERR_MISSING_PARAMETER('either transactionId or userId and reference')
|
|
465
336
|
|
|
466
337
|
await this.transaction(async trx => {
|
|
467
338
|
const where: Partial<TableTransaction> = {}
|
|
@@ -469,27 +340,18 @@ export abstract class StorageProvider
|
|
|
469
340
|
if (userId) where.userId = userId
|
|
470
341
|
if (reference) where.reference = reference
|
|
471
342
|
|
|
472
|
-
const tx = verifyOne(
|
|
473
|
-
await this.findTransactions({ partial: where, noRawTx: true, trx })
|
|
474
|
-
)
|
|
343
|
+
const tx = verifyOne(await this.findTransactions({ partial: where, noRawTx: true, trx }))
|
|
475
344
|
|
|
476
345
|
//if (tx.status === status)
|
|
477
346
|
// no change required. Assume inputs and outputs spendable and spentBy are valid for status.
|
|
478
347
|
//return
|
|
479
348
|
|
|
480
349
|
// Once completed, this method cannot be used to "uncomplete" transaction.
|
|
481
|
-
if (
|
|
482
|
-
(status
|
|
483
|
-
tx.provenTxId
|
|
484
|
-
)
|
|
485
|
-
throw new sdk.WERR_INVALID_OPERATION(
|
|
486
|
-
'The status of a "completed" transaction cannot be changed.'
|
|
487
|
-
)
|
|
350
|
+
if ((status !== 'completed' && tx.status === 'completed') || tx.provenTxId)
|
|
351
|
+
throw new sdk.WERR_INVALID_OPERATION('The status of a "completed" transaction cannot be changed.')
|
|
488
352
|
// It is not possible to un-fail a transaction. Information is lost and not recoverable.
|
|
489
353
|
if (status !== 'failed' && tx.status === 'failed')
|
|
490
|
-
throw new sdk.WERR_INVALID_OPERATION(
|
|
491
|
-
`A "failed" transaction may not be un-failed by this method.`
|
|
492
|
-
)
|
|
354
|
+
throw new sdk.WERR_INVALID_OPERATION(`A "failed" transaction may not be un-failed by this method.`)
|
|
493
355
|
|
|
494
356
|
switch (status) {
|
|
495
357
|
case 'failed':
|
|
@@ -501,11 +363,7 @@ export abstract class StorageProvider
|
|
|
501
363
|
for (const input of inputs) {
|
|
502
364
|
// input is a prior output belonging to userId that reference this transaction either by `spentBy`
|
|
503
365
|
// or by txid and vout.
|
|
504
|
-
await this.updateOutput(
|
|
505
|
-
verifyId(input.outputId),
|
|
506
|
-
{ spendable: true, spentBy: undefined },
|
|
507
|
-
trx
|
|
508
|
-
)
|
|
366
|
+
await this.updateOutput(verifyId(input.outputId), { spendable: true, spentBy: undefined }, trx)
|
|
509
367
|
}
|
|
510
368
|
}
|
|
511
369
|
break
|
|
@@ -524,39 +382,24 @@ export abstract class StorageProvider
|
|
|
524
382
|
}, trx)
|
|
525
383
|
}
|
|
526
384
|
|
|
527
|
-
async createAction(
|
|
528
|
-
auth: sdk.AuthId,
|
|
529
|
-
args: sdk.ValidCreateActionArgs
|
|
530
|
-
): Promise<sdk.StorageCreateActionResult> {
|
|
385
|
+
async createAction(auth: sdk.AuthId, args: sdk.ValidCreateActionArgs): Promise<sdk.StorageCreateActionResult> {
|
|
531
386
|
if (!auth.userId) throw new sdk.WERR_UNAUTHORIZED()
|
|
532
387
|
return await createAction(this, auth, args)
|
|
533
388
|
}
|
|
534
|
-
async processAction(
|
|
535
|
-
auth: sdk.AuthId,
|
|
536
|
-
args: sdk.StorageProcessActionArgs
|
|
537
|
-
): Promise<sdk.StorageProcessActionResults> {
|
|
389
|
+
async processAction(auth: sdk.AuthId, args: sdk.StorageProcessActionArgs): Promise<sdk.StorageProcessActionResults> {
|
|
538
390
|
if (!auth.userId) throw new sdk.WERR_UNAUTHORIZED()
|
|
539
391
|
return await processAction(this, auth, args)
|
|
540
392
|
}
|
|
541
393
|
|
|
542
|
-
async attemptToPostReqsToNetwork(
|
|
543
|
-
reqs: EntityProvenTxReq[],
|
|
544
|
-
trx?: sdk.TrxToken
|
|
545
|
-
): Promise<PostReqsToNetworkResult> {
|
|
394
|
+
async attemptToPostReqsToNetwork(reqs: EntityProvenTxReq[], trx?: sdk.TrxToken): Promise<PostReqsToNetworkResult> {
|
|
546
395
|
return await attemptToPostReqsToNetwork(this, reqs, trx)
|
|
547
396
|
}
|
|
548
397
|
|
|
549
|
-
async listCertificates(
|
|
550
|
-
auth: sdk.AuthId,
|
|
551
|
-
args: sdk.ValidListCertificatesArgs
|
|
552
|
-
): Promise<ListCertificatesResult> {
|
|
398
|
+
async listCertificates(auth: sdk.AuthId, args: sdk.ValidListCertificatesArgs): Promise<ListCertificatesResult> {
|
|
553
399
|
return await listCertificates(this, auth, args)
|
|
554
400
|
}
|
|
555
401
|
|
|
556
|
-
async verifyKnownValidTransaction(
|
|
557
|
-
txid: string,
|
|
558
|
-
trx?: sdk.TrxToken
|
|
559
|
-
): Promise<boolean> {
|
|
402
|
+
async verifyKnownValidTransaction(txid: string, trx?: sdk.TrxToken): Promise<boolean> {
|
|
560
403
|
const { proven, rawTx } = await this.getProvenOrRawTx(txid, trx)
|
|
561
404
|
return proven != undefined || rawTx != undefined
|
|
562
405
|
}
|
|
@@ -568,18 +411,8 @@ export abstract class StorageProvider
|
|
|
568
411
|
knownTxids?: string[],
|
|
569
412
|
trx?: sdk.TrxToken
|
|
570
413
|
): Promise<Beef> {
|
|
571
|
-
const beef = await this.getValidBeefForTxid(
|
|
572
|
-
|
|
573
|
-
mergeToBeef,
|
|
574
|
-
trustSelf,
|
|
575
|
-
knownTxids,
|
|
576
|
-
trx
|
|
577
|
-
)
|
|
578
|
-
if (!beef)
|
|
579
|
-
throw new sdk.WERR_INVALID_PARAMETER(
|
|
580
|
-
'txid',
|
|
581
|
-
`${txid} is not known to storage.`
|
|
582
|
-
)
|
|
414
|
+
const beef = await this.getValidBeefForTxid(txid, mergeToBeef, trustSelf, knownTxids, trx)
|
|
415
|
+
if (!beef) throw new sdk.WERR_INVALID_PARAMETER('txid', `${txid} is not known to storage.`)
|
|
583
416
|
return beef
|
|
584
417
|
}
|
|
585
418
|
|
|
@@ -612,16 +445,8 @@ export abstract class StorageProvider
|
|
|
612
445
|
for (const input of tx.inputs) {
|
|
613
446
|
const btx = beef.findTxid(input.sourceTXID!)
|
|
614
447
|
if (!btx) {
|
|
615
|
-
if (knownTxids && knownTxids.indexOf(input.sourceTXID!) > -1)
|
|
616
|
-
|
|
617
|
-
else
|
|
618
|
-
await this.getValidBeefForKnownTxid(
|
|
619
|
-
input.sourceTXID!,
|
|
620
|
-
beef,
|
|
621
|
-
trustSelf,
|
|
622
|
-
knownTxids,
|
|
623
|
-
trx
|
|
624
|
-
)
|
|
448
|
+
if (knownTxids && knownTxids.indexOf(input.sourceTXID!) > -1) beef.mergeTxidOnly(input.sourceTXID!)
|
|
449
|
+
else await this.getValidBeefForKnownTxid(input.sourceTXID!, beef, trustSelf, knownTxids, trx)
|
|
625
450
|
}
|
|
626
451
|
}
|
|
627
452
|
return beef
|
|
@@ -631,26 +456,15 @@ export abstract class StorageProvider
|
|
|
631
456
|
return undefined
|
|
632
457
|
}
|
|
633
458
|
|
|
634
|
-
async getBeefForTransaction(
|
|
635
|
-
txid: string,
|
|
636
|
-
options: sdk.StorageGetBeefOptions
|
|
637
|
-
): Promise<Beef> {
|
|
459
|
+
async getBeefForTransaction(txid: string, options: sdk.StorageGetBeefOptions): Promise<Beef> {
|
|
638
460
|
return await getBeefForTransaction(this, txid, options)
|
|
639
461
|
}
|
|
640
462
|
|
|
641
|
-
async findMonitorEventById(
|
|
642
|
-
|
|
643
|
-
trx?: sdk.TrxToken
|
|
644
|
-
): Promise<TableMonitorEvent | undefined> {
|
|
645
|
-
return verifyOneOrNone(
|
|
646
|
-
await this.findMonitorEvents({ partial: { id }, trx })
|
|
647
|
-
)
|
|
463
|
+
async findMonitorEventById(id: number, trx?: sdk.TrxToken): Promise<TableMonitorEvent | undefined> {
|
|
464
|
+
return verifyOneOrNone(await this.findMonitorEvents({ partial: { id }, trx }))
|
|
648
465
|
}
|
|
649
466
|
|
|
650
|
-
async relinquishCertificate(
|
|
651
|
-
auth: sdk.AuthId,
|
|
652
|
-
args: RelinquishCertificateArgs
|
|
653
|
-
): Promise<number> {
|
|
467
|
+
async relinquishCertificate(auth: sdk.AuthId, args: RelinquishCertificateArgs): Promise<number> {
|
|
654
468
|
const vargs = sdk.validateRelinquishCertificateArgs(args)
|
|
655
469
|
const cert = verifyOne(
|
|
656
470
|
await this.findCertificates({
|
|
@@ -666,25 +480,15 @@ export abstract class StorageProvider
|
|
|
666
480
|
})
|
|
667
481
|
}
|
|
668
482
|
|
|
669
|
-
async relinquishOutput(
|
|
670
|
-
auth: sdk.AuthId,
|
|
671
|
-
args: RelinquishOutputArgs
|
|
672
|
-
): Promise<number> {
|
|
483
|
+
async relinquishOutput(auth: sdk.AuthId, args: RelinquishOutputArgs): Promise<number> {
|
|
673
484
|
const vargs = sdk.validateRelinquishOutputArgs(args)
|
|
674
485
|
const { txid, vout } = sdk.parseWalletOutpoint(vargs.output)
|
|
675
|
-
const output = verifyOne(
|
|
676
|
-
await this.findOutputs({ partial: { txid, vout } })
|
|
677
|
-
)
|
|
486
|
+
const output = verifyOne(await this.findOutputs({ partial: { txid, vout } }))
|
|
678
487
|
return await this.updateOutput(output.outputId, { basketId: undefined })
|
|
679
488
|
}
|
|
680
489
|
|
|
681
|
-
async processSyncChunk(
|
|
682
|
-
|
|
683
|
-
chunk: sdk.SyncChunk
|
|
684
|
-
): Promise<sdk.ProcessSyncChunkResult> {
|
|
685
|
-
const user = verifyTruthy(
|
|
686
|
-
await this.findUserByIdentityKey(args.identityKey)
|
|
687
|
-
)
|
|
490
|
+
async processSyncChunk(args: sdk.RequestSyncChunkArgs, chunk: sdk.SyncChunk): Promise<sdk.ProcessSyncChunkResult> {
|
|
491
|
+
const user = verifyTruthy(await this.findUserByIdentityKey(args.identityKey))
|
|
688
492
|
const ss = new EntitySyncState(
|
|
689
493
|
verifyOne(
|
|
690
494
|
await this.findSyncStates({
|
|
@@ -719,9 +523,7 @@ export abstract class StorageProvider
|
|
|
719
523
|
let proven: EntityProvenTx
|
|
720
524
|
if (req.provenTxId) {
|
|
721
525
|
// Someone beat us to it, grab what we need for results...
|
|
722
|
-
proven = new EntityProvenTx(
|
|
723
|
-
verifyOne(await this.findProvenTxs({ partial: { txid: args.txid } }))
|
|
724
|
-
)
|
|
526
|
+
proven = new EntityProvenTx(verifyOne(await this.findProvenTxs({ partial: { txid: args.txid } })))
|
|
725
527
|
} else {
|
|
726
528
|
let isNew: boolean
|
|
727
529
|
;({ proven, isNew } = await this.transaction(async trx => {
|
|
@@ -760,14 +562,9 @@ export abstract class StorageProvider
|
|
|
760
562
|
})
|
|
761
563
|
req.addHistoryNote({ what: 'notifyTxOfProof', transactionId: id })
|
|
762
564
|
} catch (eu: unknown) {
|
|
763
|
-
const
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
transactionId: id,
|
|
767
|
-
provenTxId: proven.provenTxId,
|
|
768
|
-
code: e.code,
|
|
769
|
-
description: e.description
|
|
770
|
-
})
|
|
565
|
+
const { code, description } = sdk.WalletError.fromUnknown(eu)
|
|
566
|
+
const { provenTxId } = proven
|
|
567
|
+
req.addHistoryNote({ what: 'notifyTxOfProofError', id, provenTxId, code, description })
|
|
771
568
|
}
|
|
772
569
|
}
|
|
773
570
|
await req.updateStorageDynamicProperties(this)
|
|
@@ -795,9 +592,7 @@ export abstract class StorageProvider
|
|
|
795
592
|
const invalidSpendableOutputs: TableOutput[] = []
|
|
796
593
|
const users = await this.findUsers({ partial: {} })
|
|
797
594
|
for (const { userId } of users) {
|
|
798
|
-
const defaultBasket = verifyOne(
|
|
799
|
-
await this.findOutputBaskets({ partial: { userId, name: 'default' } })
|
|
800
|
-
)
|
|
595
|
+
const defaultBasket = verifyOne(await this.findOutputBaskets({ partial: { userId, name: 'default' } }))
|
|
801
596
|
const where: Partial<TableOutput> = {
|
|
802
597
|
userId,
|
|
803
598
|
basketId: defaultBasket.basketId,
|
|
@@ -810,21 +605,13 @@ export abstract class StorageProvider
|
|
|
810
605
|
if (o.spendable) {
|
|
811
606
|
let ok = false
|
|
812
607
|
if (o.lockingScript && o.lockingScript.length > 0) {
|
|
813
|
-
const r = await this.getServices().getUtxoStatus(
|
|
814
|
-
asString(o.lockingScript),
|
|
815
|
-
'script'
|
|
816
|
-
)
|
|
608
|
+
const r = await this.getServices().getUtxoStatus(asString(o.lockingScript), 'script')
|
|
817
609
|
if (r.status === 'success' && r.isUtxo && r.details?.length > 0) {
|
|
818
610
|
const tx = await this.findTransactionById(o.transactionId)
|
|
819
611
|
if (
|
|
820
612
|
tx &&
|
|
821
613
|
tx.txid &&
|
|
822
|
-
r.details.some(
|
|
823
|
-
d =>
|
|
824
|
-
d.txid === tx.txid &&
|
|
825
|
-
d.satoshis === o.satoshis &&
|
|
826
|
-
d.index === o.vout
|
|
827
|
-
)
|
|
614
|
+
r.details.some(d => d.txid === tx.txid && d.satoshis === o.satoshis && d.index === o.vout)
|
|
828
615
|
) {
|
|
829
616
|
ok = true
|
|
830
617
|
}
|
|
@@ -872,16 +659,13 @@ export interface StorageProviderOptions extends StorageReaderWriterOptions {
|
|
|
872
659
|
commissionPubKeyHex?: PubKeyHex
|
|
873
660
|
}
|
|
874
661
|
|
|
875
|
-
export function validateStorageFeeModel(
|
|
876
|
-
v?: sdk.StorageFeeModel
|
|
877
|
-
): sdk.StorageFeeModel {
|
|
662
|
+
export function validateStorageFeeModel(v?: sdk.StorageFeeModel): sdk.StorageFeeModel {
|
|
878
663
|
const r: sdk.StorageFeeModel = {
|
|
879
664
|
model: 'sat/kb',
|
|
880
665
|
value: 1
|
|
881
666
|
}
|
|
882
667
|
if (typeof v === 'object') {
|
|
883
|
-
if (v.model !== 'sat/kb')
|
|
884
|
-
throw new sdk.WERR_INVALID_PARAMETER('StorageFeeModel.model', `"sat/kb"`)
|
|
668
|
+
if (v.model !== 'sat/kb') throw new sdk.WERR_INVALID_PARAMETER('StorageFeeModel.model', `"sat/kb"`)
|
|
885
669
|
if (typeof v.value === 'number') {
|
|
886
670
|
r.value = v.value
|
|
887
671
|
}
|