@helium/spl-utils 0.6.1 → 0.6.2-next.34

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 (38) hide show
  1. package/lib/cjs/constants.js +3 -1
  2. package/lib/cjs/constants.js.map +1 -1
  3. package/lib/cjs/draft.js +26 -0
  4. package/lib/cjs/draft.js.map +1 -0
  5. package/lib/cjs/index.js +6 -1
  6. package/lib/cjs/index.js.map +1 -1
  7. package/lib/cjs/mplAssetAPI.js +44 -8
  8. package/lib/cjs/mplAssetAPI.js.map +1 -1
  9. package/lib/cjs/priorityFees.js +133 -0
  10. package/lib/cjs/priorityFees.js.map +1 -0
  11. package/lib/cjs/transaction.js +246 -101
  12. package/lib/cjs/transaction.js.map +1 -1
  13. package/lib/esm/src/constants.js +2 -0
  14. package/lib/esm/src/constants.js.map +1 -1
  15. package/lib/esm/src/draft.js +11 -0
  16. package/lib/esm/src/draft.js.map +1 -0
  17. package/lib/esm/src/index.js +11 -9
  18. package/lib/esm/src/index.js.map +1 -1
  19. package/lib/esm/src/mplAssetAPI.js +45 -8
  20. package/lib/esm/src/mplAssetAPI.js.map +1 -1
  21. package/lib/esm/src/priorityFees.js +104 -0
  22. package/lib/esm/src/priorityFees.js.map +1 -0
  23. package/lib/esm/src/transaction.js +232 -101
  24. package/lib/esm/src/transaction.js.map +1 -1
  25. package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
  26. package/lib/types/src/constants.d.ts +2 -0
  27. package/lib/types/src/constants.d.ts.map +1 -1
  28. package/lib/types/src/draft.d.ts +11 -0
  29. package/lib/types/src/draft.d.ts.map +1 -0
  30. package/lib/types/src/index.d.ts +13 -11
  31. package/lib/types/src/index.d.ts.map +1 -1
  32. package/lib/types/src/mplAssetAPI.d.ts +11 -2
  33. package/lib/types/src/mplAssetAPI.d.ts.map +1 -1
  34. package/lib/types/src/priorityFees.d.ts +19 -0
  35. package/lib/types/src/priorityFees.d.ts.map +1 -0
  36. package/lib/types/src/transaction.d.ts +51 -5
  37. package/lib/types/src/transaction.d.ts.map +1 -1
  38. package/package.json +5 -5
@@ -1,6 +1,9 @@
1
- import { Transaction, } from "@solana/web3.js";
1
+ import { AddressLookupTableAccount, ComputeBudgetProgram, PublicKey, Transaction, TransactionMessage, VersionedTransaction, } from "@solana/web3.js";
2
+ import { TransactionCompletionQueue } from "@helium/account-fetch-cache";
2
3
  import bs58 from "bs58";
3
4
  import { ProgramError } from "./anchorError";
5
+ import { estimatePrioritizationFee, withPriorityFees } from "./priorityFees";
6
+ import { populateMissingDraftInfo } from "./draft";
4
7
  export const chunks = (array, size) => Array.apply(0, new Array(Math.ceil(array.length / size))).map((_, index) => array.slice(index * size, (index + 1) * size));
5
8
  async function sleep(ms) {
6
9
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -12,6 +15,40 @@ async function promiseAllInOrder(it) {
12
15
  }
13
16
  return ret;
14
17
  }
