@bsv/wallet-toolbox 1.3.23 → 1.3.25
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/docs/client.md +99 -59
- package/docs/storage.md +55 -75
- package/docs/wallet.md +99 -59
- package/mobile/out/src/Wallet.d.ts +1 -1
- package/mobile/out/src/Wallet.d.ts.map +1 -1
- package/mobile/out/src/Wallet.js +16 -6
- package/mobile/out/src/Wallet.js.map +1 -1
- package/mobile/out/src/monitor/Monitor.d.ts.map +1 -1
- package/mobile/out/src/monitor/Monitor.js +6 -4
- package/mobile/out/src/monitor/Monitor.js.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskNewHeader.d.ts +1 -1
- package/mobile/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.d.ts +12 -0
- package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.d.ts.map +1 -0
- package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.js +23 -0
- package/mobile/out/src/monitor/tasks/TaskServiceCallHistory.js.map +1 -0
- package/mobile/out/src/sdk/WalletServices.interfaces.d.ts +2 -0
- package/mobile/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts +19 -1
- package/mobile/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/mobile/out/src/services/ServiceCollection.d.ts +38 -0
- package/mobile/out/src/services/ServiceCollection.d.ts.map +1 -1
- package/mobile/out/src/services/ServiceCollection.js +85 -0
- package/mobile/out/src/services/ServiceCollection.js.map +1 -1
- package/mobile/out/src/services/Services.d.ts +11 -2
- package/mobile/out/src/services/Services.d.ts.map +1 -1
- package/mobile/out/src/services/Services.js +159 -68
- package/mobile/out/src/services/Services.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -0
- package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.js +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.js.map +1 -1
- package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts +1 -0
- package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/mobile/out/src/services/createDefaultWalletServicesOptions.js +15 -1
- package/mobile/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/mobile/out/src/services/providers/ARC.d.ts +3 -2
- package/mobile/out/src/services/providers/ARC.d.ts.map +1 -1
- package/mobile/out/src/services/providers/ARC.js +5 -4
- package/mobile/out/src/services/providers/ARC.js.map +1 -1
- package/mobile/out/src/signer/methods/internalizeAction.d.ts +2 -2
- package/mobile/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/mobile/out/src/signer/methods/internalizeAction.js +3 -13
- package/mobile/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/mobile/out/src/storage/StorageProvider.d.ts +5 -6
- package/mobile/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/mobile/out/src/storage/StorageProvider.js +75 -101
- package/mobile/out/src/storage/StorageProvider.js.map +1 -1
- package/mobile/out/src/storage/WalletStorageManager.d.ts +2 -2
- package/mobile/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/createAction.js +5 -1
- package/mobile/out/src/storage/methods/createAction.js.map +1 -1
- package/mobile/out/src/storage/methods/generateChange.d.ts +0 -24
- package/mobile/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/generateChange.js +2 -50
- package/mobile/out/src/storage/methods/generateChange.js.map +1 -1
- package/mobile/out/src/storage/methods/getBeefForTransaction.js +3 -2
- package/mobile/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/mobile/out/src/storage/methods/internalizeAction.d.ts +2 -10
- package/mobile/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/internalizeAction.js +17 -1
- package/mobile/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/mobile/out/src/storage/methods/processAction.d.ts +16 -1
- package/mobile/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/mobile/out/src/storage/methods/processAction.js +4 -1
- package/mobile/out/src/storage/methods/processAction.js.map +1 -1
- package/mobile/out/src/storage/methods/utils.d.ts +25 -0
- package/mobile/out/src/storage/methods/utils.d.ts.map +1 -0
- package/mobile/out/src/storage/methods/utils.js +53 -0
- package/mobile/out/src/storage/methods/utils.js.map +1 -0
- package/mobile/out/src/storage/remoting/StorageClient.d.ts +2 -2
- package/mobile/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/mobile/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/mobile/out/src/storage/remoting/StorageMobile.d.ts +2 -2
- 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/out/src/utility/utilityHelpers.d.ts +1 -1
- package/mobile/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/mobile/out/src/utility/utilityHelpers.js +3 -3
- package/mobile/out/src/utility/utilityHelpers.js.map +1 -1
- package/mobile/package-lock.json +7 -6
- package/mobile/package.json +2 -2
- package/out/src/Wallet.d.ts +1 -1
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +16 -6
- package/out/src/Wallet.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +6 -4
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskServiceCallHistory.d.ts +12 -0
- package/out/src/monitor/tasks/TaskServiceCallHistory.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskServiceCallHistory.js +23 -0
- package/out/src/monitor/tasks/TaskServiceCallHistory.js.map +1 -0
- 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 +19 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.d.ts +38 -0
- package/out/src/services/ServiceCollection.d.ts.map +1 -1
- package/out/src/services/ServiceCollection.js +85 -0
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +11 -2
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +159 -68
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts +2 -0
- package/out/src/services/__tests/ArcGorillaPool.man.test.d.ts.map +1 -0
- package/out/src/services/__tests/ArcGorillaPool.man.test.js +93 -0
- package/out/src/services/__tests/ArcGorillaPool.man.test.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/index.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.js +1 -1
- package/out/src/services/chaintracker/chaintracks/index.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +144 -0
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +463 -0
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts +20 -0
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js +31 -0
- package/out/src/services/chaintracker/chaintracks/util/dirtyHashes.js.map +1 -0
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +1 -0
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +15 -1
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/providers/ARC.d.ts +3 -2
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +5 -4
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts +2 -2
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +3 -13
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +50 -2
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +5 -6
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +75 -101
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +2 -2
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/__test/StorageIdb.test.js +1 -0
- package/out/src/storage/__test/StorageIdb.test.js.map +1 -1
- package/out/src/storage/__test/adminStats.man.test.js +2 -0
- package/out/src/storage/__test/adminStats.man.test.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +5 -1
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +0 -24
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +2 -50
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +3 -2
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +2 -10
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +17 -1
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts +16 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +4 -1
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/utils.Buffer.d.ts +21 -0
- package/out/src/storage/methods/utils.Buffer.d.ts.map +1 -0
- package/out/src/storage/methods/utils.Buffer.js +37 -0
- package/out/src/storage/methods/utils.Buffer.js.map +1 -0
- package/out/src/storage/methods/utils.d.ts +25 -0
- package/out/src/storage/methods/utils.d.ts.map +1 -0
- package/out/src/storage/methods/utils.js +53 -0
- package/out/src/storage/methods/utils.js.map +1 -0
- package/out/src/storage/remoting/StorageClient.d.ts +2 -2
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts +2 -2
- 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/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +12 -0
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/utility/Format.d.ts +14 -0
- package/out/src/utility/Format.d.ts.map +1 -0
- package/out/src/utility/Format.js +167 -0
- package/out/src/utility/Format.js.map +1 -0
- package/out/src/utility/utilityHelpers.d.ts +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +3 -3
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/test/Wallet/local/localWallet.man.test.js +12 -16
- package/out/test/Wallet/local/localWallet.man.test.js.map +1 -1
- package/out/test/Wallet/support/operations.man.test.js +105 -135
- package/out/test/Wallet/support/operations.man.test.js.map +1 -1
- package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.d.ts +2 -0
- package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.d.ts.map +1 -0
- package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.js +385 -0
- package/out/test/Wallet/support/reqErrorReview.2025.05.06.man.test.js.map +1 -0
- package/out/test/storage/KnexMigrations.test.js +1 -1
- package/out/test/storage/KnexMigrations.test.js.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.d.ts +5 -0
- package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.js +20 -0
- package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
- package/out/tsconfig.all.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/Wallet.ts +25 -10
- package/src/monitor/Monitor.ts +6 -4
- package/src/monitor/tasks/TaskNewHeader.ts +1 -1
- package/src/monitor/tasks/TaskServiceCallHistory.ts +26 -0
- package/src/sdk/WalletServices.interfaces.ts +2 -0
- package/src/sdk/WalletStorage.interfaces.ts +21 -1
- package/src/services/ServiceCollection.ts +121 -0
- package/src/services/Services.ts +157 -71
- package/src/services/__tests/ArcGorillaPool.man.test.ts +108 -0
- package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +1 -1
- package/src/services/chaintracker/chaintracks/index.ts +1 -1
- package/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.ts +490 -0
- package/src/services/chaintracker/chaintracks/util/dirtyHashes.ts +29 -0
- package/src/services/createDefaultWalletServicesOptions.ts +16 -1
- package/src/services/providers/ARC.ts +8 -6
- package/src/signer/methods/internalizeAction.ts +6 -16
- package/src/storage/StorageKnex.ts +25 -1
- package/src/storage/StorageProvider.ts +44 -32
- package/src/storage/WalletStorageManager.ts +1 -1
- package/src/storage/__test/StorageIdb.test.ts +1 -0
- package/src/storage/__test/adminStats.man.test.ts +2 -0
- package/src/storage/methods/createAction.ts +5 -3
- package/src/storage/methods/generateChange.ts +1 -54
- package/src/storage/methods/getBeefForTransaction.ts +10 -2
- package/src/storage/methods/internalizeAction.ts +23 -14
- package/src/storage/methods/processAction.ts +5 -2
- package/src/storage/methods/utils.Buffer.ts +33 -0
- package/src/storage/methods/utils.ts +56 -0
- package/src/storage/remoting/StorageClient.ts +2 -2
- package/src/storage/remoting/StorageMobile.ts +2 -2
- package/src/storage/schema/KnexMigrations.ts +13 -0
- package/src/utility/Format.ts +133 -0
- package/src/utility/utilityHelpers.ts +2 -2
- package/test/Wallet/local/localWallet.man.test.ts +13 -16
- package/test/Wallet/support/operations.man.test.ts +118 -123
- package/test/Wallet/support/reqErrorReview.2025.05.06.man.test.ts +359 -0
- package/test/storage/KnexMigrations.test.ts +1 -1
- package/test/utils/TestUtilsWalletStorage.ts +23 -0
- package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +0 -1
- package/mobile/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +0 -1
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +0 -1
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +0 -1
- /package/mobile/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.d.ts → Api/BlockHeaderApi.d.ts} +0 -0
- /package/mobile/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.js → Api/BlockHeaderApi.js} +0 -0
- /package/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.d.ts → Api/BlockHeaderApi.d.ts} +0 -0
- /package/out/src/services/chaintracker/chaintracks/{BlockHeaderApi.js → Api/BlockHeaderApi.js} +0 -0
- /package/src/services/chaintracker/chaintracks/{BlockHeaderApi.ts → Api/BlockHeaderApi.ts} +0 -0
|
@@ -6,7 +6,7 @@ import { createOneSatTestOutput, createSetup, LocalWalletTestOptions } from '../
|
|
|
6
6
|
const chain: sdk.Chain = 'test'
|
|
7
7
|
|
|
8
8
|
const options: LocalWalletTestOptions = {
|
|
9
|
-
setActiveClient:
|
|
9
|
+
setActiveClient: false,
|
|
10
10
|
useMySQLConnectionForClient: true,
|
|
11
11
|
useTestIdentityKey: true,
|
|
12
12
|
useIdentityKey2: false
|
|
@@ -26,6 +26,18 @@ describe('localWallet tests', () => {
|
|
|
26
26
|
await setup.wallet.destroy()
|
|
27
27
|
})
|
|
28
28
|
|
|
29
|
+
test('0a monitor runOnce call history', async () => {
|
|
30
|
+
const setup = await createSetup(chain, options)
|
|
31
|
+
const key = await setup.wallet.getPublicKey({ identityKey: true })
|
|
32
|
+
expect(key.publicKey.toString()).toBe(setup.identityKey)
|
|
33
|
+
await setup.services.getRawTx('6dd8e416dfaf14c04899ccad2bf76a67c1d5598fece25cf4dcb7a076012b7d8d')
|
|
34
|
+
await setup.services.getRawTx('ac9cced61e2491be55061ce6577e0c59b909922ba92d5cc1cd754b10d721ab0e')
|
|
35
|
+
await setup.services.getRawTx('0000e416dfaf14c04899ccad2bf76a67c1d5598fece25cf4dcb7a076012b7d8d')
|
|
36
|
+
await setup.services.getRawTx('0000ced61e2491be55061ce6577e0c59b909922ba92d5cc1cd754b10d721ab0e')
|
|
37
|
+
await setup.monitor.runOnce()
|
|
38
|
+
await setup.wallet.destroy()
|
|
39
|
+
})
|
|
40
|
+
|
|
29
41
|
test('2 create 1 sat delayed', async () => {
|
|
30
42
|
const setup = await createSetup(chain, options)
|
|
31
43
|
const car = await createOneSatTestOutput(setup, {}, 1)
|
|
@@ -58,21 +70,6 @@ describe('localWallet tests', () => {
|
|
|
58
70
|
await setup.wallet.destroy()
|
|
59
71
|
})
|
|
60
72
|
|
|
61
|
-
test('4 review change utxos', async () => {
|
|
62
|
-
const setup = await createSetup(chain, options)
|
|
63
|
-
const lor = await setup.wallet.listOutputs({
|
|
64
|
-
basket: specOpInvalidChange
|
|
65
|
-
})
|
|
66
|
-
if (lor.totalOutputs > 0) {
|
|
67
|
-
debugger
|
|
68
|
-
const lor = await setup.wallet.listOutputs({
|
|
69
|
-
basket: specOpInvalidChange,
|
|
70
|
-
tags: ['release']
|
|
71
|
-
})
|
|
72
|
-
}
|
|
73
|
-
await setup.wallet.destroy()
|
|
74
|
-
})
|
|
75
|
-
|
|
76
73
|
test('5 review synchunk', async () => {
|
|
77
74
|
const setup = await createSetup(chain, options)
|
|
78
75
|
const identityKey = setup.identityKey
|
|
@@ -1,37 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
Services,
|
|
5
|
-
Setup,
|
|
6
|
-
StorageKnex,
|
|
7
|
-
TableOutput,
|
|
8
|
-
TableTransaction,
|
|
9
|
-
TableUser,
|
|
10
|
-
verifyOne,
|
|
11
|
-
verifyOneOrNone
|
|
12
|
-
} from '../../../src'
|
|
13
|
-
import { _tu, TuEnv } from '../../utils/TestUtilsWalletStorage'
|
|
1
|
+
import { Beef, MerklePath, WalletOutput } from '@bsv/sdk'
|
|
2
|
+
import { sdk, TableOutput, TableUser, verifyOne, verifyOneOrNone } from '../../../src'
|
|
3
|
+
import { _tu, logger } from '../../utils/TestUtilsWalletStorage'
|
|
14
4
|
import { specOpInvalidChange, ValidListOutputsArgs } from '../../../src/sdk'
|
|
15
5
|
import { LocalWalletTestOptions } from '../../utils/localWalletMethods'
|
|
16
|
-
|
|
17
|
-
import
|
|
18
|
-
dotenv.config()
|
|
19
|
-
|
|
20
|
-
const chain: sdk.Chain = 'main'
|
|
21
|
-
|
|
22
|
-
const options: LocalWalletTestOptions = {
|
|
23
|
-
setActiveClient: true,
|
|
24
|
-
useMySQLConnectionForClient: true,
|
|
25
|
-
useTestIdentityKey: false,
|
|
26
|
-
useIdentityKey2: false
|
|
27
|
-
}
|
|
6
|
+
import { Format } from '../../../src/utility/Format'
|
|
7
|
+
import { asString } from '../../../src/utility/utilityHelpers.noBuffer'
|
|
28
8
|
|
|
29
9
|
describe('operations.man tests', () => {
|
|
30
10
|
jest.setTimeout(99999999)
|
|
31
11
|
|
|
32
12
|
test('0 review and release all production invalid change utxos', async () => {
|
|
33
|
-
const { env, storage } = await createMainReviewSetup()
|
|
34
|
-
const users = await storage.findUsers({ partial: {} })
|
|
13
|
+
const { env, storage } = await _tu.createMainReviewSetup()
|
|
14
|
+
const users = await storage.findUsers({ partial: { } })
|
|
35
15
|
const withInvalid: Record<number, { user: TableUser; outputs: WalletOutput[]; total: number }> = {}
|
|
36
16
|
const vargs: ValidListOutputsArgs = {
|
|
37
17
|
basket: specOpInvalidChange,
|
|
@@ -67,51 +47,16 @@ describe('operations.man tests', () => {
|
|
|
67
47
|
await storage.destroy()
|
|
68
48
|
})
|
|
69
49
|
|
|
70
|
-
test.skip('0a review all spendable outputs for userId', async () => {
|
|
71
|
-
const { env, storage } = await createMainReviewSetup()
|
|
72
|
-
const users = await storage.findUsers({ partial: {} })
|
|
73
|
-
const withInvalid: Record<number, { user: TableUser; outputs: WalletOutput[]; total: number }> = {}
|
|
74
|
-
const vargs: ValidListOutputsArgs = {
|
|
75
|
-
basket: specOpInvalidChange,
|
|
76
|
-
tags: ['release', 'all'],
|
|
77
|
-
tagQueryMode: 'all',
|
|
78
|
-
includeLockingScripts: false,
|
|
79
|
-
includeTransactions: false,
|
|
80
|
-
includeCustomInstructions: false,
|
|
81
|
-
includeTags: false,
|
|
82
|
-
includeLabels: false,
|
|
83
|
-
limit: 0,
|
|
84
|
-
offset: 0,
|
|
85
|
-
seekPermission: false,
|
|
86
|
-
knownTxids: []
|
|
87
|
-
}
|
|
88
|
-
let log = ''
|
|
89
|
-
for (const user of users) {
|
|
90
|
-
const { userId } = user
|
|
91
|
-
const auth = { userId, identityKey: '' }
|
|
92
|
-
let r = await storage.listOutputs(auth, vargs)
|
|
93
|
-
if (r.totalOutputs > 0) {
|
|
94
|
-
const total: number = r.outputs.reduce((s, o) => (s += o.satoshis), 0)
|
|
95
|
-
log += `userId ${userId}: ${r.totalOutputs} unspendable utxos, total ${total}, ${user.identityKey}\n`
|
|
96
|
-
for (const o of r.outputs) {
|
|
97
|
-
log += ` ${o.outpoint} ${o.satoshis}\n`
|
|
98
|
-
}
|
|
99
|
-
withInvalid[userId] = { user, outputs: r.outputs, total }
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
console.log(log || 'Found zero invalid change outputs.')
|
|
103
|
-
await storage.destroy()
|
|
104
|
-
})
|
|
105
|
-
|
|
106
50
|
test('1 review and unfail false doubleSpends', async () => {
|
|
107
|
-
const { env, storage, services } = await createMainReviewSetup()
|
|
108
|
-
let offset =
|
|
51
|
+
const { env, storage, services } = await _tu.createMainReviewSetup()
|
|
52
|
+
let offset = 0
|
|
109
53
|
const limit = 100
|
|
110
54
|
let allUnfails: number[] = []
|
|
111
55
|
for (;;) {
|
|
112
56
|
let log = ''
|
|
113
57
|
const unfails: number[] = []
|
|
114
|
-
|
|
58
|
+
debugger;
|
|
59
|
+
const reqs = await storage.findProvenTxReqs({ partial: { status: 'doubleSpend' }, paged: { limit, offset }, orderDescending: true })
|
|
115
60
|
for (const req of reqs) {
|
|
116
61
|
const gsr = await services.getStatusForTxids([req.txid])
|
|
117
62
|
if (gsr.results[0].status !== 'unknown') {
|
|
@@ -131,14 +76,14 @@ describe('operations.man tests', () => {
|
|
|
131
76
|
})
|
|
132
77
|
|
|
133
78
|
test('2 review and unfail false invalids', async () => {
|
|
134
|
-
const { env, storage, services } = await createMainReviewSetup()
|
|
135
|
-
let offset =
|
|
79
|
+
const { env, storage, services } = await _tu.createMainReviewSetup()
|
|
80
|
+
let offset = 0
|
|
136
81
|
const limit = 100
|
|
137
82
|
let allUnfails: number[] = []
|
|
138
83
|
for (;;) {
|
|
139
84
|
let log = ''
|
|
140
85
|
const unfails: number[] = []
|
|
141
|
-
const reqs = await storage.findProvenTxReqs({ partial: { status: 'invalid' }, paged: { limit, offset } })
|
|
86
|
+
const reqs = await storage.findProvenTxReqs({ partial: { status: 'invalid' }, paged: { limit, offset }, orderDescending: true })
|
|
142
87
|
for (const req of reqs) {
|
|
143
88
|
if (!req.txid || !req.rawTx) continue
|
|
144
89
|
const gsr = await services.getStatusForTxids([req.txid])
|
|
@@ -158,9 +103,56 @@ describe('operations.man tests', () => {
|
|
|
158
103
|
await storage.destroy()
|
|
159
104
|
})
|
|
160
105
|
|
|
161
|
-
test.skip('
|
|
162
|
-
const { env, storage, services } = await createMainReviewSetup()
|
|
106
|
+
test.skip('3 review proven_txs', async () => {
|
|
107
|
+
const { env, storage, services } = await _tu.createMainReviewSetup()
|
|
108
|
+
let offset = 0
|
|
109
|
+
const limit = 100
|
|
110
|
+
let allUnfails: number[] = []
|
|
111
|
+
//for (const provenTxId of [3064, 3065, 11268, 11269, 11270, 11271] ) {
|
|
112
|
+
for (let height = 895000; height < 895026; height++) {
|
|
113
|
+
let log = ''
|
|
114
|
+
const unfails: number[] = []
|
|
115
|
+
const txs = await storage.findProvenTxs({ partial: { height }, paged: { limit, offset } })
|
|
116
|
+
for (const tx of txs) {
|
|
117
|
+
const gmpr = await services.getMerklePath(tx.txid)
|
|
118
|
+
if (gmpr && gmpr.header && gmpr.merklePath) {
|
|
119
|
+
const mp = gmpr.merklePath
|
|
120
|
+
const h = gmpr.header
|
|
121
|
+
const mr = mp.computeRoot(tx.txid)
|
|
122
|
+
const index = mp.path[0].find(leaf => leaf.hash === tx.txid)?.offset!
|
|
123
|
+
|
|
124
|
+
const mp2 = MerklePath.fromBinary(tx.merklePath)
|
|
125
|
+
const mr2 = mp2.computeRoot()
|
|
126
|
+
|
|
127
|
+
if (h.height !== mp.blockHeight || h.merkleRoot !== mr) {
|
|
128
|
+
console.log(`Merkle root mismatch for ${tx.txid} ${h.merkleRoot} != ${mr}`)
|
|
129
|
+
} else {
|
|
130
|
+
if (tx.merkleRoot !== mr || tx.height !== mp.blockHeight || tx.blockHash !== h.hash || tx.index !== index || mp2.blockHeight !== tx.height || mr2 !== tx.merkleRoot || asString(tx.merklePath) !== asString(mp.toBinary())) {
|
|
131
|
+
debugger;
|
|
132
|
+
await storage.updateProvenTx(tx.provenTxId, {
|
|
133
|
+
merklePath: mp.toBinary(),
|
|
134
|
+
merkleRoot: mr,
|
|
135
|
+
height: mp.blockHeight,
|
|
136
|
+
blockHash: h.hash,
|
|
137
|
+
index
|
|
138
|
+
})
|
|
139
|
+
log += `updated ${tx.provenTxId}\n`
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//console.log(`${offset} ${log}`)
|
|
145
|
+
//if (txs.length < limit) break
|
|
146
|
+
//offset += txs.length
|
|
147
|
+
}
|
|
148
|
+
await storage.destroy()
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
test.skip('10 re-internalize failed WUI exports', async () => {
|
|
152
|
+
const { env, storage, services } = await _tu.createMainReviewSetup()
|
|
153
|
+
// From this user
|
|
163
154
|
const user0 = verifyOne(await storage.findUsers({ partial: { userId: 2 } }))
|
|
155
|
+
// To these users
|
|
164
156
|
const users = await storage.findUsers({ partial: { userId: 141 } }) // 111, 141
|
|
165
157
|
for (const user of users) {
|
|
166
158
|
const { userId, identityKey } = user
|
|
@@ -204,19 +196,21 @@ describe('operations.man tests', () => {
|
|
|
204
196
|
*/
|
|
205
197
|
await storage.destroy()
|
|
206
198
|
})
|
|
207
|
-
|
|
208
|
-
|
|
199
|
+
|
|
200
|
+
test.skip('11 review recent transaction change use for specific userId', async () => {
|
|
201
|
+
const userId = 311
|
|
202
|
+
const { env, storage, services } = await _tu.createMainReviewSetup()
|
|
209
203
|
const countTxs = await storage.countTransactions({
|
|
210
|
-
partial: { userId
|
|
204
|
+
partial: { userId },
|
|
211
205
|
status: ['completed', 'unproven', 'failed']
|
|
212
206
|
})
|
|
213
207
|
const txs = await storage.findTransactions({
|
|
214
|
-
partial: { userId
|
|
208
|
+
partial: { userId },
|
|
215
209
|
status: ['unproven', 'completed', 'failed'],
|
|
216
210
|
paged: { limit: 100, offset: Math.max(0, countTxs - 100) }
|
|
217
211
|
})
|
|
218
212
|
for (const tx of txs) {
|
|
219
|
-
const ls = await
|
|
213
|
+
const ls = await Format.toLogStringTableTransaction(tx, storage)
|
|
220
214
|
console.log(ls)
|
|
221
215
|
}
|
|
222
216
|
const countReqs = await storage.countProvenTxReqs({ partial: {}, status: ['completed', 'unmined'] })
|
|
@@ -227,56 +221,57 @@ describe('operations.man tests', () => {
|
|
|
227
221
|
})
|
|
228
222
|
await storage.destroy()
|
|
229
223
|
})
|
|
230
|
-
})
|
|
231
224
|
|
|
232
|
-
async
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
225
|
+
test.skip('12 check storage merged BEEF', async () => {
|
|
226
|
+
const userId = 127
|
|
227
|
+
const txid = 'efba8b92a22c3308f432b292b5ec7efb3869ecd50c62cb3ddfb83871bc7be194'
|
|
228
|
+
const vout = 1
|
|
229
|
+
const { env, storage, services } = await _tu.createMainReviewSetup()
|
|
230
|
+
|
|
231
|
+
const ptx = verifyOne(await storage.findProvenTxs({ partial: { txid } }))
|
|
232
|
+
|
|
233
|
+
const mp = MerklePath.fromBinary(ptx.merklePath)
|
|
234
|
+
expect(mp.blockHeight).toBe(ptx.height)
|
|
235
|
+
|
|
236
|
+
const txids = ['24b19a5179c1f146e825643df4c6dc2ba21674828c20fc2948e105cb1ca91eae']
|
|
237
|
+
|
|
238
|
+
const r = await storage.getReqsAndBeefToShareWithWorld(txids, [])
|
|
239
|
+
|
|
240
|
+
await storage.destroy()
|
|
245
241
|
})
|
|
246
|
-
const servicesOptions = Services.createDefaultOptions(env.chain)
|
|
247
|
-
if (env.whatsonchainApiKey) servicesOptions.whatsOnChainApiKey = env.whatsonchainApiKey
|
|
248
|
-
const services = new Services(servicesOptions)
|
|
249
|
-
storage.setServices(services)
|
|
250
|
-
await storage.makeAvailable()
|
|
251
|
-
return { env, storage, services }
|
|
252
|
-
}
|
|
253
242
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
243
|
+
test('13 review use of outputs in all following transactions', async () => {
|
|
244
|
+
const { env, storage, services } = await _tu.createMainReviewSetup()
|
|
245
|
+
|
|
246
|
+
const txids = ['2df7b5059112a42fc40adb54ee36244cee0dd216c35ad6c4b6ef4631c14a0e83'] //, '9fb38fc87c6ff39f5c7321a4c689db535c024498ed20031434485c981dd7a182', '3fb6b02e1d001dded1daee3f59dcd684489b96a35a9dfb5082b4119a31689966', '72ea8d84a4c54dbca292f4a79a5ff08cb9917fc3127c1dcff0628aeba8b40823', '0564a515566bc43c1396becf12bbf2d82d821ae7b6e0ef404eedfa090d4877c2', '3b93e4327a50a7f4a421af9fbdec0206b3b7ba5252bc5a0142d0d64aa34c2e73', 'd4b0c3d820696afad43b43e095f3b8c3df52385bb4aeddff0212e0a472dd8e4e']
|
|
247
|
+
const userId = 111
|
|
248
|
+
const txs = await storage.findTransactions({ partial: { userId }, status: ['completed', 'unproven', 'failed'], orderDescending: true, paged: { limit: 50 } })
|
|
249
|
+
const allTxids = txs.map(tx => tx.txid!)
|
|
250
|
+
debugger;
|
|
251
|
+
const reqs = await storage.findProvenTxReqs({ partial: {}, txids: allTxids })
|
|
252
|
+
const beef = new Beef()
|
|
253
|
+
for (const req of reqs) {
|
|
254
|
+
beef.mergeRawTx(req.rawTx!)
|
|
264
255
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
256
|
+
|
|
257
|
+
for (const txid of txids) {
|
|
258
|
+
const o = await storage.findOutputs({ partial: { txid, userId } })
|
|
259
|
+
const tx = await storage.findTransactions({ partial: { txid, userId } })
|
|
260
|
+
if (o && tx) {
|
|
261
|
+
const ltx = await Format.toLogStringTableTransaction(tx[0], storage)
|
|
262
|
+
logger(ltx)
|
|
263
|
+
for (const btx of beef.txs) {
|
|
264
|
+
const tx = btx.tx!
|
|
265
|
+
for (const i of tx.inputs) {
|
|
266
|
+
if (i.sourceTXID === txid && i.sourceOutputIndex === 0) {
|
|
267
|
+
const sltx = Format.toLogStringBeefTxid(beef, btx.txid)
|
|
268
|
+
logger(sltx)
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
268
273
|
}
|
|
269
|
-
|
|
270
|
-
}
|
|
271
|
-
return log
|
|
274
|
+
await storage.destroy()
|
|
275
|
+
})
|
|
272
276
|
|
|
273
|
-
|
|
274
|
-
return `${txid.slice(0, 6)}..${txid.slice(-6)}`
|
|
275
|
-
}
|
|
276
|
-
function al(v: string | number, w: number): string {
|
|
277
|
-
return v.toString().padEnd(w)
|
|
278
|
-
}
|
|
279
|
-
function ar(v: string | number, w: number): string {
|
|
280
|
-
return v.toString().padStart(w)
|
|
281
|
-
}
|
|
282
|
-
}
|
|
277
|
+
})
|