@bsv/wallet-toolbox 2.1.6 → 2.1.8

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.
Files changed (80) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +111 -28
  3. package/docs/client.md +146 -224
  4. package/docs/services.md +64 -28
  5. package/docs/storage.md +2 -22
  6. package/docs/wallet.md +146 -224
  7. package/out/src/Wallet.js +3 -3
  8. package/out/src/Wallet.js.map +1 -1
  9. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  10. package/out/src/WalletPermissionsManager.js +35 -36
  11. package/out/src/WalletPermissionsManager.js.map +1 -1
  12. package/out/src/__tests/ShamirWalletManager.test.js +4 -4
  13. package/out/src/__tests/ShamirWalletManager.test.js.map +1 -1
  14. package/out/src/mockchain/MockMiner.d.ts.map +1 -1
  15. package/out/src/mockchain/MockMiner.js +2 -1
  16. package/out/src/mockchain/MockMiner.js.map +1 -1
  17. package/out/src/mockchain/MockServices.d.ts.map +1 -1
  18. package/out/src/mockchain/MockServices.js +2 -1
  19. package/out/src/mockchain/MockServices.js.map +1 -1
  20. package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
  21. package/out/src/sdk/PrivilegedKeyManager.js +3 -1
  22. package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
  23. package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
  24. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +1 -0
  25. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  26. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js +1 -1
  27. package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js.map +1 -1
  28. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +3 -8
  29. package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +1 -1
  30. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +22 -0
  31. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -0
  32. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +54 -0
  33. package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -0
  34. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
  35. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +3 -42
  36. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
  37. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  38. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +2 -41
  39. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  40. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  41. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +3 -42
  42. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  43. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -20
  44. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  45. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +5 -55
  46. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  47. package/out/src/storage/StorageIdb.js +2 -2
  48. package/out/src/storage/StorageIdb.js.map +1 -1
  49. package/out/src/storage/WalletStorageManager.d.ts +1 -15
  50. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  51. package/out/src/storage/WalletStorageManager.js +0 -53
  52. package/out/src/storage/WalletStorageManager.js.map +1 -1
  53. package/out/src/storage/__test/getBeefForTransaction.test.js +49 -2
  54. package/out/src/storage/__test/getBeefForTransaction.test.js.map +1 -1
  55. package/out/src/storage/methods/__test/offsetKey.test.js +133 -286
  56. package/out/src/storage/methods/__test/offsetKey.test.js.map +1 -1
  57. package/out/src/storage/methods/createAction.js +4 -2
  58. package/out/src/storage/methods/createAction.js.map +1 -1
  59. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  60. package/out/src/storage/methods/generateChange.js +15 -14
  61. package/out/src/storage/methods/generateChange.js.map +1 -1
  62. package/out/src/storage/remoting/__test/StorageClient.man.test.js +0 -1
  63. package/out/src/storage/remoting/__test/StorageClient.man.test.js.map +1 -1
  64. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +10 -3
  65. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
  66. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +34 -1
  67. package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
  68. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.d.ts +1 -19
  69. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.d.ts.map +1 -1
  70. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js +0 -52
  71. package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
  72. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.d.ts +1 -3
  73. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.d.ts.map +1 -1
  74. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js +0 -24
  75. package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
  76. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts +1 -19
  77. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
  78. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +0 -52
  79. package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
  80. package/package.json +1 -1
@@ -7,6 +7,124 @@ const Setup_1 = require("../../../Setup");
7
7
  const StorageKnex_1 = require("../../StorageKnex");
8
8
  const utilityHelpers_1 = require("../../../utility/utilityHelpers");
9
9
  const WalletStorageManager_1 = require("../../WalletStorageManager");
