@bsv/wallet-toolbox 1.7.1 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/docs/client.md +489 -1334
- package/docs/services.md +5 -5
- package/docs/storage.md +64 -61
- package/docs/wallet.md +489 -1334
- package/mobile/out/src/Wallet.d.ts +21 -4
- package/mobile/out/src/Wallet.d.ts.map +1 -1
- package/mobile/out/src/Wallet.js +93 -57
- package/mobile/out/src/Wallet.js.map +1 -1
- package/mobile/out/src/WalletLogger.d.ts +33 -0
- package/mobile/out/src/WalletLogger.d.ts.map +1 -0
- package/mobile/out/src/WalletLogger.js +157 -0
- package/mobile/out/src/WalletLogger.js.map +1 -0
- package/mobile/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/mobile/out/src/WalletPermissionsManager.js +1 -2
- package/mobile/out/src/WalletPermissionsManager.js.map +1 -1
- package/mobile/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/mobile/out/src/sdk/WERR_errors.js.map +1 -1
- package/mobile/out/src/sdk/WalletError.d.ts.map +1 -1
- package/mobile/out/src/sdk/WalletError.js +0 -2
- package/mobile/out/src/sdk/WalletError.js.map +1 -1
- package/mobile/out/src/sdk/WalletServices.interfaces.d.ts +3 -3
- package/mobile/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts +9 -10
- package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/mobile/out/src/sdk/index.d.ts +1 -1
- package/mobile/out/src/sdk/index.d.ts.map +1 -1
- package/mobile/out/src/sdk/index.js +3 -1
- package/mobile/out/src/sdk/index.js.map +1 -1
- package/mobile/out/src/services/Services.d.ts +5 -5
- package/mobile/out/src/services/Services.d.ts.map +1 -1
- package/mobile/out/src/services/Services.js +18 -4
- package/mobile/out/src/services/Services.js.map +1 -1
- package/mobile/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/mobile/out/src/services/providers/WhatsOnChain.js +1 -2
- package/mobile/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/mobile/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
- package/mobile/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/mobile/out/src/signer/methods/acquireDirectCertificate.d.ts +2 -3
- package/mobile/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
- package/mobile/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/mobile/out/src/signer/methods/buildSignableTransaction.d.ts +3 -4
- package/mobile/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/mobile/out/src/signer/methods/buildSignableTransaction.js +1 -2
- package/mobile/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/mobile/out/src/signer/methods/createAction.d.ts +3 -4
- package/mobile/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/mobile/out/src/signer/methods/createAction.js +17 -6
- package/mobile/out/src/signer/methods/createAction.js.map +1 -1
- package/mobile/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/mobile/out/src/signer/methods/internalizeAction.js +1 -2
- package/mobile/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/mobile/out/src/signer/methods/proveCertificate.d.ts +2 -3
- package/mobile/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
- package/mobile/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/mobile/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/mobile/out/src/signer/methods/signAction.js +1 -2
- package/mobile/out/src/signer/methods/signAction.js.map +1 -1
- package/mobile/out/src/storage/StorageIdb.d.ts +3 -4
- package/mobile/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/mobile/out/src/storage/StorageIdb.js.map +1 -1
- package/mobile/out/src/storage/StorageProvider.d.ts +6 -7
- package/mobile/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/mobile/out/src/storage/StorageProvider.js +5 -6
- package/mobile/out/src/storage/StorageProvider.js.map +1 -1
- package/mobile/out/src/storage/WalletStorageManager.d.ts +5 -5
- package/mobile/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/mobile/out/src/storage/WalletStorageManager.js +5 -4
- package/mobile/out/src/storage/WalletStorageManager.js.map +1 -1
- package/mobile/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
- package/mobile/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/mobile/out/src/storage/methods/ListOutputsSpecOp.d.ts +4 -5
- package/mobile/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/mobile/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +2 -2
- package/mobile/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/attemptToPostReqsToNetwork.js +11 -7
- package/mobile/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/mobile/out/src/storage/methods/createAction.d.ts +3 -4
- package/mobile/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/createAction.js +18 -5
- package/mobile/out/src/storage/methods/createAction.js.map +1 -1
- package/mobile/out/src/storage/methods/generateChange.js +10 -10
- package/mobile/out/src/storage/methods/generateChange.js.map +1 -1
- package/mobile/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/internalizeAction.js +1 -2
- package/mobile/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/mobile/out/src/storage/methods/listActionsIdb.d.ts +2 -3
- package/mobile/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/mobile/out/src/storage/methods/listCertificates.d.ts +3 -3
- package/mobile/out/src/storage/methods/listCertificates.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/listCertificates.js.map +1 -1
- package/mobile/out/src/storage/methods/listOutputsIdb.d.ts +2 -3
- package/mobile/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/mobile/out/src/storage/methods/processAction.d.ts +2 -2
- package/mobile/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/processAction.js +15 -10
- package/mobile/out/src/storage/methods/processAction.js.map +1 -1
- package/mobile/out/src/storage/remoting/StorageClient.d.ts +5 -6
- package/mobile/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/mobile/out/src/storage/remoting/StorageClient.js +22 -0
- package/mobile/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/mobile/out/src/storage/remoting/StorageMobile.d.ts +5 -6
- package/mobile/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/mobile/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/mobile/package-lock.json +6 -6
- package/mobile/package.json +2 -2
- package/out/src/Wallet.d.ts +21 -4
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +93 -57
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletLogger.d.ts +33 -0
- package/out/src/WalletLogger.d.ts.map +1 -0
- package/out/src/WalletLogger.js +157 -0
- package/out/src/WalletLogger.js.map +1 -0
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +1 -2
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts +1 -0
- package/out/src/__tests/WalletPermissionsManager.fixtures.d.ts.map +1 -1
- package/out/src/__tests/WalletPermissionsManager.fixtures.js +15 -4
- package/out/src/__tests/WalletPermissionsManager.fixtures.js.map +1 -1
- package/out/src/__tests/WalletPermissionsManager.proxying.test.js +79 -74
- package/out/src/__tests/WalletPermissionsManager.proxying.test.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 +0 -2
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +3 -3
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +9 -10
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/__test/validationHelpers.test.js +4 -4
- package/out/src/sdk/__test/validationHelpers.test.js.map +1 -1
- package/out/src/sdk/index.d.ts +1 -1
- package/out/src/sdk/index.d.ts.map +1 -1
- package/out/src/sdk/index.js +3 -1
- package/out/src/sdk/index.js.map +1 -1
- package/out/src/services/Services.d.ts +5 -5
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +18 -4
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +1 -2
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.d.ts +2 -3
- package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts +3 -4
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +1 -2
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts +3 -4
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +17 -6
- 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 +1 -2
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.d.ts +2 -3
- 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 +1 -2
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/storage/StorageIdb.d.ts +3 -4
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +3 -4
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +6 -7
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +5 -6
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +5 -5
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +5 -4
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/__test/getBeefForTransaction.test.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts +4 -5
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +2 -2
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +11 -7
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +3 -4
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +18 -5
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.js +10 -10
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +1 -2
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.d.ts +2 -3
- package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.d.ts +2 -3
- package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js.map +1 -1
- package/out/src/storage/methods/listCertificates.d.ts +3 -3
- 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/listOutputsIdb.d.ts +2 -3
- package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts +2 -3
- package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts +2 -2
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +15 -10
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/remoting/StorageClient.d.ts +5 -6
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +22 -0
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts +5 -6
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +5 -0
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +38 -5
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/__test/StorageClient.test.d.ts +2 -0
- package/out/src/storage/remoting/__test/StorageClient.test.d.ts.map +1 -0
- package/out/src/storage/remoting/__test/StorageClient.test.js +98 -0
- package/out/src/storage/remoting/__test/StorageClient.test.js.map +1 -0
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +1 -2
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/test/Wallet/certificate/listCertificates.test.js.map +1 -1
- package/out/test/Wallet/local/localWallet2.man.test.js.map +1 -1
- package/out/test/Wallet/signAction/mountaintop.man.test.js +2 -2
- package/out/test/Wallet/signAction/mountaintop.man.test.js.map +1 -1
- package/out/test/Wallet/support/operations.man.test.js +46 -1
- package/out/test/Wallet/support/operations.man.test.js.map +1 -1
- package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.js.map +1 -1
- package/out/test/WalletClient/WERR.man.test.js +1 -1
- package/out/test/WalletClient/WERR.man.test.js.map +1 -1
- package/out/test/utils/localWalletMethods.d.ts.map +1 -1
- package/out/test/utils/localWalletMethods.js +2 -3
- package/out/test/utils/localWalletMethods.js.map +1 -1
- package/out/test/wallet/action/createAction.test.js +3 -0
- package/out/test/wallet/action/createAction.test.js.map +1 -1
- package/out/tsconfig.all.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/Wallet.ts +114 -79
- package/src/WalletLogger.ts +167 -0
- package/src/WalletPermissionsManager.ts +3 -5
- package/src/__tests/WalletPermissionsManager.fixtures.ts +14 -1
- package/src/__tests/WalletPermissionsManager.proxying.test.ts +89 -85
- package/src/sdk/WERR_errors.ts +6 -3
- package/src/sdk/WalletError.ts +0 -4
- package/src/sdk/WalletServices.interfaces.ts +14 -3
- package/src/sdk/WalletStorage.interfaces.ts +11 -16
- package/src/sdk/__test/validationHelpers.test.ts +4 -5
- package/src/sdk/index.ts +1 -1
- package/src/services/Services.ts +23 -5
- package/src/services/providers/WhatsOnChain.ts +2 -3
- package/src/services/providers/getBeefForTxid.ts +3 -5
- package/src/signer/methods/acquireDirectCertificate.ts +2 -3
- package/src/signer/methods/buildSignableTransaction.ts +5 -6
- package/src/signer/methods/createAction.ts +24 -18
- package/src/signer/methods/internalizeAction.ts +4 -5
- package/src/signer/methods/proveCertificate.ts +3 -4
- package/src/signer/methods/signAction.ts +6 -4
- package/src/storage/StorageIdb.ts +3 -4
- package/src/storage/StorageKnex.ts +3 -4
- package/src/storage/StorageProvider.ts +16 -20
- package/src/storage/WalletStorageManager.ts +10 -11
- package/src/storage/__test/getBeefForTransaction.test.ts +3 -4
- package/src/storage/methods/ListActionsSpecOp.ts +4 -4
- package/src/storage/methods/ListOutputsSpecOp.ts +7 -8
- package/src/storage/methods/attemptToPostReqsToNetwork.ts +15 -8
- package/src/storage/methods/createAction.ts +39 -23
- package/src/storage/methods/generateChange.ts +10 -10
- package/src/storage/methods/internalizeAction.ts +4 -4
- package/src/storage/methods/listActionsIdb.ts +3 -3
- package/src/storage/methods/listActionsKnex.ts +3 -3
- package/src/storage/methods/listCertificates.ts +7 -6
- package/src/storage/methods/listOutputsIdb.ts +2 -3
- package/src/storage/methods/listOutputsKnex.ts +2 -3
- package/src/storage/methods/processAction.ts +30 -11
- package/src/storage/remoting/StorageClient.ts +31 -12
- package/src/storage/remoting/StorageMobile.ts +6 -12
- package/src/storage/remoting/StorageServer.ts +45 -6
- package/src/storage/remoting/__test/StorageClient.test.ts +113 -0
- package/src/storage/sync/StorageMySQLDojoReader.ts +2 -3
- package/test/Wallet/certificate/listCertificates.test.ts +2 -2
- package/test/Wallet/local/localWallet2.man.test.ts +5 -5
- package/test/Wallet/signAction/mountaintop.man.test.ts +3 -2
- package/test/Wallet/support/operations.man.test.ts +65 -6
- package/test/Wallet/support/reqErrorReview.2025.05.06.man.test.ts +2 -14
- package/test/WalletClient/WERR.man.test.ts +3 -3
- package/test/utils/localWalletMethods.ts +5 -5
- package/test/wallet/action/createAction.test.ts +3 -0
- package/mobile/out/src/sdk/validationHelpers.d.ts +0 -322
- package/mobile/out/src/sdk/validationHelpers.d.ts.map +0 -1
- package/mobile/out/src/sdk/validationHelpers.js +0 -691
- package/mobile/out/src/sdk/validationHelpers.js.map +0 -1
- package/out/src/sdk/validationHelpers.d.ts +0 -322
- package/out/src/sdk/validationHelpers.d.ts.map +0 -1
- package/out/src/sdk/validationHelpers.js +0 -691
- package/out/src/sdk/validationHelpers.js.map +0 -1
- package/src/sdk/validationHelpers.ts +0 -1034
|
@@ -7,24 +7,19 @@ import {
|
|
|
7
7
|
SignableTransaction,
|
|
8
8
|
TXIDHexString,
|
|
9
9
|
Script,
|
|
10
|
-
Transaction
|
|
10
|
+
Transaction,
|
|
11
|
+
Validation
|
|
11
12
|
} from '@bsv/sdk'
|
|
12
13
|
import { buildSignableTransaction } from './buildSignableTransaction'
|
|
13
14
|
import {
|
|
14
15
|
AuthId,
|
|
15
16
|
ReviewActionResult,
|
|
16
|
-
StorageCreateActionResult,
|
|
17
|
-
StorageCreateTransactionSdkOutput,
|
|
18
17
|
StorageProcessActionArgs,
|
|
19
18
|
StorageProcessActionResults
|
|
20
19
|
} from '../../sdk/WalletStorage.interfaces'
|
|
21
20
|
import { completeSignedTransaction, verifyUnlockScripts } from './completeSignedTransaction'
|
|
22
21
|
import { PendingSignAction, Wallet } from '../../Wallet'
|
|
23
|
-
import { ValidCreateActionArgs, ValidCreateActionInput, ValidProcessActionArgs } from '../../sdk/validationHelpers'
|
|
24
22
|
import { WERR_INTERNAL } from '../../sdk/WERR_errors'
|
|
25
|
-
import { KeyPair } from '../../sdk/types'
|
|
26
|
-
import { verifyTruthy } from '../../utility/utilityHelpers'
|
|
27
|
-
import { ScriptTemplateBRC29 } from '../../utility/ScriptTemplateBRC29'
|
|
28
23
|
|
|
29
24
|
export interface CreateActionResultX extends CreateActionResult {
|
|
30
25
|
txid?: TXIDHexString
|
|
@@ -38,33 +33,41 @@ export interface CreateActionResultX extends CreateActionResult {
|
|
|
38
33
|
export async function createAction(
|
|
39
34
|
wallet: Wallet,
|
|
40
35
|
auth: AuthId,
|
|
41
|
-
vargs: ValidCreateActionArgs
|
|
36
|
+
vargs: Validation.ValidCreateActionArgs
|
|
42
37
|
): Promise<CreateActionResultX> {
|
|
43
38
|
const r: CreateActionResultX = {}
|
|
39
|
+
const logger = vargs.logger
|
|
44
40
|
|
|
45
41
|
let prior: PendingSignAction | undefined = undefined
|
|
46
42
|
|
|
47
43
|
if (vargs.isNewTx || vargs.isTestWerrReviewActions) {
|
|
48
44
|
prior = await createNewTx(wallet, vargs)
|
|
45
|
+
logger?.log('created new transaction')
|
|
49
46
|
|
|
50
47
|
if (vargs.isSignAction) {
|
|
51
|
-
|
|
48
|
+
const r = makeSignableTransactionResult(prior, wallet, vargs)
|
|
49
|
+
logger?.log('created signable transaction result')
|
|
50
|
+
return r
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
prior.tx = await completeSignedTransaction(prior, {}, wallet)
|
|
54
|
+
logger?.log('completed signed transaction')
|
|
55
55
|
|
|
56
56
|
r.txid = prior.tx.id('hex')
|
|
57
57
|
const beef = new Beef()
|
|
58
58
|
if (prior.dcr.inputBeef) beef.mergeBeef(prior.dcr.inputBeef)
|
|
59
59
|
beef.mergeTransaction(prior.tx)
|
|
60
|
+
logger?.log('merged beef')
|
|
60
61
|
|
|
61
62
|
verifyUnlockScripts(r.txid, beef)
|
|
63
|
+
logger?.log('verified unlock scripts')
|
|
62
64
|
|
|
63
65
|
r.noSendChange = prior.dcr.noSendChangeOutputVouts?.map(vout => `${r.txid}.${vout}`)
|
|
64
66
|
if (!vargs.options.returnTXIDOnly) r.tx = beef.toBinaryAtomic(r.txid)
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
const { sendWithResults, notDelayedResults } = await processAction(prior, wallet, auth, vargs)
|
|
70
|
+
logger?.log('processed transaction')
|
|
68
71
|
|
|
69
72
|
r.sendWithResults = sendWithResults
|
|
70
73
|
r.notDelayedResults = notDelayedResults
|
|
@@ -72,15 +75,17 @@ export async function createAction(
|
|
|
72
75
|
return r
|
|
73
76
|
}
|
|
74
77
|
|
|
75
|
-
async function createNewTx(wallet: Wallet,
|
|
76
|
-
const
|
|
78
|
+
async function createNewTx(wallet: Wallet, vargs: Validation.ValidCreateActionArgs): Promise<PendingSignAction> {
|
|
79
|
+
const logger = vargs.logger
|
|
80
|
+
const storageArgs = removeUnlockScripts(vargs)
|
|
77
81
|
const dcr = await wallet.storage.createAction(storageArgs)
|
|
78
82
|
|
|
79
83
|
const reference = dcr.reference
|
|
80
84
|
|
|
81
|
-
const { tx, amount, pdi } = buildSignableTransaction(dcr,
|
|
85
|
+
const { tx, amount, pdi } = buildSignableTransaction(dcr, vargs, wallet)
|
|
86
|
+
logger?.log('built signable transaction')
|
|
82
87
|
|
|
83
|
-
const prior: PendingSignAction = { reference, dcr, args, amount, tx, pdi }
|
|
88
|
+
const prior: PendingSignAction = { reference, dcr, args: vargs, amount, tx, pdi }
|
|
84
89
|
|
|
85
90
|
return prior
|
|
86
91
|
}
|
|
@@ -88,7 +93,7 @@ async function createNewTx(wallet: Wallet, args: ValidCreateActionArgs): Promise
|
|
|
88
93
|
function makeSignableTransactionResult(
|
|
89
94
|
prior: PendingSignAction,
|
|
90
95
|
wallet: Wallet,
|
|
91
|
-
args: ValidCreateActionArgs
|
|
96
|
+
args: Validation.ValidCreateActionArgs
|
|
92
97
|
): CreateActionResult {
|
|
93
98
|
if (!prior.dcr.inputBeef) throw new WERR_INTERNAL('prior.dcr.inputBeef must be valid')
|
|
94
99
|
|
|
@@ -120,13 +125,13 @@ function makeSignableTransactionBeef(tx: Transaction, inputBEEF: number[]): numb
|
|
|
120
125
|
return beef.toBinaryAtomic(tx.id('hex'))
|
|
121
126
|
}
|
|
122
127
|
|
|
123
|
-
function removeUnlockScripts(args: ValidCreateActionArgs) {
|
|
128
|
+
function removeUnlockScripts(args: Validation.ValidCreateActionArgs) {
|
|
124
129
|
let storageArgs = args
|
|
125
130
|
if (!storageArgs.inputs.every(i => i.unlockingScript === undefined)) {
|
|
126
131
|
// Never send unlocking scripts to storage, all it needs is the script length.
|
|
127
132
|
storageArgs = { ...args, inputs: [] }
|
|
128
133
|
for (const i of args.inputs) {
|
|
129
|
-
const di: ValidCreateActionInput = {
|
|
134
|
+
const di: Validation.ValidCreateActionInput = {
|
|
130
135
|
...i,
|
|
131
136
|
unlockingScriptLength: i.unlockingScript !== undefined ? i.unlockingScript.length : i.unlockingScriptLength
|
|
132
137
|
}
|
|
@@ -141,7 +146,7 @@ export async function processAction(
|
|
|
141
146
|
prior: PendingSignAction | undefined,
|
|
142
147
|
wallet: Wallet,
|
|
143
148
|
auth: AuthId,
|
|
144
|
-
vargs: ValidProcessActionArgs
|
|
149
|
+
vargs: Validation.ValidProcessActionArgs
|
|
145
150
|
): Promise<StorageProcessActionResults> {
|
|
146
151
|
const args: StorageProcessActionArgs = {
|
|
147
152
|
isNewTx: vargs.isNewTx,
|
|
@@ -151,7 +156,8 @@ export async function processAction(
|
|
|
151
156
|
reference: prior ? prior.reference : undefined,
|
|
152
157
|
txid: prior ? prior.tx.id('hex') : undefined,
|
|
153
158
|
rawTx: prior ? prior.tx.toBinary() : undefined,
|
|
154
|
-
sendWith: vargs.isSendWith ? vargs.options.sendWith : []
|
|
159
|
+
sendWith: vargs.isSendWith ? vargs.options.sendWith : [],
|
|
160
|
+
logger: vargs.logger
|
|
155
161
|
}
|
|
156
162
|
const r: StorageProcessActionResults = await wallet.storage.processAction(args)
|
|
157
163
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Beef, InternalizeActionArgs, InternalizeOutput, P2PKH, WalletProtocol } from '@bsv/sdk'
|
|
1
|
+
import { Beef, InternalizeActionArgs, InternalizeOutput, P2PKH, WalletProtocol, Validation } from '@bsv/sdk'
|
|
2
2
|
import { Wallet } from '../../Wallet'
|
|
3
3
|
import { AuthId, StorageInternalizeActionResult } from '../../sdk/WalletStorage.interfaces'
|
|
4
|
-
import { validateInternalizeActionArgs, ValidInternalizeActionArgs } from '../../sdk/validationHelpers'
|
|
5
4
|
import { WERR_INTERNAL, WERR_INVALID_PARAMETER } from '../../sdk/WERR_errors'
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -36,7 +35,7 @@ export async function internalizeAction(
|
|
|
36
35
|
auth: AuthId,
|
|
37
36
|
args: InternalizeActionArgs
|
|
38
37
|
): Promise<StorageInternalizeActionResult> {
|
|
39
|
-
const vargs = validateInternalizeActionArgs(args)
|
|
38
|
+
const vargs = Validation.validateInternalizeActionArgs(args)
|
|
40
39
|
|
|
41
40
|
const { ab, tx, txid } = await validateAtomicBeef()
|
|
42
41
|
const brc29ProtocolID: WalletProtocol = [2, '3241645161d8']
|
|
@@ -60,7 +59,7 @@ export async function internalizeAction(
|
|
|
60
59
|
|
|
61
60
|
return r
|
|
62
61
|
|
|
63
|
-
function setupWalletPaymentForOutput(o: InternalizeOutput, dargs: ValidInternalizeActionArgs) {
|
|
62
|
+
function setupWalletPaymentForOutput(o: InternalizeOutput, dargs: Validation.ValidInternalizeActionArgs) {
|
|
64
63
|
const p = o.paymentRemittance
|
|
65
64
|
const output = tx.outputs[o.outputIndex]
|
|
66
65
|
if (!p) throw new WERR_INVALID_PARAMETER('paymentRemittance', `valid for protocol ${o.protocol}`)
|
|
@@ -73,7 +72,7 @@ export async function internalizeAction(
|
|
|
73
72
|
throw new WERR_INVALID_PARAMETER('paymentRemittance', `locked by script conforming to BRC-29`)
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
function setupBasketInsertionForOutput(o: InternalizeOutput, dargs: ValidInternalizeActionArgs) {
|
|
75
|
+
function setupBasketInsertionForOutput(o: InternalizeOutput, dargs: Validation.ValidInternalizeActionArgs) {
|
|
77
76
|
/*
|
|
78
77
|
No additional validations...
|
|
79
78
|
*/
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { MasterCertificate, ProveCertificateResult } from '@bsv/sdk'
|
|
1
|
+
import { MasterCertificate, ProveCertificateResult, Validation } from '@bsv/sdk'
|
|
2
2
|
import { Wallet } from '../../Wallet'
|
|
3
3
|
import { WERR_INVALID_PARAMETER } from '../../sdk/WERR_errors'
|
|
4
|
-
import { ValidListCertificatesArgs, ValidProveCertificateArgs } from '../../sdk/validationHelpers'
|
|
5
4
|
import { AuthId } from '../../sdk/WalletStorage.interfaces'
|
|
6
5
|
|
|
7
6
|
export async function proveCertificate(
|
|
8
7
|
wallet: Wallet,
|
|
9
8
|
auth: AuthId,
|
|
10
|
-
vargs: ValidProveCertificateArgs
|
|
9
|
+
vargs: Validation.ValidProveCertificateArgs
|
|
11
10
|
): Promise<ProveCertificateResult> {
|
|
12
|
-
const lcargs: ValidListCertificatesArgs = {
|
|
11
|
+
const lcargs: Validation.ValidListCertificatesArgs = {
|
|
13
12
|
partial: {
|
|
14
13
|
type: vargs.type,
|
|
15
14
|
serialNumber: vargs.serialNumber,
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { AtomicBEEF, Beef, SendWithResult, SignActionArgs, SignActionResult, TXIDHexString } from '@bsv/sdk'
|
|
1
|
+
import { AtomicBEEF, Beef, SendWithResult, SignActionArgs, SignActionResult, TXIDHexString, Validation } from '@bsv/sdk'
|
|
2
2
|
import { processAction } from './createAction'
|
|
3
3
|
import { AuthId, ReviewActionResult } from '../../sdk/WalletStorage.interfaces'
|
|
4
4
|
import { completeSignedTransaction, verifyUnlockScripts } from './completeSignedTransaction'
|
|
5
5
|
import { Wallet } from '../../Wallet'
|
|
6
6
|
import { WERR_INTERNAL, WERR_NOT_IMPLEMENTED } from '../../sdk/WERR_errors'
|
|
7
|
-
import { validateSignActionArgs, ValidCreateActionArgs, ValidSignActionArgs } from '../../sdk/validationHelpers'
|
|
8
7
|
|
|
9
8
|
export interface SignActionResultX extends SignActionResult {
|
|
10
9
|
txid?: TXIDHexString
|
|
@@ -41,12 +40,15 @@ export async function signAction(wallet: Wallet, auth: AuthId, args: SignActionA
|
|
|
41
40
|
return r
|
|
42
41
|
}
|
|
43
42
|
|
|
44
|
-
function mergePriorOptions(
|
|
43
|
+
function mergePriorOptions(
|
|
44
|
+
caVargs: Validation.ValidCreateActionArgs,
|
|
45
|
+
saArgs: SignActionArgs
|
|
46
|
+
): Validation.ValidSignActionArgs {
|
|
45
47
|
const saOptions = (saArgs.options ||= {})
|
|
46
48
|
if (saOptions.acceptDelayedBroadcast === undefined)
|
|
47
49
|
saOptions.acceptDelayedBroadcast = caVargs.options.acceptDelayedBroadcast
|
|
48
50
|
if (saOptions.returnTXIDOnly === undefined) saOptions.returnTXIDOnly = caVargs.options.returnTXIDOnly
|
|
49
51
|
if (saOptions.noSend === undefined) saOptions.noSend = caVargs.options.noSend
|
|
50
52
|
if (saOptions.sendWith === undefined) saOptions.sendWith = caVargs.options.sendWith
|
|
51
|
-
return validateSignActionArgs(saArgs)
|
|
53
|
+
return Validation.validateSignActionArgs(saArgs)
|
|
52
54
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { deleteDB, IDBPCursorWithValue, IDBPDatabase, IDBPTransaction, openDB } from 'idb'
|
|
2
|
-
import { ListActionsResult, ListOutputsResult } from '@bsv/sdk'
|
|
2
|
+
import { ListActionsResult, ListOutputsResult, Validation } from '@bsv/sdk'
|
|
3
3
|
import {
|
|
4
4
|
TableCertificate,
|
|
5
5
|
TableCertificateField,
|
|
@@ -53,7 +53,6 @@ import {
|
|
|
53
53
|
} from '../sdk/WalletStorage.interfaces'
|
|
54
54
|
import { WERR_INTERNAL, WERR_INVALID_OPERATION, WERR_INVALID_PARAMETER, WERR_UNAUTHORIZED } from '../sdk/WERR_errors'
|
|
55
55
|
import { EntityTimeStamp, TransactionStatus } from '../sdk/types'
|
|
56
|
-
import { ValidListActionsArgs, ValidListOutputsArgs } from '../sdk/validationHelpers'
|
|
57
56
|
|
|
58
57
|
export interface StorageIdbOptions extends StorageProviderOptions {}
|
|
59
58
|
|
|
@@ -464,12 +463,12 @@ export class StorageIdb extends StorageProvider implements WalletStorageProvider
|
|
|
464
463
|
return tags
|
|
465
464
|
}
|
|
466
465
|
|
|
467
|
-
async listActions(auth: AuthId, vargs: ValidListActionsArgs): Promise<ListActionsResult> {
|
|
466
|
+
async listActions(auth: AuthId, vargs: Validation.ValidListActionsArgs): Promise<ListActionsResult> {
|
|
468
467
|
if (!auth.userId) throw new WERR_UNAUTHORIZED()
|
|
469
468
|
return await listActionsIdb(this, auth, vargs)
|
|
470
469
|
}
|
|
471
470
|
|
|
472
|
-
async listOutputs(auth: AuthId, vargs: ValidListOutputsArgs): Promise<ListOutputsResult> {
|
|
471
|
+
async listOutputs(auth: AuthId, vargs: Validation.ValidListOutputsArgs): Promise<ListOutputsResult> {
|
|
473
472
|
if (!auth.userId) throw new WERR_UNAUTHORIZED()
|
|
474
473
|
return await listOutputsIdb(this, auth, vargs)
|
|
475
474
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ListActionsResult, ListOutputsResult } from '@bsv/sdk'
|
|
1
|
+
import { ListActionsResult, ListOutputsResult, Validation } from '@bsv/sdk'
|
|
2
2
|
import {
|
|
3
3
|
outputColumnsWithoutLockingScript,
|
|
4
4
|
TableCertificate,
|
|
@@ -56,7 +56,6 @@ import {
|
|
|
56
56
|
} from '../sdk/WalletStorage.interfaces'
|
|
57
57
|
import { WERR_INTERNAL, WERR_INVALID_PARAMETER, WERR_NOT_IMPLEMENTED, WERR_UNAUTHORIZED } from '../sdk/WERR_errors'
|
|
58
58
|
import { verifyOne, verifyOneOrNone, verifyTruthy } from '../utility/utilityHelpers'
|
|
59
|
-
import { ValidListActionsArgs, ValidListOutputsArgs } from '../sdk/validationHelpers'
|
|
60
59
|
import { EntityTimeStamp, TransactionStatus } from '../sdk/types'
|
|
61
60
|
|
|
62
61
|
export interface StorageKnexOptions extends StorageProviderOptions {
|
|
@@ -232,11 +231,11 @@ export class StorageKnex extends StorageProvider implements WalletStorageProvide
|
|
|
232
231
|
return this.validateEntities(rs, undefined, ['isDeleted'])
|
|
233
232
|
}
|
|
234
233
|
|
|
235
|
-
override async listActions(auth: AuthId, vargs: ValidListActionsArgs): Promise<ListActionsResult> {
|
|
234
|
+
override async listActions(auth: AuthId, vargs: Validation.ValidListActionsArgs): Promise<ListActionsResult> {
|
|
236
235
|
if (!auth.userId) throw new WERR_UNAUTHORIZED()
|
|
237
236
|
return await listActions(this, auth, vargs)
|
|
238
237
|
}
|
|
239
|
-
override async listOutputs(auth: AuthId, vargs: ValidListOutputsArgs): Promise<ListOutputsResult> {
|
|
238
|
+
override async listOutputs(auth: AuthId, vargs: Validation.ValidListOutputsArgs): Promise<ListOutputsResult> {
|
|
240
239
|
if (!auth.userId) throw new WERR_UNAUTHORIZED()
|
|
241
240
|
return await listOutputs(this, auth, vargs)
|
|
242
241
|
}
|
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
AbortActionResult,
|
|
4
4
|
Beef,
|
|
5
5
|
InternalizeActionArgs,
|
|
6
|
-
InternalizeActionResult,
|
|
7
6
|
ListActionsResult,
|
|
8
7
|
ListOutputsResult,
|
|
9
8
|
PubKeyHex,
|
|
@@ -11,7 +10,9 @@ import {
|
|
|
11
10
|
TrustSelf,
|
|
12
11
|
RelinquishCertificateArgs,
|
|
13
12
|
RelinquishOutputArgs,
|
|
14
|
-
AbortActionArgs
|
|
13
|
+
AbortActionArgs,
|
|
14
|
+
Validation,
|
|
15
|
+
WalletLoggerInterface
|
|
15
16
|
} from '@bsv/sdk'
|
|
16
17
|
import { getBeefForTransaction } from './methods/getBeefForTransaction'
|
|
17
18
|
import { GetReqsAndBeefDetail, GetReqsAndBeefResult, processAction } from './methods/processAction'
|
|
@@ -53,15 +54,6 @@ import { TableOutput, TableOutputX } from '../../src/storage/schema/tables/Table
|
|
|
53
54
|
import { TableOutputTag } from '../../src/storage/schema/tables/TableOutputTag'
|
|
54
55
|
import { TableTxLabel } from '../../src/storage/schema/tables/TableTxLabel'
|
|
55
56
|
import { TableMonitorEvent } from '../../src/storage/schema/tables/TableMonitorEvent'
|
|
56
|
-
import {
|
|
57
|
-
parseWalletOutpoint,
|
|
58
|
-
validateRelinquishCertificateArgs,
|
|
59
|
-
validateRelinquishOutputArgs,
|
|
60
|
-
ValidCreateActionArgs,
|
|
61
|
-
ValidListActionsArgs,
|
|
62
|
-
ValidListCertificatesArgs,
|
|
63
|
-
ValidListOutputsArgs
|
|
64
|
-
} from '../sdk/validationHelpers'
|
|
65
57
|
import { TableCertificateX } from './schema/tables/TableCertificate'
|
|
66
58
|
import {
|
|
67
59
|
WERR_INTERNAL,
|
|
@@ -130,8 +122,8 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
|
|
|
130
122
|
abstract getLabelsForTransactionId(transactionId?: number, trx?: TrxToken): Promise<TableTxLabel[]>
|
|
131
123
|
abstract getTagsForOutputId(outputId: number, trx?: TrxToken): Promise<TableOutputTag[]>
|
|
132
124
|
|
|
133
|
-
abstract listActions(auth: AuthId, args: ValidListActionsArgs): Promise<ListActionsResult>
|
|
134
|
-
abstract listOutputs(auth: AuthId, args: ValidListOutputsArgs): Promise<ListOutputsResult>
|
|
125
|
+
abstract listActions(auth: AuthId, args: Validation.ValidListActionsArgs): Promise<ListActionsResult>
|
|
126
|
+
abstract listOutputs(auth: AuthId, args: Validation.ValidListOutputsArgs): Promise<ListOutputsResult>
|
|
135
127
|
|
|
136
128
|
abstract countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number>
|
|
137
129
|
|
|
@@ -420,7 +412,7 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
|
|
|
420
412
|
}, trx)
|
|
421
413
|
}
|
|
422
414
|
|
|
423
|
-
async createAction(auth: AuthId, args: ValidCreateActionArgs): Promise<StorageCreateActionResult> {
|
|
415
|
+
async createAction(auth: AuthId, args: Validation.ValidCreateActionArgs): Promise<StorageCreateActionResult> {
|
|
424
416
|
if (!auth.userId) throw new WERR_UNAUTHORIZED()
|
|
425
417
|
return await createAction(this, auth, args)
|
|
426
418
|
}
|
|
@@ -429,11 +421,15 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
|
|
|
429
421
|
return await processAction(this, auth, args)
|
|
430
422
|
}
|
|
431
423
|
|
|
432
|
-
async attemptToPostReqsToNetwork(
|
|
433
|
-
|
|
424
|
+
async attemptToPostReqsToNetwork(
|
|
425
|
+
reqs: EntityProvenTxReq[],
|
|
426
|
+
trx?: TrxToken,
|
|
427
|
+
logger?: WalletLoggerInterface
|
|
428
|
+
): Promise<PostReqsToNetworkResult> {
|
|
429
|
+
return await attemptToPostReqsToNetwork(this, reqs, trx, logger)
|
|
434
430
|
}
|
|
435
431
|
|
|
436
|
-
async listCertificates(auth: AuthId, args: ValidListCertificatesArgs): Promise<ListCertificatesResult> {
|
|
432
|
+
async listCertificates(auth: AuthId, args: Validation.ValidListCertificatesArgs): Promise<ListCertificatesResult> {
|
|
437
433
|
return await listCertificates(this, auth, args)
|
|
438
434
|
}
|
|
439
435
|
|
|
@@ -511,7 +507,7 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
|
|
|
511
507
|
}
|
|
512
508
|
|
|
513
509
|
async relinquishCertificate(auth: AuthId, args: RelinquishCertificateArgs): Promise<number> {
|
|
514
|
-
const vargs = validateRelinquishCertificateArgs(args)
|
|
510
|
+
const vargs = Validation.validateRelinquishCertificateArgs(args)
|
|
515
511
|
const cert = verifyOne(
|
|
516
512
|
await this.findCertificates({
|
|
517
513
|
partial: {
|
|
@@ -527,8 +523,8 @@ export abstract class StorageProvider extends StorageReaderWriter implements Wal
|
|
|
527
523
|
}
|
|
528
524
|
|
|
529
525
|
async relinquishOutput(auth: AuthId, args: RelinquishOutputArgs): Promise<number> {
|
|
530
|
-
const vargs = validateRelinquishOutputArgs(args)
|
|
531
|
-
const { txid, vout } = parseWalletOutpoint(vargs.output)
|
|
526
|
+
const vargs = Validation.validateRelinquishOutputArgs(args)
|
|
527
|
+
const { txid, vout } = Validation.parseWalletOutpoint(vargs.output)
|
|
532
528
|
const output = verifyOne(await this.findOutputs({ partial: { txid, vout } }))
|
|
533
529
|
return await this.updateOutput(output.outputId, { basketId: undefined })
|
|
534
530
|
}
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
AbortActionResult,
|
|
4
4
|
Beef,
|
|
5
5
|
InternalizeActionArgs,
|
|
6
|
-
InternalizeActionResult,
|
|
7
6
|
ListActionsResult,
|
|
8
7
|
ListCertificatesResult,
|
|
9
8
|
ListOutputsResult,
|
|
10
9
|
RelinquishCertificateArgs,
|
|
11
|
-
RelinquishOutputArgs
|
|
10
|
+
RelinquishOutputArgs,
|
|
11
|
+
Validation
|
|
12
12
|
} from '@bsv/sdk'
|
|
13
13
|
import { EntitySyncState } from '../storage/schema/entities'
|
|
14
14
|
import * as sdk from '../sdk'
|
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
TableSettings,
|
|
23
23
|
TableUser
|
|
24
24
|
} from '../storage/schema/tables'
|
|
25
|
-
import { wait } from '../utility/utilityHelpers'
|
|
26
25
|
import { StorageProvider } from './StorageProvider'
|
|
27
26
|
import { StorageClient } from './remoting/StorageClient'
|
|
28
27
|
|
|
@@ -430,20 +429,20 @@ export class WalletStorageManager implements sdk.WalletStorage {
|
|
|
430
429
|
}
|
|
431
430
|
|
|
432
431
|
async abortAction(args: AbortActionArgs): Promise<AbortActionResult> {
|
|
433
|
-
|
|
432
|
+
Validation.validateAbortActionArgs(args)
|
|
434
433
|
return await this.runAsWriter(async writer => {
|
|
435
434
|
const auth = await this.getAuth(true)
|
|
436
435
|
return await writer.abortAction(auth, args)
|
|
437
436
|
})
|
|
438
437
|
}
|
|
439
|
-
async createAction(vargs:
|
|
438
|
+
async createAction(vargs: Validation.ValidCreateActionArgs): Promise<sdk.StorageCreateActionResult> {
|
|
440
439
|
return await this.runAsWriter(async writer => {
|
|
441
440
|
const auth = await this.getAuth(true)
|
|
442
441
|
return await writer.createAction(auth, vargs)
|
|
443
442
|
})
|
|
444
443
|
}
|
|
445
444
|
async internalizeAction(args: InternalizeActionArgs): Promise<sdk.StorageInternalizeActionResult> {
|
|
446
|
-
|
|
445
|
+
Validation.validateInternalizeActionArgs(args)
|
|
447
446
|
return await this.runAsWriter(async writer => {
|
|
448
447
|
const auth = await this.getAuth(true)
|
|
449
448
|
return await writer.internalizeAction(auth, args)
|
|
@@ -451,14 +450,14 @@ export class WalletStorageManager implements sdk.WalletStorage {
|
|
|
451
450
|
}
|
|
452
451
|
|
|
453
452
|
async relinquishCertificate(args: RelinquishCertificateArgs): Promise<number> {
|
|
454
|
-
|
|
453
|
+
Validation.validateRelinquishCertificateArgs(args)
|
|
455
454
|
return await this.runAsWriter(async writer => {
|
|
456
455
|
const auth = await this.getAuth(true)
|
|
457
456
|
return await writer.relinquishCertificate(auth, args)
|
|
458
457
|
})
|
|
459
458
|
}
|
|
460
459
|
async relinquishOutput(args: RelinquishOutputArgs): Promise<number> {
|
|
461
|
-
|
|
460
|
+
Validation.validateRelinquishOutputArgs(args)
|
|
462
461
|
return await this.runAsWriter(async writer => {
|
|
463
462
|
const auth = await this.getAuth(true)
|
|
464
463
|
return await writer.relinquishOutput(auth, args)
|
|
@@ -478,19 +477,19 @@ export class WalletStorageManager implements sdk.WalletStorage {
|
|
|
478
477
|
})
|
|
479
478
|
}
|
|
480
479
|
|
|
481
|
-
async listActions(vargs:
|
|
480
|
+
async listActions(vargs: Validation.ValidListActionsArgs): Promise<ListActionsResult> {
|
|
482
481
|
const auth = await this.getAuth()
|
|
483
482
|
return await this.runAsReader(async reader => {
|
|
484
483
|
return await reader.listActions(auth, vargs)
|
|
485
484
|
})
|
|
486
485
|
}
|
|
487
|
-
async listCertificates(args:
|
|
486
|
+
async listCertificates(args: Validation.ValidListCertificatesArgs): Promise<ListCertificatesResult> {
|
|
488
487
|
const auth = await this.getAuth()
|
|
489
488
|
return await this.runAsReader(async reader => {
|
|
490
489
|
return await reader.listCertificates(auth, args)
|
|
491
490
|
})
|
|
492
491
|
}
|
|
493
|
-
async listOutputs(vargs:
|
|
492
|
+
async listOutputs(vargs: Validation.ValidListOutputsArgs): Promise<ListOutputsResult> {
|
|
494
493
|
const auth = await this.getAuth()
|
|
495
494
|
return await this.runAsReader(async reader => {
|
|
496
495
|
return await reader.listOutputs(auth, vargs)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Beef, ListActionsResult, ListOutputsResult, Utils } from '@bsv/sdk'
|
|
1
|
+
import { Beef, ListActionsResult, ListOutputsResult, Utils, Validation } from '@bsv/sdk'
|
|
2
2
|
import { StorageAdminStats, StorageProvider } from '../StorageProvider'
|
|
3
3
|
import { Chain } from '../../sdk/types'
|
|
4
4
|
import { Services } from '../../services/Services'
|
|
@@ -45,7 +45,6 @@ import {
|
|
|
45
45
|
StorageGetBeefOptions,
|
|
46
46
|
TrxToken
|
|
47
47
|
} from '../../sdk/WalletStorage.interfaces'
|
|
48
|
-
import { ValidListActionsArgs, ValidListOutputsArgs } from '../../sdk/validationHelpers'
|
|
49
48
|
|
|
50
49
|
describe('getBeefForTransaction tests', () => {
|
|
51
50
|
jest.setTimeout(99999999)
|
|
@@ -129,10 +128,10 @@ class ProtoStorage extends StorageProvider {
|
|
|
129
128
|
override getTagsForOutputId(outputId: number, trx?: TrxToken): Promise<TableOutputTag[]> {
|
|
130
129
|
throw this.nip
|
|
131
130
|
}
|
|
132
|
-
override listActions(auth: AuthId, args: ValidListActionsArgs): Promise<ListActionsResult> {
|
|
131
|
+
override listActions(auth: AuthId, args: Validation.ValidListActionsArgs): Promise<ListActionsResult> {
|
|
133
132
|
throw this.nip
|
|
134
133
|
}
|
|
135
|
-
override listOutputs(auth: AuthId, args: ValidListOutputsArgs): Promise<ListOutputsResult> {
|
|
134
|
+
override listOutputs(auth: AuthId, args: Validation.ValidListOutputsArgs): Promise<ListOutputsResult> {
|
|
136
135
|
throw this.nip
|
|
137
136
|
}
|
|
138
137
|
override countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number> {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { Validation } from '@bsv/sdk'
|
|
1
2
|
import { specOpFailedActions, specOpNoSendActions, TransactionStatus } from '../../sdk/types'
|
|
2
|
-
import { ValidListActionsArgs } from '../../sdk/validationHelpers'
|
|
3
3
|
import { AuthId } from '../../sdk/WalletStorage.interfaces'
|
|
4
4
|
import { TableTransaction } from '../schema/tables/TableTransaction'
|
|
5
5
|
import { StorageProvider } from '../StorageProvider'
|
|
@@ -16,7 +16,7 @@ export interface ListActionsSpecOp {
|
|
|
16
16
|
postProcess?: (
|
|
17
17
|
s: StorageProvider,
|
|
18
18
|
auth: AuthId,
|
|
19
|
-
vargs: ValidListActionsArgs,
|
|
19
|
+
vargs: Validation.ValidListActionsArgs,
|
|
20
20
|
specOpLabels: string[],
|
|
21
21
|
txs: Partial<TableTransaction>[]
|
|
22
22
|
) => Promise<void>
|
|
@@ -31,7 +31,7 @@ export const getLabelToSpecOp: () => Record<string, ListActionsSpecOp> = () => {
|
|
|
31
31
|
postProcess: async (
|
|
32
32
|
s: StorageProvider,
|
|
33
33
|
auth: AuthId,
|
|
34
|
-
vargs: ValidListActionsArgs,
|
|
34
|
+
vargs: Validation.ValidListActionsArgs,
|
|
35
35
|
specOpLabels: string[],
|
|
36
36
|
txs: Partial<TableTransaction>[]
|
|
37
37
|
): Promise<void> => {
|
|
@@ -52,7 +52,7 @@ export const getLabelToSpecOp: () => Record<string, ListActionsSpecOp> = () => {
|
|
|
52
52
|
postProcess: async (
|
|
53
53
|
s: StorageProvider,
|
|
54
54
|
auth: AuthId,
|
|
55
|
-
vargs: ValidListActionsArgs,
|
|
55
|
+
vargs: Validation.ValidListActionsArgs,
|
|
56
56
|
specOpLabels: string[],
|
|
57
57
|
txs: Partial<TableTransaction>[]
|
|
58
58
|
): Promise<void> => {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { ListOutputsResult } from '@bsv/sdk'
|
|
2
|
-
import { ValidListOutputsArgs } from '../../sdk/validationHelpers'
|
|
1
|
+
import { ListOutputsResult, Validation } from '@bsv/sdk'
|
|
3
2
|
import { StorageProvider } from '../StorageProvider'
|
|
4
3
|
import { AuthId } from '../../sdk/WalletStorage.interfaces'
|
|
5
4
|
import { TableOutput } from '../schema/tables/TableOutput'
|
|
@@ -16,20 +15,20 @@ export interface ListOutputsSpecOp {
|
|
|
16
15
|
resultFromTags?: (
|
|
17
16
|
s: StorageProvider,
|
|
18
17
|
auth: AuthId,
|
|
19
|
-
vargs: ValidListOutputsArgs,
|
|
18
|
+
vargs: Validation.ValidListOutputsArgs,
|
|
20
19
|
specOpTags: string[]
|
|
21
20
|
) => Promise<ListOutputsResult>
|
|
22
21
|
resultFromOutputs?: (
|
|
23
22
|
s: StorageProvider,
|
|
24
23
|
auth: AuthId,
|
|
25
|
-
vargs: ValidListOutputsArgs,
|
|
24
|
+
vargs: Validation.ValidListOutputsArgs,
|
|
26
25
|
specOpTags: string[],
|
|
27
26
|
outputs: TableOutput[]
|
|
28
27
|
) => Promise<ListOutputsResult>
|
|
29
28
|
filterOutputs?: (
|
|
30
29
|
s: StorageProvider,
|
|
31
30
|
auth: AuthId,
|
|
32
|
-
vargs: ValidListOutputsArgs,
|
|
31
|
+
vargs: Validation.ValidListOutputsArgs,
|
|
33
32
|
specOpTags: string[],
|
|
34
33
|
outputs: TableOutput[]
|
|
35
34
|
) => Promise<TableOutput[]>
|
|
@@ -54,7 +53,7 @@ export const getBasketToSpecOp: () => Record<string, ListOutputsSpecOp> = () =>
|
|
|
54
53
|
resultFromOutputs: async (
|
|
55
54
|
s: StorageProvider,
|
|
56
55
|
auth: AuthId,
|
|
57
|
-
vargs: ValidListOutputsArgs,
|
|
56
|
+
vargs: Validation.ValidListOutputsArgs,
|
|
58
57
|
specOpTags: string[],
|
|
59
58
|
outputs: TableOutput[]
|
|
60
59
|
): Promise<ListOutputsResult> => {
|
|
@@ -73,7 +72,7 @@ export const getBasketToSpecOp: () => Record<string, ListOutputsSpecOp> = () =>
|
|
|
73
72
|
filterOutputs: async (
|
|
74
73
|
s: StorageProvider,
|
|
75
74
|
auth: AuthId,
|
|
76
|
-
vargs: ValidListOutputsArgs,
|
|
75
|
+
vargs: Validation.ValidListOutputsArgs,
|
|
77
76
|
specOpTags: string[],
|
|
78
77
|
outputs: TableOutput[]
|
|
79
78
|
): Promise<TableOutput[]> => {
|
|
@@ -106,7 +105,7 @@ export const getBasketToSpecOp: () => Record<string, ListOutputsSpecOp> = () =>
|
|
|
106
105
|
resultFromTags: async (
|
|
107
106
|
s: StorageProvider,
|
|
108
107
|
auth: AuthId,
|
|
109
|
-
vargs: ValidListOutputsArgs,
|
|
108
|
+
vargs: Validation.ValidListOutputsArgs,
|
|
110
109
|
specOpTags: string[]
|
|
111
110
|
): Promise<ListOutputsResult> => {
|
|
112
111
|
if (specOpTags.length !== 2)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Beef, Transaction } from '@bsv/sdk'
|
|
1
|
+
import { Beef, Transaction, WalletLoggerInterface } from '@bsv/sdk'
|
|
2
2
|
import { StorageProvider } from '../StorageProvider'
|
|
3
3
|
import { EntityProvenTxReq } from '../schema/entities'
|
|
4
4
|
import * as sdk from '../../sdk'
|
|
@@ -14,15 +14,17 @@ import { wait } from '../../utility/utilityHelpers'
|
|
|
14
14
|
export async function attemptToPostReqsToNetwork(
|
|
15
15
|
storage: StorageProvider,
|
|
16
16
|
reqs: EntityProvenTxReq[],
|
|
17
|
-
trx?: sdk.TrxToken
|
|
17
|
+
trx?: sdk.TrxToken,
|
|
18
|
+
logger?: WalletLoggerInterface
|
|
18
19
|
): Promise<PostReqsToNetworkResult> {
|
|
19
20
|
// initialize results, validate reqs ready to post, txids are of the transactions in the beef that we care about.
|
|
20
21
|
|
|
21
22
|
const { r, vreqs, txids } = await validateReqsAndMergeBeefs(storage, reqs, trx)
|
|
23
|
+
logger?.log(`validated request and merged beefs`)
|
|
22
24
|
|
|
23
25
|
const services = storage.getServices()
|
|
24
26
|
|
|
25
|
-
const pbrs = await services.postBeef(r.beef, txids)
|
|
27
|
+
const pbrs = await services.postBeef(r.beef, txids, logger)
|
|
26
28
|
|
|
27
29
|
// post beef results (pbrs) is an array by service provider
|
|
28
30
|
// for each service provider, there's an aggregate result and individual results by txid.
|
|
@@ -31,7 +33,7 @@ export async function attemptToPostReqsToNetwork(
|
|
|
31
33
|
|
|
32
34
|
const apbrs = aggregatePostBeefResultsByTxid(txids, vreqs, pbrs)
|
|
33
35
|
|
|
34
|
-
await updateReqsFromAggregateResults(txids, r, apbrs, storage, services, trx)
|
|
36
|
+
await updateReqsFromAggregateResults(txids, r, apbrs, storage, services, trx, logger)
|
|
35
37
|
|
|
36
38
|
return r
|
|
37
39
|
}
|
|
@@ -192,8 +194,10 @@ async function updateReqsFromAggregateResults(
|
|
|
192
194
|
apbrs: Record<string, AggregatePostBeefTxResult>,
|
|
193
195
|
storage: StorageProvider,
|
|
194
196
|
services?: sdk.WalletServices,
|
|
195
|
-
trx?: sdk.TrxToken
|
|
197
|
+
trx?: sdk.TrxToken,
|
|
198
|
+
logger?: WalletLoggerInterface
|
|
196
199
|
): Promise<void> {
|
|
200
|
+
logger?.group('update storage from aggregate results')
|
|
197
201
|
for (const txid of txids) {
|
|
198
202
|
const ar = apbrs[txid]!
|
|
199
203
|
const req = ar.vreq.req
|
|
@@ -216,7 +220,7 @@ async function updateReqsFromAggregateResults(
|
|
|
216
220
|
// However it happened, don't degrade status if it is somehow already beyond broadcast stage
|
|
217
221
|
continue
|
|
218
222
|
|
|
219
|
-
if (ar.status === 'doubleSpend' && services && !trx) await confirmDoubleSpend(ar, r.beef, storage, services)
|
|
223
|
+
if (ar.status === 'doubleSpend' && services && !trx) await confirmDoubleSpend(ar, r.beef, storage, services, logger)
|
|
220
224
|
|
|
221
225
|
let newReqStatus: sdk.ProvenTxReqStatus | undefined = undefined
|
|
222
226
|
let newTxStatus: sdk.TransactionStatus | undefined = undefined
|
|
@@ -263,7 +267,9 @@ async function updateReqsFromAggregateResults(
|
|
|
263
267
|
const details = r.details.find(d => d.txid === txid)!
|
|
264
268
|
details.status = ar.status
|
|
265
269
|
details.competingTxs = ar.competingTxs
|
|
270
|
+
logger?.log(`updated ${txid}`)
|
|
266
271
|
}
|
|
272
|
+
logger?.group('update storage from aggregate results')
|
|
267
273
|
}
|
|
268
274
|
|
|
269
275
|
/**
|
|
@@ -281,7 +287,8 @@ async function confirmDoubleSpend(
|
|
|
281
287
|
ar: AggregatePostBeefTxResult,
|
|
282
288
|
beef: Beef,
|
|
283
289
|
storage: StorageProvider,
|
|
284
|
-
services: sdk.WalletServices
|
|
290
|
+
services: sdk.WalletServices,
|
|
291
|
+
logger?: WalletLoggerInterface
|
|
285
292
|
): Promise<void> {
|
|
286
293
|
const req = ar.vreq.req
|
|
287
294
|
const note: ReqHistoryNote = { when: new Date().toISOString(), what: 'confirmDoubleSpend' }
|
|
@@ -312,7 +319,7 @@ async function confirmDoubleSpend(
|
|
|
312
319
|
if (!sourceTx) throw new sdk.WERR_INTERNAL(`beef lacks tx for ${input.sourceTXID}`)
|
|
313
320
|
const lockingScript = sourceTx.outputs[input.sourceOutputIndex].lockingScript.toHex()
|
|
314
321
|
const hash = services.hashOutputScript(lockingScript)
|
|
315
|
-
const shhrs = await services.getScriptHashHistory(hash)
|
|
322
|
+
const shhrs = await services.getScriptHashHistory(hash, undefined, logger)
|
|
316
323
|
if (shhrs.status === 'success') {
|
|
317
324
|
for (const h of shhrs.history) {
|
|
318
325
|
// Neither the source of the input nor the current transaction are competition.
|