18
+ export const getAddressLookupTableAccounts = async (connection, keys) => {
19
+ if (keys.length == 0) {
20
+ return [];
21
+ }
22
+ const addressLookupTableAccountInfos = await connection.getMultipleAccountsInfo(keys.map((key) => new PublicKey(key)));
23
+ return addressLookupTableAccountInfos.reduce((acc, accountInfo, index) => {
24
+ const addressLookupTableAddress = keys[index];
25
+ if (accountInfo) {
26
+ const addressLookupTableAccount = new AddressLookupTableAccount({
27
+ key: addressLookupTableAddress,
28
+ state: AddressLookupTableAccount.deserialize(accountInfo.data),
29
+ });
30
+ acc.push(addressLookupTableAccount);
31
+ }
32
+ return acc;
33
+ }, new Array());
34
+ };
35
+ export function toVersionedTx(tx) {
36
+ const messageV0 = new TransactionMessage({
37
+ payerKey: tx.feePayer,
38
+ recentBlockhash: tx.recentBlockhash,
39
+ instructions: tx.instructions,
40
+ }).compileToV0Message(tx.addressLookupTables);
41
+ return new VersionedTransaction(messageV0);
42
+ }
43
+ export async function sendInstructionsWithPriorityFee(provider, instructions, { signers = [], payer = provider.wallet.publicKey, commitment = "confirmed", idlErrors = new Map(), computeUnitLimit = 200000, basePriorityFee = 1, } = {}) {
44
+ return await sendInstructions(provider, [
45
+ ComputeBudgetProgram.setComputeUnitLimit({ units: computeUnitLimit }),
46
+ ComputeBudgetProgram.setComputeUnitPrice({
47
+ microLamports: await estimatePrioritizationFee(provider.connection, instructions, basePriorityFee),
48
+ }),
49
+ ...instructions,
50
+ ], signers, payer, commitment, idlErrors);
51
+ }
15
52
  export async function sendInstructions(provider, instructions, signers = [], payer = provider.wallet.publicKey, commitment = "confirmed", idlErrors = new Map()) {
16
53
  if (instructions.length == 0) {
17
54
  return "";
@@ -30,6 +67,7 @@ export async function sendInstructions(provider, instructions, signers = [], pay
30
67
  try {
31
68
  const { txid } = await sendAndConfirmWithRetry(provider.connection, tx.serialize(), {
32
69
  skipPreflight: true,
70
+ maxRetries: 0,
33
71
  }, commitment);
34
72
  return txid;
35
73
  }
@@ -118,95 +156,11 @@ export async function executeBig(program, provider, command, payer = provider.wa
118
156
  function getUnixTime() {
119
157
  return new Date().valueOf() / 1000;
120
158
  }
121
- const SEND_TRANSACTION_INTERVAL = 10;
122
159
  export const awaitTransactionSignatureConfirmation = async (txid, timeout, connection, commitment = "recent", queryStatus = false) => {
123
- let done = false;
124
- let status = {
125
- slot: 0,
126
- confirmations: 0,
127
- err: null,
128
- };
129
- let subId = 0;
130
- status = await new Promise(async (resolve, reject) => {
131
- const t = setTimeout(() => {
132
- if (done) {
133
- return;
134
- }
135
- done = true;
136
- console.log("Rejecting for timeout...");
137
- reject({ timeout: true });
138
- }, timeout);
139
- try {
140
- subId = connection.onSignature(txid, (result, context) => {
141
- status = {
142
- err: result.err,
143
- slot: context.slot,
144
- confirmations: 0,
145
- };
146
- done = true;
147
- if (result.err) {
148
- console.log("Rejected via websocket", result.err);
149
- reject(status);
150
- }
151
- else {
152
- resolve(status);
153
- }
154
- }, commitment);
155
- }
156
- catch (e) {
157
- console.error("WS error in setup", txid, e);
158
- }
159
- finally {
160
- done = true;
161
- clearTimeout(t);
162
- }
163
- while (!done && queryStatus) {
164
- // eslint-disable-next-line no-loop-func
165
- (async () => {
166
- try {
167
- const signatureStatuses = await connection.getSignatureStatuses([
168
- txid,
169
- ]);
170
- status = signatureStatuses && signatureStatuses.value[0];
171
- if (!done) {
172
- if (!status) {
173
- }
174
- else if (status.err) {
175
- console.log("REST error for", txid, status);
176
- done = true;
177
- reject(status.err);
178
- }
179
- else if (!status.confirmations && !status.confirmationStatus) {
180
- console.log("REST no confirmations for", txid, status);
181
- }
182
- else {
183
- console.log("REST confirmation for", txid, status);
184
- if (!status.confirmationStatus ||
185
- status.confirmationStatus == commitment) {
186
- done = true;
187
- resolve(status);
188
- }
189
- }
190
- }
191
- }
192
- catch (e) {
193
- if (!done) {
194
- console.log("REST connection error: txid", txid, e);
195
- }
196
- }
197
- })();
198
- await sleep(2000);
199
- }
200
- });
201
- if (
202
- //@ts-ignore
203
- connection._signatureSubscriptions &&
204
- //@ts-ignore
205
- connection._signatureSubscriptions[subId]) {
206
- connection.removeSignatureListener(subId);
207
- }
208
- done = true;
209
- return status;
160
+ return new TransactionCompletionQueue({
161
+ connection,
162
+ log: true,
163
+ }).wait(commitment, txid, timeout);
210
164
  };
211
165
  async function simulateTransaction(connection, transaction, commitment) {
212
166
  // @ts-ignore
@@ -243,7 +197,7 @@ export async function sendAndConfirmWithRetry(connection, txn, sendOptions, comm
243
197
  console.log("txid", txid);
244
198
  const startTime = getUnixTime();
245
199
  (async () => {
246
- while (!done && getUnixTime() - startTime < timeout) {
200
+ while (!done && getUnixTime() - startTime < timeout / 1000) {
247
201
  await connection.sendRawTransaction(txn, sendOptions);
248
202
  await sleep(500);
249
203
  }
@@ -255,6 +209,7 @@ export async function sendAndConfirmWithRetry(connection, txn, sendOptions, comm
255
209
  if (confirmation.err) {
256
210
  const tx = await connection.getTransaction(txid, {
257
211
  commitment: "confirmed",
212
+ maxSupportedTransactionVersion: 0,
258
213
  });
259
214
  console.error(tx?.meta?.logMessages?.join("\n"));
260
215
  console.error(confirmation.err);
@@ -269,6 +224,7 @@ export async function sendAndConfirmWithRetry(connection, txn, sendOptions, comm
269
224
  }
270
225
  const tx = await connection.getTransaction(txid, {
271
226
  commitment: "confirmed",
227
+ maxSupportedTransactionVersion: 0,
272
228
  });
273
229
  if (tx && tx.meta && tx.meta.logMessages) {
274
230
  console.error(tx.meta.logMessages.join("\n"));
@@ -302,28 +258,45 @@ async function withRetries(tries, input) {
302
258
  throw new Error("Failed after retries");
303
259
  }
304
260
  const TX_BATCH_SIZE = 200;
305
- export async function bulkSendTransactions(provider, txs, onProgress, triesRemaining = 10 // Number of blockhashes to try resending txs with before giving up
306
- ) {
261
+ export async function bulkSendTransactions(provider, txs, onProgress, triesRemaining = 10, // Number of blockhashes to try resending txs with before giving up
262
+ extraSigners = [], maxSignatureBatch = TX_BATCH_SIZE) {
307
263
  let ret = [];
308
264
  // attempt to chunk by blockhash bounds (so signing doesn't take too long)
309
- for (let chunk of chunks(txs, TX_BATCH_SIZE)) {
265
+ for (let chunk of chunks(txs, maxSignatureBatch)) {
310
266
  const thisRet = [];
311
267
  // Continually send in bulk while resetting blockhash until we send them all
312
268
  while (true) {
313
269
  const recentBlockhash = await withRetries(5, () => provider.connection.getLatestBlockhash("confirmed"));
314
270
  const blockhashedTxs = await Promise.all(chunk.map(async (tx) => {
315
- tx.recentBlockhash = recentBlockhash.blockhash;
316
- return tx;
271
+ await populateMissingDraftInfo(provider.connection, tx);
272
+ return toVersionedTx({
273
+ instructions: tx.instructions,
274
+ recentBlockhash: recentBlockhash.blockhash,
275
+ addressLookupTableAddresses: tx.addressLookupTableAddresses,
276
+ addressLookupTables: tx.addressLookupTables,
277
+ feePayer: tx.feePayer,
278
+ });
317
279
  }));
318
- const signedTxs = await provider.wallet.signAllTransactions(blockhashedTxs);
280
+ const signedTxs = (await provider.wallet.signAllTransactions(blockhashedTxs)).map((tx, i) => {
281
+ extraSigners.forEach((signer) => {
282
+ if (chunk[i].signers?.some((sig) => sig.publicKey.equals(signer.publicKey))) {
283
+ tx.sign([signer]);
284
+ }
285
+ }, tx);
286
+ return tx;
287
+ });
319
288
  const txsWithSigs = signedTxs.map((tx, index) => {
320
289
  return {
321
290
  transaction: chunk[index],
322
- sig: bs58.encode(tx.signatures[0].signature),
291
+ sig: bs58.encode(tx.signatures[0]),
323
292
  };
324
293
  });
325
- const confirmedTxs = await bulkSendRawTransactions(provider.connection, signedTxs.map((s) => s.serialize()), ({ totalProgress, ...rest }) => onProgress &&
326
- onProgress({ ...rest, totalProgress: totalProgress + ret.length + thisRet.length }), recentBlockhash.lastValidBlockHeight,
294
+ const confirmedTxs = await bulkSendRawTransactions(provider.connection, signedTxs.map((s) => Buffer.from(s.serialize())), ({ totalProgress, ...rest }) => onProgress &&
295
+ onProgress({
296
+ ...rest,
297
+ totalTxs: txs.length,
298
+ totalProgress: totalProgress + ret.length + thisRet.length,
299
+ }), recentBlockhash.lastValidBlockHeight,
327
300
  // Hail mary, try with preflight enabled. Sometimes this causes
328
301
  // errors that wouldn't otherwise happen
329
302
  triesRemaining != 1);
@@ -348,7 +321,7 @@ export async function bulkSendTransactions(provider, txs, onProgress, triesRemai
348
321
  // NOTE: The return signatures are ordered by confirmation, not by order they are passed
349
322
  // This list should be in order. Seom txns may fail
350
323
  // due to blockhash exp
351
- export async function bulkSendRawTransactions(connection, txs, onProgress, lastValidBlockHeight, skipPreflight = true) {
324
+ export async function bulkSendRawTransactions(connection, txs, onProgress, lastValidBlockHeight, skipPreflight = true, maxRetries = 0) {
352
325
  const txBatchSize = TX_BATCH_SIZE;
353
326
  let totalProgress = 0;
354
327
  const ret = [];
@@ -373,6 +346,7 @@ export async function bulkSendRawTransactions(connection, txs, onProgress, lastV
373
346
  for (const tx of chunk) {
374
347
  const txid = await connection.sendRawTransaction(tx, {
375
348
  skipPreflight,
349
+ maxRetries,
376
350
  });
377
351
  txids.push(txid);
378
352
  }
@@ -383,6 +357,7 @@ export async function bulkSendRawTransactions(connection, txs, onProgress, lastV
383
357
  currentBatchProgress += completed.length;
384
358
  onProgress &&
385
359
  onProgress({
360
+ totalTxs: txs.length,
386
361
  totalProgress: totalProgress,
387
362
  currentBatchProgress: currentBatchProgress,
388
363
  currentBatchSize: txBatchSize,
@@ -395,7 +370,7 @@ export async function bulkSendRawTransactions(connection, txs, onProgress, lastV
395
370
  throw new Error("Failed to run txs");
396
371
  }
397
372
  ret.push(...txids
398
- .map((txid, idx) => statuses[idx] == null ? null : txid)
373
+ .map((txid, idx) => (statuses[idx] == null ? null : txid))
399
374
  .filter(truthy));
400
375
  chunk = chunk.filter((_, index) => statuses[index] === null);
401
376
  txids = txids.filter((_, index) => statuses[index] === null);
@@ -412,4 +387,160 @@ async function getAllTxns(connection, txids) {
412
387
  commitment: "confirmed",
413
388
  })))).flat();
414
389
  }
390
+ // Batch instructions parallel into as many txs as it takes
391
+ export async function batchParallelInstructions({ provider, instructions, onProgress, triesRemaining = 10, extraSigners = [], maxSignatureBatch = TX_BATCH_SIZE, addressLookupTableAddresses = [], }) {
392
+ let currentTxInstructions = [];
393
+ const blockhash = (await provider.connection.getLatestBlockhash()).blockhash;
394
+ const transactions = [];
395
+ const addressLookupTables = await getAddressLookupTableAccounts(provider.connection, addressLookupTableAddresses);
396
+ for (const instruction of instructions) {
397
+ currentTxInstructions.push(instruction);
398
+ const tx = await toVersionedTx({
399
+ feePayer: provider.wallet.publicKey,
400
+ recentBlockhash: blockhash,
401
+ instructions: currentTxInstructions,
402
+ addressLookupTableAddresses,
403
+ signers: extraSigners,
404
+ addressLookupTables,
405
+ });
406
+ try {
407
+ if (tx.serialize().length + 64 * tx.signatures.length > 1232) {
408
+ throw new Error("encoding overruns Uint8Array");
409
+ }
410
+ }
411
+ catch (e) {
412
+ if (e.toString().includes("encoding overruns Uint8Array")) {
413
+ currentTxInstructions.pop();
414
+ transactions.push({
415
+ feePayer: provider.wallet.publicKey,
416
+ recentBlockhash: blockhash,
417
+ instructions: currentTxInstructions,
418
+ addressLookupTableAddresses,
419
+ signers: extraSigners,
420
+ addressLookupTables,
421
+ });
422
+ currentTxInstructions = [instruction];
423
+ }
424
+ else {
425
+ throw e;
426
+ }
427
+ }
428
+ }
429
+ if (currentTxInstructions.length > 0) {
430
+ transactions.push({
431
+ feePayer: provider.wallet.publicKey,
432
+ recentBlockhash: blockhash,
433
+ instructions: currentTxInstructions,
434
+ addressLookupTableAddresses,
435
+ signers: extraSigners,
436
+ addressLookupTables,
437
+ });
438
+ }
439
+ await bulkSendTransactions(provider, transactions, onProgress, triesRemaining, extraSigners, maxSignatureBatch);
440
+ }
441
+ export async function batchSequentialParallelInstructions({ provider, instructions, onProgress, triesRemaining = 10, extraSigners = [], maxSignatureBatch = TX_BATCH_SIZE, addressLookupTableAddresses = [], }) {
442
+ for (const instruction of instructions) {
443
+ await batchParallelInstructions({
444
+ provider,
445
+ instructions: instruction,
446
+ onProgress,
447
+ triesRemaining,
448
+ extraSigners,
449
+ maxSignatureBatch,
450
+ addressLookupTableAddresses,
451
+ });
452
+ }
453
+ }
454
+ export async function batchInstructionsToTxsWithPriorityFee(provider,
455
+ // If passing an array of arrays, that indicates the instructions need to be run in the same tx,
456
+ // optionally with the ones around it.
457
+ instructions, { computeUnitLimit, basePriorityFee, addressLookupTableAddresses, computeScaleUp, extraSigners = [], } = {}) {
458
+ let currentTxInstructions = [];
459
+ const blockhash = (await provider.connection.getLatestBlockhash()).blockhash;
460
+ const transactions = [];
461
+ const addressLookupTables = await getAddressLookupTableAccounts(provider.connection, addressLookupTableAddresses || []);
462
+ for (const instruction of instructions) {
463
+ const instrArr = Array.isArray(instruction) ? instruction : [instruction];
464
+ const prevLen = currentTxInstructions.length;
465
+ currentTxInstructions.push(...instrArr);
466
+ const tx = await toVersionedTx({
467
+ instructions: [
468
+ ComputeBudgetProgram.setComputeUnitLimit({
469
+ units: computeUnitLimit || 100000,
470
+ }),
471
+ ComputeBudgetProgram.setComputeUnitPrice({
472
+ // Placeholder, will be replaced with actual value
473
+ microLamports: 1,
474
+ }),
475
+ ...currentTxInstructions,
476
+ ],
477
+ addressLookupTableAddresses: addressLookupTableAddresses || [],
478
+ feePayer: provider.wallet.publicKey,
479
+ recentBlockhash: blockhash,
480
+ addressLookupTables,
481
+ });
482
+ try {
483
+ if (tx.serialize().length + 64 * tx.signatures.length > 1232) {
484
+ throw new Error("encoding overruns Uint8Array");
485
+ }
486
+ }
487
+ catch (e) {
488
+ if (e.toString().includes("encoding overruns Uint8Array")) {
489
+ currentTxInstructions = currentTxInstructions.slice(0, prevLen);
490
+ if (currentTxInstructions.length > 0) {
491
+ transactions.push({
492
+ instructions: await withPriorityFees({
493
+ connection: provider.connection,
494
+ instructions: currentTxInstructions,
495
+ computeUnits: computeUnitLimit,
496
+ computeScaleUp,
497
+ basePriorityFee,
498
+ addressLookupTables,
499
+ feePayer: provider.wallet.publicKey,
500
+ }),
501
+ addressLookupTableAddresses: addressLookupTableAddresses || [],
502
+ feePayer: provider.wallet.publicKey,
503
+ recentBlockhash: blockhash,
504
+ addressLookupTables,
505
+ signers: extraSigners.filter((s) => currentTxInstructions.some((ix) => ix.keys.some((k) => k.pubkey.equals(s.publicKey) && k.isSigner))),
506
+ });
507
+ }
508
+ currentTxInstructions = instrArr;
509
+ }
510
+ else {
511
+ throw e;
512
+ }
513
+ }
514
+ }
515
+ if (currentTxInstructions.length > 0) {
516
+ transactions.push({
517
+ instructions: await withPriorityFees({
518
+ connection: provider.connection,
519
+ instructions: currentTxInstructions,
520
+ computeUnits: computeUnitLimit,
521
+ computeScaleUp,
522
+ basePriorityFee,
523
+ addressLookupTables,
524
+ feePayer: provider.wallet.publicKey,
525
+ }),
526
+ addressLookupTableAddresses: addressLookupTableAddresses || [],
527
+ feePayer: provider.wallet.publicKey,
528
+ recentBlockhash: blockhash,
529
+ addressLookupTables,
530
+ signers: extraSigners.filter((s) => currentTxInstructions.some((ix) => ix.keys.some((k) => k.pubkey.equals(s.publicKey) && k.isSigner))),
531
+ });
532
+ }
533
+ return transactions;
534
+ }
535
+ export async function batchParallelInstructionsWithPriorityFee(provider,
536
+ // If passing an array of arrays, that indicates the instructions need to be run in the same tx,
537
+ // optionally with the ones around it.
538
+ instructions, { onProgress, triesRemaining = 10, computeUnitLimit, computeScaleUp, basePriorityFee, extraSigners, maxSignatureBatch = TX_BATCH_SIZE, } = {}) {
539
+ const transactions = await batchInstructionsToTxsWithPriorityFee(provider, instructions, {
540
+ computeUnitLimit,
541
+ basePriorityFee,
542
+ computeScaleUp,
543
+ });
544
+ await bulkSendTransactions(provider, transactions, onProgress, triesRemaining, extraSigners, maxSignatureBatch);
545
+ }
415
546
  //# sourceMappingURL=transaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/transaction.ts"],"names":[],"mappings":"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"}