10
+ /**
11
+ * Shared setup: create MySQL storage and test wallet for commission redemption tests.
12
+ */
13
+ async function createRedemptionTestContext() {
14
+ const env = TestUtilsWalletStorage_1._tu.getEnv('main');
15
+ if (!env.devKeys[env.commissionsIdentity]) {
16
+ throw new Error('No dev key for commissions identity');
17
+ }
18
+ const knex = Setup_1.Setup.createMySQLKnex(process.env.MAIN_CLOUD_MYSQL_CONNECTION);
19
+ const storage = new StorageKnex_1.StorageKnex({
20
+ chain: env.chain,
21
+ knex: knex,
22
+ commissionSatoshis: 0,
23
+ commissionPubKeyHex: undefined,
24
+ feeModel: { model: 'sat/kb', value: 1 }
25
+ });
26
+ await storage.makeAvailable();
27
+ const setup = await TestUtilsWalletStorage_1._tu.createTestWalletWithStorageClient({
28
+ chain: 'main',
29
+ rootKeyHex: env.devKeys[env.commissionsIdentity]
30
+ });
31
+ storage.setServices(setup.services);
32
+ return { env, storage, setup };
33
+ }
34
+ /** Attempt to add a single proven commission as a transaction input. */
35
+ async function tryAddCommissionInput(comm, storage, beef, chainTracker, inputs, comms) {
36
+ const tt = (0, utilityHelpers_1.verifyTruthy)(await storage.findTransactionById(comm.transactionId, undefined, true));
37
+ if (!tt.provenTxId || !tt.txid)
38
+ return;
39
+ await storage.getBeefForTransaction(tt.txid, { mergeToBeef: beef, chainTracker, skipInvalidProofs: true });
40
+ const tx = (0, utilityHelpers_1.verifyTruthy)(beef.findTxid(tt.txid)).tx;
41
+ const commVOut = tx.outputs.findIndex(o => o.satoshis === comm.satoshis && o.lockingScript.toHex() === sdk_1.Utils.toHex(comm.lockingScript));
42
+ inputs.push({
43
+ outpoint: `${tt.txid}.${commVOut}`,
44
+ inputDescription: `commId:${comm.commissionId}`,
45
+ unlockingScriptLength: 108
46
+ });
47
+ comms.push(comm);
48
+ }
49
+ /** Collect a full quota of unredeemed commission inputs for redemption. */
50
+ async function collectCommissionInputs(storage, fca, beef, chainTracker) {
51
+ const comms = [];
52
+ const inputs = [];
53
+ while (comms.length < fca.paged.limit) {
54
+ const unredeemedComms = await storage.findCommissions(fca);
55
+ if (unredeemedComms.length < 1)
56
+ break;
57
+ for (const comm of unredeemedComms) {
58
+ fca.paged.offset += 1;
59
+ await tryAddCommissionInput(comm, storage, beef, chainTracker, inputs, comms);
60
+ if (comms.length === fca.paged.limit)
61
+ break;
62
+ }
63
+ }
64
+ return { comms, inputs };
65
+ }
66
+ /** Sign commission inputs and broadcast the redemption transaction. */
67
+ async function signAndBroadcastRedemption(setup, storage, env, comms, inputs, beef, chainTracker) {
68
+ var _a;
69
+ console.log(beef.toLogString());
70
+ expect(await beef.verify(chainTracker, false)).toBe(true);
71
+ const car = await setup.wallet.createAction({
72
+ description: 'redeem commissions',
73
+ inputs,
74
+ inputBEEF: beef.toBinary(),
75
+ options: { randomizeOutputs: false, noSend: true }
76
+ });
77
+ expect(car.signableTransaction).toBeTruthy();
78
+ const st = car.signableTransaction;
79
+ expect(st.reference).toBeTruthy();
80
+ const atomicBeef = sdk_1.Beef.fromBinary(st.tx);
81
+ const txid = atomicBeef.txs[atomicBeef.txs.length - 1].txid;
82
+ const tx = atomicBeef.findTransactionForSigning(txid);
83
+ const priv = sdk_1.PrivateKey.fromHex(env.devKeys[env.commissionsIdentity]);
84
+ const pub = priv.toPublicKey();
85
+ const curve = new sdk_1.Curve();
86
+ const p2pkh = new sdk_1.P2PKH();
87
+ for (let vin = 0; vin < comms.length; vin++) {
88
+ const { hashedSecret } = (0, offsetKey_1.keyOffsetToHashedSecret)(pub, comms[vin].keyOffset);
89
+ tx.inputs[vin].unlockingScriptTemplate = p2pkh.unlock(new sdk_1.PrivateKey(priv.add(hashedSecret).mod(curve.n)), 'all', false);
90
+ }
91
+ await tx.sign();
92
+ const spends = {};
93
+ for (let vin = 0; vin < comms.length; vin++) {
94
+ spends[vin] = { unlockingScript: tx.inputs[vin].unlockingScript.toHex() };
95
+ }
96
+ const sr = await setup.wallet.signAction({
97
+ reference: st.reference,
98
+ spends,
99
+ options: { returnTXIDOnly: true, noSend: true }
100
+ });
101
+ expect(sr.txid).toBeTruthy();
102
+ for (const comm of comms) {
103
+ await storage.updateCommission(comm.commissionId, { isRedeemed: true });
104
+ }
105
+ const cr = await setup.wallet.createAction({
106
+ description: 'broadcasting noSend',
107
+ options: { acceptDelayedBroadcast: false, sendWith: [sr.txid] }
108
+ });
109
+ expect(cr.noSendChange).not.toBeTruthy();
110
+ expect((_a = cr.sendWithResults) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
111
+ expect(cr.sendWithResults[0].status !== 'failed').toBe(true);
112
+ }
113
+ /**
114
+ * Core redemption loop shared by both test variants.
115
+ * Collects unredeemed commissions, creates and signs a transaction, then broadcasts.
116
+ */
117
+ async function runRedemptionLoop(storage, setup, env, fca) {
118
+ for (;;) {
119
+ const beef = new sdk_1.Beef();
120
+ const chainTracker = await setup.services.getChainTracker();
121
+ const { comms, inputs } = await collectCommissionInputs(storage, fca, beef, chainTracker);
122
+ if (comms.length < fca.paged.limit)
123
+ break;
124
+ fca.paged.offset -= comms.length;
125
+ await signAndBroadcastRedemption(setup, storage, env, comms, inputs, beef, chainTracker);
126
+ }
127
+ }
10
128
  describe('offsetKey tests', () => {
11
129
  jest.setTimeout(99999999);
12
130
  test('1_offsetPrivKey', async () => {
@@ -58,154 +176,18 @@ describe('offsetKey tests', () => {
58
176
  expect(address).toBe('1EZz5oxwXoG6LgGLxeYPeg1NfzQrP1vL6M');
59
177
  });
60
178
  test.skip('4_redeemServiceCharges', async () => {
61
- var _a;
62
179
  if (TestUtilsWalletStorage_1._tu.noEnv('main'))
63
180
  return;
64
- const env = TestUtilsWalletStorage_1._tu.getEnv('main');
65
- if (!env.devKeys[env.commissionsIdentity]) {
66
- throw new Error('No dev key for commissions identity');
67
- }
68
- const knex = Setup_1.Setup.createMySQLKnex(process.env.MAIN_CLOUD_MYSQL_CONNECTION);
69
- const storage = new StorageKnex_1.StorageKnex({
70
- chain: env.chain,
71
- knex: knex,
72
- commissionSatoshis: 0,
73
- commissionPubKeyHex: undefined,
74
- feeModel: { model: 'sat/kb', value: 1 }
75
- });
76
- let setup;
77
- await storage.makeAvailable();
78
- setup = await TestUtilsWalletStorage_1._tu.createTestWalletWithStorageClient({
79
- chain: 'main',
80
- rootKeyHex: env.devKeys[env.commissionsIdentity]
81
- });
82
- storage.setServices(setup.services);
181
+ const { env, storage, setup } = await createRedemptionTestContext();
83
182
  try {
84
- // await setup.wallet.abortAction({ reference: 'e9c03bdf603e90ebe482044e8d0f7afbf2d6fe480a13dbd8689e2e5e5183bed4' })
85
- // txid b6f72df4224efbacab42a16e1e88f48c217f03929c36987b9067d2556de47c10
86
- // height 922107
87
- // incorrect hash 000000000000000014d97d19bf82956c1f7ce3977da10b7fbdab9a10653c02e7
88
- // correct hash 00000000000000001957bfadf841d1709d5039b3243c33ba58e4a6a97b44d2a8
89
183
  const sm = new WalletStorageManager_1.WalletStorageManager(setup.identityKey, storage);
90
184
  sm.setServices(setup.services);
91
- // This should correct invalid merkle proofs in proven_txs but currently does not because WoC returns invalid header info.
92
185
  await sm.reproveHeader('000000000000000014d97d19bf82956c1f7ce3977da10b7fbdab9a10653c02e7');
93
186
  const fca = {
94
187
  partial: { isRedeemed: false },
95
188
  paged: { limit: 400, offset: 0 }
96
189
  };
97
- for (;;) {
98
- const comms = [];
99
- let beef = new sdk_1.Beef();
100
- const chainTracker = await setup.services.getChainTracker();
101
- const inputs = [];
102
- for (; comms.length < fca.paged.limit;) {
103
- const unredeemedComms = await storage.findCommissions(fca);
104
- if (unredeemedComms.length < 1)
105
- break;
106
- for (const comm of unredeemedComms) {
107
- fca.paged.offset += 1;
108
- const tt = (0, utilityHelpers_1.verifyTruthy)(await storage.findTransactionById(comm.transactionId, undefined, true));
109
- if (tt.provenTxId && tt.txid) {
110
- await storage.getBeefForTransaction(tt.txid, { mergeToBeef: beef, chainTracker, skipInvalidProofs: true });
111
- const tx = (0, utilityHelpers_1.verifyTruthy)(beef.findTxid(tt.txid)).tx;
112
- const commVOut = tx.outputs.findIndex(o => o.satoshis === comm.satoshis && o.lockingScript.toHex() === sdk_1.Utils.toHex(comm.lockingScript));
113
- const commOut = tx.outputs[commVOut];
114
- const input = {
115
- outpoint: `${tt.txid}.${commVOut}`,
116
- inputDescription: `commId:${comm.commissionId}`,
117
- unlockingScriptLength: 108
118
- };
119
- inputs.push(input);
120
- comms.push(comm);
121
- if (comms.length === fca.paged.limit)
122
- break;
123
- }
124
- }
125
- }
126
- if (comms.length < fca.paged.limit)
127
- // Only redeem full quota of commissions per cycle to avoid paying higher percentage of fees.
128
- break;
129
- if (comms.length > 0) {
130
- fca.paged.offset -= comms.length;
131
- console.log(beef.toLogString());
132
- const verified = await beef.verify(chainTracker, false);
133
- expect(verified).toBe(true);
134
- const cao = {
135
- randomizeOutputs: false,
136
- //signAndProcess: false,
137
- noSend: true
138
- };
139
- const ca = {
140
- description: 'redeem commissions',
141
- inputs: inputs,
142
- inputBEEF: beef.toBinary(),
143
- options: cao
144
- };
145
- const car = await setup.wallet.createAction(ca);
146
- expect(car.signableTransaction).toBeTruthy();
147
- const st = car.signableTransaction;
148
- expect(st.reference).toBeTruthy();
149
- const atomicBeef = sdk_1.Beef.fromBinary(st.tx);
150
- const txid = atomicBeef.txs[atomicBeef.txs.length - 1].txid;
151
- const tx = atomicBeef.findTransactionForSigning(txid);
152
- const priv = sdk_1.PrivateKey.fromHex(env.devKeys[env.commissionsIdentity]);
153
- const pub = priv.toPublicKey();
154
- const curve = new sdk_1.Curve();
155
- const p2pkh = new sdk_1.P2PKH();
156
- const spends = {};
157
- let vin = 0;
158
- // set an unlockingScriptTemplate for each commission input being redeemed in unsigned tx
159
- for (const comm of comms) {
160
- const { hashedSecret } = (0, offsetKey_1.keyOffsetToHashedSecret)(pub, comm.keyOffset);
161
- const bn = priv.add(hashedSecret).mod(curve.n);
162
- const offsetPrivKey = new sdk_1.PrivateKey(bn);
163
- const unlock = p2pkh.unlock(offsetPrivKey, 'all', false);
164
- tx.inputs[vin].unlockingScriptTemplate = unlock;
165
- vin++;
166
- }
167
- // sign each input
168
- await tx.sign();
169
- vin = 0;
170
- // extract all the signed unlocking scripts
171
- for (const comm of comms) {
172
- const script = tx.inputs[vin].unlockingScript;
173
- const unlockingScript = script.toHex();
174
- spends[vin] = { unlockingScript };
175
- vin++;
176
- }
177
- const signArgs = {
178
- reference: st.reference,
179
- spends,
180
- options: {
181
- returnTXIDOnly: true,
182
- noSend: true
183
- }
184
- };
185
- // Forward all the unlocking scripts to storage and create the ProvenTxReq for the noSend txid.
186
- const sr = await setup.wallet.signAction(signArgs);
187
- expect(sr.txid).toBeTruthy();
188
- // Update the commissions as redeemed in storage
189
- for (const comm of comms) {
190
- await storage.updateCommission(comm.commissionId, { isRedeemed: true });
191
- }
192
- {
193
- // Get the transaction broadcast
194
- const createArgs = {
195
- description: `broadcasting noSend`,
196
- options: {
197
- acceptDelayedBroadcast: false,
198
- sendWith: [sr.txid]
199
- }
200
- };
201
- const cr = await setup.wallet.createAction(createArgs);
202
- expect(cr.noSendChange).not.toBeTruthy();
203
- expect((_a = cr.sendWithResults) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
204
- const [swr] = cr.sendWithResults;
205
- expect(swr.status !== 'failed').toBe(true);
206
- }
207
- }
208
- }
190
+ await runRedemptionLoop(storage, setup, env, fca);
209
191
  }
210
192
  catch (err) {
211
193
  console.error('Error in 4_redeemServiceCharges test:', err);
@@ -215,161 +197,26 @@ describe('offsetKey tests', () => {
215
197
  await setup.wallet.destroy();
216
198
  });
217
199
  test.skip('4a_redeemServiceCharges optimized', async () => {
218
- var _a;
219
200
  if (TestUtilsWalletStorage_1._tu.noEnv('main'))
220
201
  return;
221
- const env = TestUtilsWalletStorage_1._tu.getEnv('main');
222
- if (!env.devKeys[env.commissionsIdentity]) {
223
- throw new Error('No dev key for commissions identity');
224
- }
225
- const knex = Setup_1.Setup.createMySQLKnex(process.env.MAIN_CLOUD_MYSQL_CONNECTION);
226
- const storage = new StorageKnex_1.StorageKnex({
227
- chain: env.chain,
228
- knex: knex,
229
- commissionSatoshis: 0,
230
- commissionPubKeyHex: undefined,
231
- feeModel: { model: 'sat/kb', value: 1 }
232
- });
233
- let setup;
234
- await storage.makeAvailable();
235
- setup = await TestUtilsWalletStorage_1._tu.createTestWalletWithStorageClient({
236
- chain: 'main',
237
- rootKeyHex: env.devKeys[env.commissionsIdentity]
238
- });
239
- storage.setServices(setup.services);
202
+ const { env, storage, setup } = await createRedemptionTestContext();
240
203
  try {
241
204
  const fca = {
242
205
  partial: { isRedeemed: false },
243
206
  paged: { limit: 400, offset: 0 }
244
207
  };
245
- for (;;) {
246
- const comms = [];
247
- let beef = new sdk_1.Beef();
248
- const chainTracker = await setup.services.getChainTracker();
249
- const inputs = [];
250
- // This query would be much faster and allow valid proofs to be merged into beef directly...
251
- // but will blow up if rawTx are large.
252
- // This is really a case where a full Beef isn't needed.
253
- // All the inputs will be from proven txs.
254
- // Processors should accept the aggregate rawTx without any other input rawTxs or merkle proofs.
255
- // i.e. All the input txids should be "known"
256
- const r = await storage.knex.raw(`
257
- SELECT c.*, t.provenTxId, p.height, p.index, p.merklePath, p.rawTx, p.blockHash, p.merkleRoot
258
- FROM commissions c
259
- JOIN transactions t ON c.transactionId = t.transactionId
260
- JOIN proven_txs p ON t.provenTxId = p.provenTxId
261
- WHERE c.isRedeemed = 0
262
- AND NOT t.provenTxId IS NOT NULL
263
- ORDER BY c.commissionId
264
- LIMIT ? OFFSET ?;
265
- `, [fca.paged.limit, fca.paged.offset]);
266
- for (; comms.length < fca.paged.limit;) {
267
- const unredeemedComms = await storage.findCommissions(fca);
268
- if (unredeemedComms.length < 1)
269
- break;
270
- for (const comm of unredeemedComms) {
271
- fca.paged.offset += 1;
272
- const tt = (0, utilityHelpers_1.verifyTruthy)(await storage.findTransactionById(comm.transactionId, undefined, true));
273
- if (tt.provenTxId && tt.txid) {
274
- await storage.getBeefForTransaction(tt.txid, { mergeToBeef: beef, chainTracker, skipInvalidProofs: true });
275
- const tx = (0, utilityHelpers_1.verifyTruthy)(beef.findTxid(tt.txid)).tx;
276
- const commVOut = tx.outputs.findIndex(o => o.satoshis === comm.satoshis && o.lockingScript.toHex() === sdk_1.Utils.toHex(comm.lockingScript));
277
- const commOut = tx.outputs[commVOut];
278
- const input = {
279
- outpoint: `${tt.txid}.${commVOut}`,
280
- inputDescription: `commId:${comm.commissionId}`,
281
- unlockingScriptLength: 108
282
- };
283
- inputs.push(input);
284
- comms.push(comm);
285
- if (comms.length === fca.paged.limit)
286
- break;
287
- }
288
- }
289
- }
290
- if (comms.length < fca.paged.limit)
291
- // Only redeem full quota of commissions per cycle to avoid paying higher percentage of fees.
292
- break;
293
- if (comms.length > 0) {
294
- fca.paged.offset -= comms.length;
295
- console.log(beef.toLogString());
296
- const verified = await beef.verify(chainTracker, false);
297
- expect(verified).toBe(true);
298
- const cao = {
299
- randomizeOutputs: false,
300
- //signAndProcess: false,
301
- noSend: true
302
- };
303
- const ca = {
304
- description: 'redeem commissions',
305
- inputs: inputs,
306
- inputBEEF: beef.toBinary(),
307
- options: cao
308
- };
309
- const car = await setup.wallet.createAction(ca);
310
- expect(car.signableTransaction).toBeTruthy();
311
- const st = car.signableTransaction;
312
- expect(st.reference).toBeTruthy();
313
- const atomicBeef = sdk_1.Beef.fromBinary(st.tx);
314
- const txid = atomicBeef.txs[atomicBeef.txs.length - 1].txid;
315
- const tx = atomicBeef.findTransactionForSigning(txid);
316
- const priv = sdk_1.PrivateKey.fromHex(env.devKeys[env.commissionsIdentity]);
317
- const pub = priv.toPublicKey();
318
- const curve = new sdk_1.Curve();
319
- const p2pkh = new sdk_1.P2PKH();
320
- const spends = {};
321
- let vin = 0;
322
- // set an unlockingScriptTemplate for each commission input being redeemed in unsigned tx
323
- for (const comm of comms) {
324
- const { hashedSecret } = (0, offsetKey_1.keyOffsetToHashedSecret)(pub, comm.keyOffset);
325
- const bn = priv.add(hashedSecret).mod(curve.n);
326
- const offsetPrivKey = new sdk_1.PrivateKey(bn);
327
- const unlock = p2pkh.unlock(offsetPrivKey, 'all', false);
328
- tx.inputs[vin].unlockingScriptTemplate = unlock;
329
- vin++;
330
- }
331
- // sign each input
332
- await tx.sign();
333
- vin = 0;
334
- // extract all the signed unlocking scripts
335
- for (const comm of comms) {
336
- const script = tx.inputs[vin].unlockingScript;
337
- const unlockingScript = script.toHex();
338
- spends[vin] = { unlockingScript };
339
- vin++;
340
- }
341
- const signArgs = {
342
- reference: st.reference,
343
- spends,
344
- options: {
345
- returnTXIDOnly: true,
346
- noSend: true
347
- }
348
- };
349
- // Forward all the unlocking scripts to storage and create the ProvenTxReq for the noSend txid.
350
- const sr = await setup.wallet.signAction(signArgs);
351
- expect(sr.txid).toBeTruthy();
352
- // Update the commissions as redeemed in storage
353
- for (const comm of comms) {
354
- await storage.updateCommission(comm.commissionId, { isRedeemed: true });
355
- }
356
- {
357
- // Get the transaction broadcast
358
- const createArgs = {
359
- description: `broadcasting noSend`,
360
- options: {
361
- acceptDelayedBroadcast: false,
362
- sendWith: [sr.txid]
363
- }
364
- };
365
- const cr = await setup.wallet.createAction(createArgs);
366
- expect(cr.noSendChange).not.toBeTruthy();
367
- expect((_a = cr.sendWithResults) === null || _a === void 0 ? void 0 : _a.length).toBe(1);
368
- const [swr] = cr.sendWithResults;
369
- expect(swr.status !== 'failed').toBe(true);
370
- }
371
- }
372
- }
208
+ // Pre-fetch with optimized SQL query
209
+ await storage.knex.raw(`
210
+ SELECT c.*, t.provenTxId, p.height, p.index, p.merklePath, p.rawTx, p.blockHash, p.merkleRoot
211
+ FROM commissions c
212
+ JOIN transactions t ON c.transactionId = t.transactionId
213
+ JOIN proven_txs p ON t.provenTxId = p.provenTxId
214
+ WHERE c.isRedeemed = 0
215
+ AND NOT t.provenTxId IS NOT NULL
216
+ ORDER BY c.commissionId
217
+ LIMIT ? OFFSET ?;
218
+ `, [fca.paged.limit, fca.paged.offset]);
219
+ await runRedemptionLoop(storage, setup, env, fca);
373
220
  }
374
221
  catch (err) {
375
222
  console.error('Error in 4_redeemServiceCharges test:', err);
@@ -1 +1 @@
1
- {"version":3,"file":"offsetKey.test.js","sourceRoot":"","sources":["../../../../../src/storage/methods/__test/offsetKey.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"offsetKey.test.js","sourceRoot":"","sources":["../../../../../src/storage/methods/__test/offsetKey.test.ts"],"names":[],"mappings":"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"}
@@ -287,7 +287,8 @@ async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs) {
287
287
  const nextRandomVal = () => {
288
288
  let val = 0;
289
289
  if (!randomVals || randomVals.length === 0) {
290
- val = Math.random();
290
+ const bytes = (0, sdk_1.Random)(4);
291
+ val = (((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0) / 0x100000000;
291
292
  }
292
293
  else {
293
294
  val = randomVals.shift() || 0;
@@ -675,7 +676,8 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx) {
675
676
  const nextRandomVal = () => {
676
677
  let val = 0;
677
678
  if (!vargs.randomVals || vargs.randomVals.length === 0) {
678
- val = Math.random();
679
+ const bytes = (0, sdk_1.Random)(4);
680
+ val = (((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0) / 0x100000000;
679
681
  }
680
682
  else {
681
683
  val = vargs.randomVals.shift() || 0;