@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
package/src/sdk/WalletError.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ErrorCodeString10To40Bytes,
|
|
3
|
-
ErrorDescriptionString20To200Bytes,
|
|
4
|
-
WalletErrorObject
|
|
5
|
-
} from '@bsv/sdk'
|
|
1
|
+
import { ErrorCodeString10To40Bytes, ErrorDescriptionString20To200Bytes, WalletErrorObject } from '@bsv/sdk'
|
|
6
2
|
|
|
7
3
|
/**
|
|
8
4
|
* Derived class constructors should use the derived class name as the value for `name`,
|
|
@@ -64,8 +60,7 @@ export class WalletError extends Error implements WalletErrorObject {
|
|
|
64
60
|
let stack: string | undefined
|
|
65
61
|
const details: Record<string, string> = {}
|
|
66
62
|
if (err !== null && typeof err === 'object') {
|
|
67
|
-
if (err['name'] === 'Error' || err['name'] === 'FetchError')
|
|
68
|
-
name = err['code'] || err['status'] || 'WERR_UNKNOWN'
|
|
63
|
+
if (err['name'] === 'Error' || err['name'] === 'FetchError') name = err['code'] || err['status'] || 'WERR_UNKNOWN'
|
|
69
64
|
else name = err['name'] || err['code'] || err['status'] || 'WERR_UNKNOWN'
|
|
70
65
|
if (typeof name !== 'string') name = 'WERR_UNKNOWN'
|
|
71
66
|
|
|
@@ -75,23 +70,12 @@ export class WalletError extends Error implements WalletErrorObject {
|
|
|
75
70
|
if (typeof err['stack'] === 'string') stack = err['stack']
|
|
76
71
|
|
|
77
72
|
if (typeof err['sql'] === 'string') details.sql = err['sql']
|
|
78
|
-
if (typeof err['sqlMessage'] === 'string')
|
|
79
|
-
details.sqlMessage = err['sqlMessage']
|
|
73
|
+
if (typeof err['sqlMessage'] === 'string') details.sqlMessage = err['sqlMessage']
|
|
80
74
|
}
|
|
81
|
-
const e = new WalletError(
|
|
82
|
-
name,
|
|
83
|
-
message,
|
|
84
|
-
stack,
|
|
85
|
-
Object.keys(details).length > 0 ? details : undefined
|
|
86
|
-
)
|
|
75
|
+
const e = new WalletError(name, message, stack, Object.keys(details).length > 0 ? details : undefined)
|
|
87
76
|
if (err !== null && typeof err === 'object') {
|
|
88
77
|
for (const [key, value] of Object.entries(err)) {
|
|
89
|
-
if (
|
|
90
|
-
key !== 'walletError' &&
|
|
91
|
-
typeof value !== 'string' &&
|
|
92
|
-
typeof value !== 'number' &&
|
|
93
|
-
!Array.isArray(value)
|
|
94
|
-
)
|
|
78
|
+
if (key !== 'walletError' && typeof value !== 'string' && typeof value !== 'number' && !Array.isArray(value))
|
|
95
79
|
continue
|
|
96
80
|
switch (key) {
|
|
97
81
|
case 'walletError':
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ArcConfig,
|
|
3
|
-
Beef,
|
|
4
|
-
Transaction as BsvTransaction,
|
|
5
|
-
ChainTracker,
|
|
6
|
-
MerklePath
|
|
7
|
-
} from '@bsv/sdk'
|
|
1
|
+
import { ArcConfig, Beef, Transaction as BsvTransaction, ChainTracker, MerklePath } from '@bsv/sdk'
|
|
8
2
|
import { sdk } from '../index.client'
|
|
9
3
|
import { ChaintracksServiceClient } from '../services/chaintracker'
|
|
10
4
|
/**
|
|
@@ -42,10 +36,7 @@ export interface WalletServices {
|
|
|
42
36
|
/**
|
|
43
37
|
* Approximate exchange rate currency per base.
|
|
44
38
|
*/
|
|
45
|
-
getFiatExchangeRate(
|
|
46
|
-
currency: 'USD' | 'GBP' | 'EUR',
|
|
47
|
-
base?: 'USD' | 'GBP' | 'EUR'
|
|
48
|
-
): Promise<number>
|
|
39
|
+
getFiatExchangeRate(currency: 'USD' | 'GBP' | 'EUR', base?: 'USD' | 'GBP' | 'EUR'): Promise<number>
|
|
49
40
|
|
|
50
41
|
/**
|
|
51
42
|
* Attempts to obtain the raw transaction bytes associated with a 32 byte transaction hash (txid).
|
|
@@ -130,9 +121,7 @@ export interface WalletServices {
|
|
|
130
121
|
* @returns whether the locktime value allows the transaction to be mined at the current chain height
|
|
131
122
|
* @param txOrLockTime either a bitcoin locktime value or hex, binary, un-encoded Transaction
|
|
132
123
|
*/
|
|
133
|
-
nLockTimeIsFinal(
|
|
134
|
-
txOrLockTime: string | number[] | BsvTransaction | number
|
|
135
|
-
): Promise<boolean>
|
|
124
|
+
nLockTimeIsFinal(txOrLockTime: string | number[] | BsvTransaction | number): Promise<boolean>
|
|
136
125
|
}
|
|
137
126
|
|
|
138
127
|
export type GetUtxoStatusOutputFormat = 'hashLE' | 'hashBE' | 'script'
|
|
@@ -152,6 +141,8 @@ export interface FiatExchangeRates {
|
|
|
152
141
|
export interface WalletServicesOptions {
|
|
153
142
|
chain: sdk.Chain
|
|
154
143
|
taalApiKey?: string
|
|
144
|
+
bitailsApiKey?: string
|
|
145
|
+
whatsOnChainApiKey?: string
|
|
155
146
|
bsvExchangeRate: BsvExchangeRate
|
|
156
147
|
bsvUpdateMsecs: number
|
|
157
148
|
fiatExchangeRates: FiatExchangeRates
|
|
@@ -383,26 +374,13 @@ export type GetUtxoStatusService = (
|
|
|
383
374
|
outputFormat?: GetUtxoStatusOutputFormat
|
|
384
375
|
) => Promise<GetUtxoStatusResult>
|
|
385
376
|
|
|
386
|
-
export type GetMerklePathService = (
|
|
387
|
-
txid: string,
|
|
388
|
-
services: WalletServices
|
|
389
|
-
) => Promise<GetMerklePathResult>
|
|
377
|
+
export type GetMerklePathService = (txid: string, services: WalletServices) => Promise<GetMerklePathResult>
|
|
390
378
|
|
|
391
|
-
export type GetRawTxService = (
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
export type PostTxsService = (
|
|
397
|
-
beef: Beef,
|
|
398
|
-
txids: string[],
|
|
399
|
-
services: WalletServices
|
|
400
|
-
) => Promise<PostTxsResult>
|
|
401
|
-
|
|
402
|
-
export type PostBeefService = (
|
|
403
|
-
beef: Beef,
|
|
404
|
-
txids: string[]
|
|
405
|
-
) => Promise<PostBeefResult>
|
|
379
|
+
export type GetRawTxService = (txid: string, chain: sdk.Chain) => Promise<GetRawTxResult>
|
|
380
|
+
|
|
381
|
+
export type PostTxsService = (beef: Beef, txids: string[], services: WalletServices) => Promise<PostTxsResult>
|
|
382
|
+
|
|
383
|
+
export type PostBeefService = (beef: Beef, txids: string[]) => Promise<PostBeefResult>
|
|
406
384
|
|
|
407
385
|
export type UpdateFiatExchangeRateService = (
|
|
408
386
|
targetCurrencies: string[],
|
|
@@ -58,32 +58,20 @@ export interface WalletStorage {
|
|
|
58
58
|
|
|
59
59
|
getAuth(): Promise<sdk.AuthId>
|
|
60
60
|
|
|
61
|
-
findOrInsertUser(
|
|
62
|
-
identityKey: string
|
|
63
|
-
): Promise<{ user: TableUser; isNew: boolean }>
|
|
61
|
+
findOrInsertUser(identityKey: string): Promise<{ user: TableUser; isNew: boolean }>
|
|
64
62
|
|
|
65
63
|
abortAction(args: AbortActionArgs): Promise<AbortActionResult>
|
|
66
|
-
createAction(
|
|
67
|
-
|
|
68
|
-
): Promise<
|
|
69
|
-
processAction(
|
|
70
|
-
args: sdk.StorageProcessActionArgs
|
|
71
|
-
): Promise<sdk.StorageProcessActionResults>
|
|
72
|
-
internalizeAction(
|
|
73
|
-
args: InternalizeActionArgs
|
|
74
|
-
): Promise<InternalizeActionResult>
|
|
64
|
+
createAction(args: sdk.ValidCreateActionArgs): Promise<sdk.StorageCreateActionResult>
|
|
65
|
+
processAction(args: sdk.StorageProcessActionArgs): Promise<sdk.StorageProcessActionResults>
|
|
66
|
+
internalizeAction(args: InternalizeActionArgs): Promise<InternalizeActionResult>
|
|
75
67
|
|
|
76
68
|
findCertificates(args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]>
|
|
77
|
-
findOutputBaskets(
|
|
78
|
-
args: sdk.FindOutputBasketsArgs
|
|
79
|
-
): Promise<TableOutputBasket[]>
|
|
69
|
+
findOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<TableOutputBasket[]>
|
|
80
70
|
findOutputs(args: sdk.FindOutputsArgs): Promise<TableOutput[]>
|
|
81
71
|
findProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>
|
|
82
72
|
|
|
83
73
|
listActions(args: ListActionsArgs): Promise<ListActionsResult>
|
|
84
|
-
listCertificates(
|
|
85
|
-
args: sdk.ValidListCertificatesArgs
|
|
86
|
-
): Promise<ListCertificatesResult>
|
|
74
|
+
listCertificates(args: sdk.ValidListCertificatesArgs): Promise<ListCertificatesResult>
|
|
87
75
|
listOutputs(args: ListOutputsArgs): Promise<ListOutputsResult>
|
|
88
76
|
|
|
89
77
|
insertCertificate(certificate: TableCertificateX): Promise<number>
|
|
@@ -116,16 +104,10 @@ export interface WalletStorageSync extends WalletStorageWriter {
|
|
|
116
104
|
* @param auth
|
|
117
105
|
* @param newActiveStorageIdentityKey
|
|
118
106
|
*/
|
|
119
|
-
setActive(
|
|
120
|
-
auth: sdk.AuthId,
|
|
121
|
-
newActiveStorageIdentityKey: string
|
|
122
|
-
): Promise<number>
|
|
107
|
+
setActive(auth: sdk.AuthId, newActiveStorageIdentityKey: string): Promise<number>
|
|
123
108
|
|
|
124
109
|
getSyncChunk(args: sdk.RequestSyncChunkArgs): Promise<sdk.SyncChunk>
|
|
125
|
-
processSyncChunk(
|
|
126
|
-
args: sdk.RequestSyncChunkArgs,
|
|
127
|
-
chunk: sdk.SyncChunk
|
|
128
|
-
): Promise<sdk.ProcessSyncChunkResult>
|
|
110
|
+
processSyncChunk(args: sdk.RequestSyncChunkArgs, chunk: sdk.SyncChunk): Promise<sdk.ProcessSyncChunkResult>
|
|
129
111
|
}
|
|
130
112
|
|
|
131
113
|
/**
|
|
@@ -141,40 +123,17 @@ export interface WalletStorageWriter extends WalletStorageReader {
|
|
|
141
123
|
migrate(storageName: string, storageIdentityKey: string): Promise<string>
|
|
142
124
|
destroy(): Promise<void>
|
|
143
125
|
|
|
144
|
-
findOrInsertUser(
|
|
145
|
-
identityKey: string
|
|
146
|
-
): Promise<{ user: TableUser; isNew: boolean }>
|
|
126
|
+
findOrInsertUser(identityKey: string): Promise<{ user: TableUser; isNew: boolean }>
|
|
147
127
|
|
|
148
|
-
abortAction(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
): Promise<
|
|
152
|
-
createAction(
|
|
153
|
-
auth: sdk.AuthId,
|
|
154
|
-
args: sdk.ValidCreateActionArgs
|
|
155
|
-
): Promise<sdk.StorageCreateActionResult>
|
|
156
|
-
processAction(
|
|
157
|
-
auth: sdk.AuthId,
|
|
158
|
-
args: sdk.StorageProcessActionArgs
|
|
159
|
-
): Promise<sdk.StorageProcessActionResults>
|
|
160
|
-
internalizeAction(
|
|
161
|
-
auth: sdk.AuthId,
|
|
162
|
-
args: InternalizeActionArgs
|
|
163
|
-
): Promise<InternalizeActionResult>
|
|
128
|
+
abortAction(auth: sdk.AuthId, args: AbortActionArgs): Promise<AbortActionResult>
|
|
129
|
+
createAction(auth: sdk.AuthId, args: sdk.ValidCreateActionArgs): Promise<sdk.StorageCreateActionResult>
|
|
130
|
+
processAction(auth: sdk.AuthId, args: sdk.StorageProcessActionArgs): Promise<sdk.StorageProcessActionResults>
|
|
131
|
+
internalizeAction(auth: sdk.AuthId, args: InternalizeActionArgs): Promise<InternalizeActionResult>
|
|
164
132
|
|
|
165
|
-
insertCertificateAuth(
|
|
166
|
-
auth: sdk.AuthId,
|
|
167
|
-
certificate: TableCertificateX
|
|
168
|
-
): Promise<number>
|
|
133
|
+
insertCertificateAuth(auth: sdk.AuthId, certificate: TableCertificateX): Promise<number>
|
|
169
134
|
|
|
170
|
-
relinquishCertificate(
|
|
171
|
-
|
|
172
|
-
args: RelinquishCertificateArgs
|
|
173
|
-
): Promise<number>
|
|
174
|
-
relinquishOutput(
|
|
175
|
-
auth: sdk.AuthId,
|
|
176
|
-
args: RelinquishOutputArgs
|
|
177
|
-
): Promise<number>
|
|
135
|
+
relinquishCertificate(auth: sdk.AuthId, args: RelinquishCertificateArgs): Promise<number>
|
|
136
|
+
relinquishOutput(auth: sdk.AuthId, args: RelinquishOutputArgs): Promise<number>
|
|
178
137
|
}
|
|
179
138
|
|
|
180
139
|
export interface WalletStorageReader {
|
|
@@ -183,32 +142,14 @@ export interface WalletStorageReader {
|
|
|
183
142
|
getServices(): sdk.WalletServices
|
|
184
143
|
getSettings(): TableSettings
|
|
185
144
|
|
|
186
|
-
findCertificatesAuth(
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
): Promise<TableCertificateX[]>
|
|
190
|
-
findOutputBasketsAuth(
|
|
191
|
-
auth: sdk.AuthId,
|
|
192
|
-
args: sdk.FindOutputBasketsArgs
|
|
193
|
-
): Promise<TableOutputBasket[]>
|
|
194
|
-
findOutputsAuth(
|
|
195
|
-
auth: sdk.AuthId,
|
|
196
|
-
args: sdk.FindOutputsArgs
|
|
197
|
-
): Promise<TableOutput[]>
|
|
145
|
+
findCertificatesAuth(auth: sdk.AuthId, args: sdk.FindCertificatesArgs): Promise<TableCertificateX[]>
|
|
146
|
+
findOutputBasketsAuth(auth: sdk.AuthId, args: sdk.FindOutputBasketsArgs): Promise<TableOutputBasket[]>
|
|
147
|
+
findOutputsAuth(auth: sdk.AuthId, args: sdk.FindOutputsArgs): Promise<TableOutput[]>
|
|
198
148
|
findProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>
|
|
199
149
|
|
|
200
|
-
listActions(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
): Promise<ListActionsResult>
|
|
204
|
-
listCertificates(
|
|
205
|
-
auth: sdk.AuthId,
|
|
206
|
-
vargs: sdk.ValidListCertificatesArgs
|
|
207
|
-
): Promise<ListCertificatesResult>
|
|
208
|
-
listOutputs(
|
|
209
|
-
auth: sdk.AuthId,
|
|
210
|
-
vargs: sdk.ValidListOutputsArgs
|
|
211
|
-
): Promise<ListOutputsResult>
|
|
150
|
+
listActions(auth: sdk.AuthId, vargs: sdk.ValidListActionsArgs): Promise<ListActionsResult>
|
|
151
|
+
listCertificates(auth: sdk.AuthId, vargs: sdk.ValidListCertificatesArgs): Promise<ListCertificatesResult>
|
|
152
|
+
listOutputs(auth: sdk.AuthId, vargs: sdk.ValidListOutputsArgs): Promise<ListOutputsResult>
|
|
212
153
|
}
|
|
213
154
|
|
|
214
155
|
export interface AuthId {
|
|
@@ -227,8 +168,7 @@ export interface FindForUserSincePagedArgs extends FindSincePagedArgs {
|
|
|
227
168
|
userId: number
|
|
228
169
|
}
|
|
229
170
|
|
|
230
|
-
export interface FindPartialSincePagedArgs<T extends object>
|
|
231
|
-
extends FindSincePagedArgs {
|
|
171
|
+
export interface FindPartialSincePagedArgs<T extends object> extends FindSincePagedArgs {
|
|
232
172
|
partial: Partial<T>
|
|
233
173
|
}
|
|
234
174
|
|
|
@@ -270,8 +210,7 @@ export interface StorageCreateTransactionSdkInput {
|
|
|
270
210
|
senderIdentityKey?: string
|
|
271
211
|
}
|
|
272
212
|
|
|
273
|
-
export interface StorageCreateTransactionSdkOutput
|
|
274
|
-
extends sdk.ValidCreateActionOutput {
|
|
213
|
+
export interface StorageCreateTransactionSdkOutput extends sdk.ValidCreateActionOutput {
|
|
275
214
|
vout: number
|
|
276
215
|
providedBy: StorageProvidedBy
|
|
277
216
|
purpose?: string
|
|
@@ -460,12 +399,7 @@ export interface UpdateProvenTxReqWithNewProvenTxResult {
|
|
|
460
399
|
*
|
|
461
400
|
* unknown: Sync protocol state is unknown.
|
|
462
401
|
*/
|
|
463
|
-
export type SyncStatus =
|
|
464
|
-
| 'success'
|
|
465
|
-
| 'error'
|
|
466
|
-
| 'identified'
|
|
467
|
-
| 'updated'
|
|
468
|
-
| 'unknown'
|
|
402
|
+
export type SyncStatus = 'success' | 'error' | 'identified' | 'updated' | 'unknown'
|
|
469
403
|
|
|
470
404
|
export type SyncProtocolVersion = '0.1.0'
|
|
471
405
|
|
|
@@ -14,11 +14,8 @@ describe('CertificateLifeCycle tests', () => {
|
|
|
14
14
|
|
|
15
15
|
test('0 encrypt decrypt sign verify', async () => {
|
|
16
16
|
const subjectWallet = new ProtoWallet(PrivateKey.fromRandom())
|
|
17
|
-
if (!subjectWallet.keyDeriver)
|
|
18
|
-
|
|
19
|
-
const { cert, certifier, subject } = makeSampleCert(
|
|
20
|
-
subjectWallet.keyDeriver.rootKey.toString()
|
|
21
|
-
)
|
|
17
|
+
if (!subjectWallet.keyDeriver) throw new sdk.WERR_INVALID_OPERATION('keyDeriver must be valid')
|
|
18
|
+
const { cert, certifier, subject } = makeSampleCert(subjectWallet.keyDeriver.rootKey.toString())
|
|
22
19
|
|
|
23
20
|
const c = new BsvCertificate(
|
|
24
21
|
cert.type,
|
|
@@ -39,9 +36,7 @@ describe('CertificateLifeCycle tests', () => {
|
|
|
39
36
|
async () => c.revocationOutpoint
|
|
40
37
|
)
|
|
41
38
|
const imcSignature = imc.signature
|
|
42
|
-
await expect(imc.sign(certifierWallet)).rejects.toThrow(
|
|
43
|
-
'Certificate has already been signed'
|
|
44
|
-
)
|
|
39
|
+
await expect(imc.sign(certifierWallet)).rejects.toThrow('Certificate has already been signed')
|
|
45
40
|
expect(imcSignature).toBeTruthy()
|
|
46
41
|
expect(imcSignature).toBe(imc.signature)
|
|
47
42
|
const imcVerified = await imc.verify()
|
|
@@ -66,9 +61,7 @@ describe('CertificateLifeCycle tests', () => {
|
|
|
66
61
|
const co = new sdk.CertOps(certifierWallet, cert)
|
|
67
62
|
|
|
68
63
|
expect(co.signature).toBe('')
|
|
69
|
-
await expect(co.verify()).rejects.toThrow(
|
|
70
|
-
'Signature DER must start with 0x30'
|
|
71
|
-
)
|
|
64
|
+
await expect(co.verify()).rejects.toThrow('Signature DER must start with 0x30')
|
|
72
65
|
await co.sign(new ProtoWallet(new KeyDeriver(certifier)))
|
|
73
66
|
expect(await co.verify()).toBe(true)
|
|
74
67
|
|
|
@@ -87,9 +80,7 @@ describe('CertificateLifeCycle tests', () => {
|
|
|
87
80
|
|
|
88
81
|
{
|
|
89
82
|
await co.encryptFields()
|
|
90
|
-
const crypto2 = new ProtoWallet(
|
|
91
|
-
new KeyDeriver(PrivateKey.fromHex('2'.repeat(64)))
|
|
92
|
-
)
|
|
83
|
+
const crypto2 = new ProtoWallet(new KeyDeriver(PrivateKey.fromHex('2'.repeat(64))))
|
|
93
84
|
const co2 = new sdk.CertOps(crypto2, co.toWalletCertificate())
|
|
94
85
|
// even with the keyring, without the right crypto root key decryption will fail.
|
|
95
86
|
co2._keyring = co._keyring
|
|
@@ -143,17 +134,11 @@ describe('CertificateLifeCycle tests', () => {
|
|
|
143
134
|
// And then use a keyRing that their public key will work to reveal decrypted values for 'name' and 'email' only.
|
|
144
135
|
const verifier = PrivateKey.fromRandom()
|
|
145
136
|
// subject makes a keyring for the verifier
|
|
146
|
-
const exportForVerifier = await cs.exportForCounterparty(
|
|
147
|
-
verifier.toPublicKey().toString(),
|
|
148
|
-
['name', 'email']
|
|
149
|
-
)
|
|
137
|
+
const exportForVerifier = await cs.exportForCounterparty(verifier.toPublicKey().toString(), ['name', 'email'])
|
|
150
138
|
|
|
151
139
|
// The verifier uses their own wallet to import the certificate, verify it, and decrypt their designated fields.
|
|
152
140
|
const verifierWallet = new ProtoWallet(verifier)
|
|
153
|
-
const cv = await sdk.CertOps.fromCounterparty(
|
|
154
|
-
verifierWallet,
|
|
155
|
-
exportForVerifier
|
|
156
|
-
)
|
|
141
|
+
const cv = await sdk.CertOps.fromCounterparty(verifierWallet, exportForVerifier)
|
|
157
142
|
|
|
158
143
|
// verifier must check that the certifier's public key generates a matching signature over all the encrypted
|
|
159
144
|
// certificate field values before using their keyring to decrypt the fields they've been authorized to see.
|
|
@@ -173,16 +158,13 @@ function makeSampleCert(subjectRootKeyHex?: string): {
|
|
|
173
158
|
subject: PrivateKey
|
|
174
159
|
certifier: PrivateKey
|
|
175
160
|
} {
|
|
176
|
-
const subject = subjectRootKeyHex
|
|
177
|
-
? PrivateKey.fromString(subjectRootKeyHex)
|
|
178
|
-
: PrivateKey.fromRandom()
|
|
161
|
+
const subject = subjectRootKeyHex ? PrivateKey.fromString(subjectRootKeyHex) : PrivateKey.fromRandom()
|
|
179
162
|
const certifier = PrivateKey.fromRandom()
|
|
180
163
|
const verifier = PrivateKey.fromRandom()
|
|
181
164
|
const cert: WalletCertificate = {
|
|
182
165
|
type: Utils.toBase64(new Array(32).fill(1)),
|
|
183
166
|
serialNumber: Utils.toBase64(new Array(32).fill(2)),
|
|
184
|
-
revocationOutpoint:
|
|
185
|
-
'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.1',
|
|
167
|
+
revocationOutpoint: 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.1',
|
|
186
168
|
subject: subject.toPublicKey().toString(),
|
|
187
169
|
certifier: certifier.toPublicKey().toString(),
|
|
188
170
|
fields: {
|
|
@@ -15,67 +15,50 @@ describe('PrivilegedKeyManager', () => {
|
|
|
15
15
|
const { valid } = await wallet.verifySignature({
|
|
16
16
|
data: Utils.toArray('BRC-3 Compliance Validated!', 'utf8'),
|
|
17
17
|
signature: [
|
|
18
|
-
48, 68, 2, 32, 43, 34, 58, 156, 219, 32, 50, 70, 29, 240, 155, 137, 88,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
134, 18, 70, 9, 31, 234, 27, 170, 177, 54, 96, 181, 140, 166, 196, 144,
|
|
22
|
-
14, 230, 118, 106, 105
|
|
18
|
+
48, 68, 2, 32, 43, 34, 58, 156, 219, 32, 50, 70, 29, 240, 155, 137, 88, 60, 200, 95, 243, 198, 201, 21, 56, 82,
|
|
19
|
+
141, 112, 69, 196, 170, 73, 156, 6, 44, 48, 2, 32, 118, 125, 254, 201, 44, 87, 177, 170, 93, 11, 193, 134, 18,
|
|
20
|
+
70, 9, 31, 234, 27, 170, 177, 54, 96, 181, 140, 166, 196, 144, 14, 230, 118, 106, 105
|
|
23
21
|
],
|
|
24
22
|
protocolID: [2, 'BRC3 Test'],
|
|
25
23
|
keyID: '42',
|
|
26
|
-
counterparty:
|
|
27
|
-
'0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
|
|
24
|
+
counterparty: '0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
|
|
28
25
|
})
|
|
29
26
|
expect(valid).toBe(true)
|
|
30
27
|
await wallet.destroyKey()
|
|
31
28
|
})
|
|
32
29
|
it('Validates the BRC-2 HMAC compliance vector', async () => {
|
|
33
30
|
const wallet = new PrivilegedKeyManager(
|
|
34
|
-
async () =>
|
|
35
|
-
new PrivateKey(
|
|
36
|
-
'6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8',
|
|
37
|
-
'hex'
|
|
38
|
-
)
|
|
31
|
+
async () => new PrivateKey('6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8', 'hex')
|
|
39
32
|
)
|
|
40
33
|
const { valid } = await wallet.verifyHmac({
|
|
41
34
|
data: Utils.toArray('BRC-2 HMAC Compliance Validated!', 'utf8'),
|
|
42
35
|
hmac: [
|
|
43
|
-
81, 240, 18, 153, 163, 45, 174, 85, 9, 246, 142, 125, 209, 133, 82, 76,
|
|
44
|
-
|
|
36
|
+
81, 240, 18, 153, 163, 45, 174, 85, 9, 246, 142, 125, 209, 133, 82, 76, 254, 103, 46, 182, 86, 59, 219, 61, 126,
|
|
37
|
+
30, 176, 232, 233, 100, 234, 14
|
|
45
38
|
],
|
|
46
39
|
protocolID: [2, 'BRC2 Test'],
|
|
47
40
|
keyID: '42',
|
|
48
|
-
counterparty:
|
|
49
|
-
'0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
|
|
41
|
+
counterparty: '0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
|
|
50
42
|
})
|
|
51
43
|
expect(valid).toBe(true)
|
|
52
44
|
await wallet.destroyKey()
|
|
53
45
|
})
|
|
54
46
|
it('Validates the BRC-2 Encryption compliance vector', async () => {
|
|
55
47
|
const wallet = new PrivilegedKeyManager(
|
|
56
|
-
async () =>
|
|
57
|
-
new PrivateKey(
|
|
58
|
-
'6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8',
|
|
59
|
-
'hex'
|
|
60
|
-
)
|
|
48
|
+
async () => new PrivateKey('6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8', 'hex')
|
|
61
49
|
)
|
|
62
50
|
const { plaintext } = await wallet.decrypt({
|
|
63
51
|
ciphertext: [
|
|
64
|
-
252, 203, 216, 184, 29, 161, 223, 212, 16, 193, 94, 99, 31, 140, 99, 43,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
134, 65, 38, 58, 24, 127, 145, 140, 206, 47, 70, 146, 84, 186, 72, 95,
|
|
69
|
-
35, 154, 112, 178, 55, 72, 124
|
|
52
|
+
252, 203, 216, 184, 29, 161, 223, 212, 16, 193, 94, 99, 31, 140, 99, 43, 61, 236, 184, 67, 54, 105, 199, 47, 11,
|
|
53
|
+
19, 184, 127, 2, 165, 125, 9, 188, 195, 196, 39, 120, 130, 213, 95, 186, 89, 64, 28, 1, 80, 20, 213, 159, 133,
|
|
54
|
+
98, 253, 128, 105, 113, 247, 197, 152, 236, 64, 166, 207, 113, 134, 65, 38, 58, 24, 127, 145, 140, 206, 47, 70,
|
|
55
|
+
146, 84, 186, 72, 95, 35, 154, 112, 178, 55, 72, 124
|
|
70
56
|
],
|
|
71
57
|
protocolID: [2, 'BRC2 Test'],
|
|
72
58
|
keyID: '42',
|
|
73
|
-
counterparty:
|
|
74
|
-
'0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
|
|
59
|
+
counterparty: '0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
|
|
75
60
|
})
|
|
76
|
-
expect(Utils.toUTF8(plaintext)).toEqual(
|
|
77
|
-
'BRC-2 Encryption Compliance Validated!'
|
|
78
|
-
)
|
|
61
|
+
expect(Utils.toUTF8(plaintext)).toEqual('BRC-2 Encryption Compliance Validated!')
|
|
79
62
|
await wallet.destroyKey()
|
|
80
63
|
})
|
|
81
64
|
it('Encrypts messages decryptable by the counterparty', async () => {
|
|
@@ -155,13 +138,12 @@ describe('PrivilegedKeyManager', () => {
|
|
|
155
138
|
keyID: '4',
|
|
156
139
|
counterparty: counterpartyKey.toPublicKey().toString()
|
|
157
140
|
})
|
|
158
|
-
const { publicKey: derivedByCounterparty } =
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
})
|
|
141
|
+
const { publicKey: derivedByCounterparty } = await counterparty.getPublicKey({
|
|
142
|
+
protocolID: [2, 'tests'],
|
|
143
|
+
keyID: '4',
|
|
144
|
+
counterparty: userKey.toPublicKey().toString(),
|
|
145
|
+
forSelf: true
|
|
146
|
+
})
|
|
165
147
|
expect(derivedForCounterparty).toEqual(derivedByCounterparty)
|
|
166
148
|
await user.destroyKey()
|
|
167
149
|
await counterparty.destroyKey()
|
|
@@ -469,9 +451,7 @@ describe('PrivilegedKeyManager', () => {
|
|
|
469
451
|
})
|
|
470
452
|
|
|
471
453
|
// Compute expected linkage
|
|
472
|
-
const expectedLinkage = proverKey
|
|
473
|
-
.deriveSharedSecret(counterpartyKey.toPublicKey())
|
|
474
|
-
.encode(true)
|
|
454
|
+
const expectedLinkage = proverKey.deriveSharedSecret(counterpartyKey.toPublicKey()).encode(true)
|
|
475
455
|
|
|
476
456
|
// Compare linkage and expectedLinkage
|
|
477
457
|
expect(linkage).toEqual(expectedLinkage)
|
|
@@ -503,27 +483,18 @@ describe('PrivilegedKeyManager', () => {
|
|
|
503
483
|
// Verifier decrypts the encrypted linkage
|
|
504
484
|
const { plaintext: linkage } = await verifierWallet.decrypt({
|
|
505
485
|
ciphertext: revelation.encryptedLinkage,
|
|
506
|
-
protocolID: [
|
|
507
|
-
2,
|
|
508
|
-
`specific linkage revelation ${protocolID[0]} ${protocolID[1]}`
|
|
509
|
-
],
|
|
486
|
+
protocolID: [2, `specific linkage revelation ${protocolID[0]} ${protocolID[1]}`],
|
|
510
487
|
keyID,
|
|
511
488
|
counterparty: proverKey.toPublicKey().toString()
|
|
512
489
|
})
|
|
513
490
|
|
|
514
491
|
// Compute expected linkage
|
|
515
|
-
const sharedSecret = proverKey
|
|
516
|
-
.deriveSharedSecret(counterpartyKey.toPublicKey())
|
|
517
|
-
.encode(true)
|
|
492
|
+
const sharedSecret = proverKey.deriveSharedSecret(counterpartyKey.toPublicKey()).encode(true)
|
|
518
493
|
|
|
519
494
|
// Function to compute the invoice number
|
|
520
495
|
const computeInvoiceNumber = function (protocolID, keyID) {
|
|
521
496
|
const securityLevel = protocolID[0]
|
|
522
|
-
if (
|
|
523
|
-
!Number.isInteger(securityLevel) ||
|
|
524
|
-
securityLevel < 0 ||
|
|
525
|
-
securityLevel > 2
|
|
526
|
-
) {
|
|
497
|
+
if (!Number.isInteger(securityLevel) || securityLevel < 0 || securityLevel > 2) {
|
|
527
498
|
throw new Error('Protocol security level must be 0, 1, or 2')
|
|
528
499
|
}
|
|
529
500
|
const protocolName = protocolID[1].toLowerCase().trim()
|
|
@@ -540,14 +511,10 @@ describe('PrivilegedKeyManager', () => {
|
|
|
540
511
|
throw new Error('Protocol names must be 5 characters or more')
|
|
541
512
|
}
|
|
542
513
|
if (protocolName.includes(' ')) {
|
|
543
|
-
throw new Error(
|
|
544
|
-
'Protocol names cannot contain multiple consecutive spaces (" ")'
|
|
545
|
-
)
|
|
514
|
+
throw new Error('Protocol names cannot contain multiple consecutive spaces (" ")')
|
|
546
515
|
}
|
|
547
516
|
if (!/^[a-z0-9 ]+$/g.test(protocolName)) {
|
|
548
|
-
throw new Error(
|
|
549
|
-
'Protocol names can only contain letters, numbers and spaces'
|
|
550
|
-
)
|
|
517
|
+
throw new Error('Protocol names can only contain letters, numbers and spaces')
|
|
551
518
|
}
|
|
552
519
|
if (protocolName.endsWith(' protocol')) {
|
|
553
520
|
throw new Error('No need to end your protocol name with " protocol"')
|
|
@@ -695,12 +662,8 @@ describe('PrivilegedKeyManager', () => {
|
|
|
695
662
|
// store them, reassemble, etc.
|
|
696
663
|
|
|
697
664
|
// For demonstration, we can do a quick test:
|
|
698
|
-
const pad = chunks.map((c: Uint8Array) =>
|
|
699
|
-
|
|
700
|
-
)
|
|
701
|
-
const obfuscated = chunks.map((c: Uint8Array, i: number) =>
|
|
702
|
-
(km as any).xorBytes(c, pad[i])
|
|
703
|
-
)
|
|
665
|
+
const pad = chunks.map((c: Uint8Array) => Uint8Array.from(Random(c.length)))
|
|
666
|
+
const obfuscated = chunks.map((c: Uint8Array, i: number) => (km as any).xorBytes(c, pad[i]))
|
|
704
667
|
|
|
705
668
|
// Then "store" and reassemble
|
|
706
669
|
;(km as any).chunkPropNames = []
|
package/src/sdk/types.ts
CHANGED
|
@@ -63,11 +63,7 @@ export type ProvenTxReqStatus =
|
|
|
63
63
|
| 'invalid'
|
|
64
64
|
| 'doubleSpend'
|
|
65
65
|
|
|
66
|
-
export const ProvenTxReqTerminalStatus: ProvenTxReqStatus[] = [
|
|
67
|
-
'completed',
|
|
68
|
-
'invalid',
|
|
69
|
-
'doubleSpend'
|
|
70
|
-
]
|
|
66
|
+
export const ProvenTxReqTerminalStatus: ProvenTxReqStatus[] = ['completed', 'invalid', 'doubleSpend']
|
|
71
67
|
|
|
72
68
|
export const ProvenTxReqNonTerminalStatus: ProvenTxReqStatus[] = [
|
|
73
69
|
'sending',
|
|
@@ -81,14 +77,7 @@ export const ProvenTxReqNonTerminalStatus: ProvenTxReqStatus[] = [
|
|
|
81
77
|
'unconfirmed'
|
|
82
78
|
]
|
|
83
79
|
|
|
84
|
-
export type TransactionStatus =
|
|
85
|
-
| 'completed'
|
|
86
|
-
| 'failed'
|
|
87
|
-
| 'unprocessed'
|
|
88
|
-
| 'sending'
|
|
89
|
-
| 'unproven'
|
|
90
|
-
| 'unsigned'
|
|
91
|
-
| 'nosend'
|
|
80
|
+
export type TransactionStatus = 'completed' | 'failed' | 'unprocessed' | 'sending' | 'unproven' | 'unsigned' | 'nosend'
|
|
92
81
|
|
|
93
82
|
export interface Paged {
|
|
94
83
|
limit: number
|
|
@@ -138,8 +127,7 @@ export type ReqHistoryNote = {
|
|
|
138
127
|
* Returns wallet's current change balance in the `totalOutputs` result property.
|
|
139
128
|
* The `outputs` result property will always be an empty array.
|
|
140
129
|
*/
|
|
141
|
-
export const specOpWalletBalance =
|
|
142
|
-
'893b7646de0e1c9f741bd6e9169b76a8847ae34adef7bef1e6a285371206d2e8'
|
|
130
|
+
export const specOpWalletBalance = '893b7646de0e1c9f741bd6e9169b76a8847ae34adef7bef1e6a285371206d2e8'
|
|
143
131
|
|
|
144
132
|
/**
|
|
145
133
|
* `listOutputs` special operation basket name value.
|
|
@@ -148,8 +136,7 @@ export const specOpWalletBalance =
|
|
|
148
136
|
*
|
|
149
137
|
* Optional tag value 'release'. If present, updates invalid change outputs to not spendable.
|
|
150
138
|
*/
|
|
151
|
-
export const specOpInvalidChange =
|
|
152
|
-
'5a76fd430a311f8bc0553859061710a4475c19fed46e2ff95969aa918e612e57'
|
|
139
|
+
export const specOpInvalidChange = '5a76fd430a311f8bc0553859061710a4475c19fed46e2ff95969aa918e612e57'
|
|
153
140
|
|
|
154
141
|
/**
|
|
155
142
|
* `listOutputs` special operation basket name value.
|
|
@@ -160,19 +147,12 @@ export const specOpInvalidChange =
|
|
|
160
147
|
*
|
|
161
148
|
* Tag at index 1 is the new target for minimum satoshis when creating new change outputs.
|
|
162
149
|
*/
|
|
163
|
-
export const specOpSetWalletChangeParams =
|
|
164
|
-
'a4979d28ced8581e9c1c92f1001cc7cb3aabf8ea32e10888ad898f0a509a3929'
|
|
150
|
+
export const specOpSetWalletChangeParams = 'a4979d28ced8581e9c1c92f1001cc7cb3aabf8ea32e10888ad898f0a509a3929'
|
|
165
151
|
|
|
166
152
|
/**
|
|
167
153
|
* @param basket Output basket name value.
|
|
168
154
|
* @returns true iff the `basket` name is a reserved `listOutputs` special operation identifier.
|
|
169
155
|
*/
|
|
170
156
|
export function isSpecOp(basket: string): boolean {
|
|
171
|
-
return (
|
|
172
|
-
[
|
|
173
|
-
specOpWalletBalance,
|
|
174
|
-
specOpInvalidChange,
|
|
175
|
-
specOpSetWalletChangeParams
|
|
176
|
-
].indexOf(basket) >= 0
|
|
177
|
-
)
|
|
157
|
+
return [specOpWalletBalance, specOpInvalidChange, specOpSetWalletChangeParams].indexOf(basket) >= 0
|
|
178
158
|
}
|