@helium/spl-utils 0.2.21 → 0.2.22-next.33

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 (62) hide show
  1. package/package.json +9 -9
  2. package/lib/cjs/anchorError.js +0 -265
  3. package/lib/cjs/anchorError.js.map +0 -1
  4. package/lib/cjs/constants.js +0 -11
  5. package/lib/cjs/constants.js.map +0 -1
  6. package/lib/cjs/executeRemoteTxn.js +0 -109
  7. package/lib/cjs/executeRemoteTxn.js.map +0 -1
  8. package/lib/cjs/extendBorsh.js +0 -33
  9. package/lib/cjs/extendBorsh.js.map +0 -1
  10. package/lib/cjs/index.js +0 -33
  11. package/lib/cjs/index.js.map +0 -1
  12. package/lib/cjs/mplAssetAPI.js +0 -188
  13. package/lib/cjs/mplAssetAPI.js.map +0 -1
  14. package/lib/cjs/proofArgsAndAccounts.js +0 -52
  15. package/lib/cjs/proofArgsAndAccounts.js.map +0 -1
  16. package/lib/cjs/token.js +0 -235
  17. package/lib/cjs/token.js.map +0 -1
  18. package/lib/cjs/transaction.js +0 -479
  19. package/lib/cjs/transaction.js.map +0 -1
  20. package/lib/cjs/utils.js +0 -116
  21. package/lib/cjs/utils.js.map +0 -1
  22. package/lib/esm/src/anchorError.js +0 -262
  23. package/lib/esm/src/anchorError.js.map +0 -1
  24. package/lib/esm/src/constants.js +0 -8
  25. package/lib/esm/src/constants.js.map +0 -1
  26. package/lib/esm/src/executeRemoteTxn.js +0 -79
  27. package/lib/esm/src/executeRemoteTxn.js.map +0 -1
  28. package/lib/esm/src/extendBorsh.js +0 -26
  29. package/lib/esm/src/extendBorsh.js.map +0 -1
  30. package/lib/esm/src/index.js +0 -10
  31. package/lib/esm/src/index.js.map +0 -1
  32. package/lib/esm/src/mplAssetAPI.js +0 -167
  33. package/lib/esm/src/mplAssetAPI.js.map +0 -1
  34. package/lib/esm/src/proofArgsAndAccounts.js +0 -37
  35. package/lib/esm/src/proofArgsAndAccounts.js.map +0 -1
  36. package/lib/esm/src/token.js +0 -208
  37. package/lib/esm/src/token.js.map +0 -1
  38. package/lib/esm/src/transaction.js +0 -415
  39. package/lib/esm/src/transaction.js.map +0 -1
  40. package/lib/esm/src/utils.js +0 -73
  41. package/lib/esm/src/utils.js.map +0 -1
  42. package/lib/esm/tsconfig.esm.tsbuildinfo +0 -1
  43. package/lib/types/src/anchorError.d.ts +0 -9
  44. package/lib/types/src/anchorError.d.ts.map +0 -1
  45. package/lib/types/src/constants.d.ts +0 -7
  46. package/lib/types/src/constants.d.ts.map +0 -1
  47. package/lib/types/src/executeRemoteTxn.d.ts +0 -23
  48. package/lib/types/src/executeRemoteTxn.d.ts.map +0 -1
  49. package/lib/types/src/extendBorsh.d.ts +0 -3
  50. package/lib/types/src/extendBorsh.d.ts.map +0 -1
  51. package/lib/types/src/index.d.ts +0 -12
  52. package/lib/types/src/index.d.ts.map +0 -1
  53. package/lib/types/src/mplAssetAPI.d.ts +0 -70
  54. package/lib/types/src/mplAssetAPI.d.ts.map +0 -1
  55. package/lib/types/src/proofArgsAndAccounts.d.ts +0 -21
  56. package/lib/types/src/proofArgsAndAccounts.d.ts.map +0 -1
  57. package/lib/types/src/token.d.ts +0 -21
  58. package/lib/types/src/token.d.ts.map +0 -1
  59. package/lib/types/src/transaction.d.ts +0 -37
  60. package/lib/types/src/transaction.d.ts.map +0 -1
  61. package/lib/types/src/utils.d.ts +0 -19
  62. package/lib/types/src/utils.d.ts.map +0 -1
@@ -1,208 +0,0 @@
1
- import { createCreateMasterEditionV3Instruction, createCreateMetadataAccountV3Instruction, createVerifyCollectionInstruction, PROGRAM_ID as METADATA_PROGRAM_ID, } from "@metaplex-foundation/mpl-token-metadata";
2
- import { createAssociatedTokenAccountInstruction, createInitializeMintInstruction, createMintToInstruction, createTransferInstruction, getAssociatedTokenAddress, TOKEN_PROGRAM_ID, } from "@solana/spl-token";
3
- import { Keypair, PublicKey, SystemProgram, Transaction, } from "@solana/web3.js";
4
- export async function mintTo(provider, mint, amount, destination) {
5
- const mintTx = new Transaction();
6
- mintTx.add(createMintToInstruction(mint, destination, provider.wallet.publicKey, amount));
7
- try {
8
- await provider.sendAndConfirm(mintTx);
9
- }
10
- catch (e) {
11
- console.log("Error", e, e.logs);
12
- if (e.logs) {
13
- console.error(e.logs.join("\n"));
14
- }
15
- throw e;
16
- }
17
- }
18
- export async function createAtaAndTransferInstructions(provider, mint, amount, from = provider.wallet.publicKey, to = provider.wallet.publicKey, payer = provider.wallet.publicKey) {
19
- const toAta = await getAssociatedTokenAddress(mint, to, true);
20
- const instructions = [];
21
- if (!(await provider.connection.getAccountInfo(toAta))) {
22
- instructions.push(createAssociatedTokenAccountInstruction(payer, toAta, to, mint));
23
- }
24
- const fromAta = await getAssociatedTokenAddress(mint, from, true);
25
- if (amount != 0) {
26
- instructions.push(createTransferInstruction(fromAta, toAta, from, BigInt(amount.toString())));
27
- }
28
- return {
29
- instructions,
30
- toAta,
31
- };
32
- }
33
- export async function createAtaAndTransfer(provider, mint, amount, from = provider.wallet.publicKey, to = provider.wallet.publicKey, authority = provider.wallet.publicKey, payer = provider.wallet.publicKey, confirmOptions) {
34
- const transferIx = new Transaction();
35
- const { instructions, toAta } = await createAtaAndTransferInstructions(provider, mint, amount, from, to, payer);
36
- if (instructions.length > 0)
37
- transferIx.add(...instructions);
38
- try {
39
- if (instructions.length > 0)
40
- await provider.sendAndConfirm(transferIx, undefined, confirmOptions);
41
- }
42
- catch (e) {
43
- console.log("Error", e, e.logs);
44
- if (e.logs) {
45
- console.error(e.logs.join("\n"));
46
- }
47
- throw e;
48
- }
49
- return toAta;
50
- }
51
- export async function createAtaAndMintInstructions(provider, mint, amount, to = provider.wallet.publicKey, authority = provider.wallet.publicKey, payer = provider.wallet.publicKey) {
52
- const ata = await getAssociatedTokenAddress(mint, to, true);
53
- const instructions = [];
54
- if (!(await provider.connection.getAccountInfo(ata))) {
55
- instructions.push(createAssociatedTokenAccountInstruction(payer, ata, to, mint));
56
- }
57
- if (amount != 0) {
58
- instructions.push(createMintToInstruction(mint, ata, authority, BigInt(amount.toString())));
59
- }
60
- return {
61
- instructions,
62
- ata,
63
- };
64
- }
65
- export async function createAtaAndMint(provider, mint, amount, to = provider.wallet.publicKey, authority = provider.wallet.publicKey, payer = provider.wallet.publicKey, confirmOptions) {
66
- const mintTx = new Transaction();
67
- const { instructions, ata } = await createAtaAndMintInstructions(provider, mint, amount, to, authority, payer);
68
- if (instructions.length > 0)
69
- mintTx.add(...instructions);
70
- try {
71
- if (instructions.length > 0)
72
- await provider.sendAndConfirm(mintTx, undefined, confirmOptions);
73
- }
74
- catch (e) {
75
- console.log("Error", e, e.logs);
76
- if (e.logs) {
77
- console.error(e.logs.join("\n"));
78
- }
79
- throw e;
80
- }
81
- return ata;
82
- }
83
- export async function createMintInstructions(provider, decimals, mintAuthority, freezeAuthority = null, mintKeypair = Keypair.generate()) {
84
- const mintKey = mintKeypair.publicKey;
85
- return [
86
- SystemProgram.createAccount({
87
- fromPubkey: provider.wallet.publicKey,
88
- newAccountPubkey: mintKey,
89
- space: 82,
90
- lamports: await provider.connection.getMinimumBalanceForRentExemption(82),
91
- programId: TOKEN_PROGRAM_ID,
92
- }),
93
- await createInitializeMintInstruction(mintKeypair.publicKey, decimals, mintAuthority, freezeAuthority),
94
- ];
95
- }
96
- export async function createMint(provider, decimals, mintAuthority, freezeAuthority = null, mintKeypair = Keypair.generate()) {
97
- const tx = new Transaction();
98
- tx.add(...(await createMintInstructions(provider, decimals, mintAuthority, freezeAuthority, mintKeypair)));
99
- try {
100
- await provider.sendAndConfirm(tx, [mintKeypair]);
101
- }
102
- catch (e) {
103
- console.log("Error", e, e.logs);
104
- if (e.logs) {
105
- console.error(e.logs.join("\n"));
106
- }
107
- throw e;
108
- }
109
- return mintKeypair.publicKey;
110
- }
111
- export async function createNft(provider, recipient, data = {}, collectionKey, mintKeypair = Keypair.generate(), holderKey = provider.wallet.publicKey) {
112
- const mintKey = mintKeypair.publicKey;
113
- const instructions = await createMintInstructions(provider, 0, provider.wallet.publicKey, provider.wallet.publicKey, mintKeypair);
114
- const [metadata] = PublicKey.findProgramAddressSync([
115
- Buffer.from("metadata", "utf8"),
116
- METADATA_PROGRAM_ID.toBuffer(),
117
- mintKey.toBuffer(),
118
- ], METADATA_PROGRAM_ID);
119
- instructions.push(await createCreateMetadataAccountV3Instruction({
120
- metadata,
121
- mint: mintKey,
122
- mintAuthority: provider.wallet.publicKey,
123
- payer: provider.wallet.publicKey,
124
- updateAuthority: provider.wallet.publicKey,
125
- }, {
126
- createMetadataAccountArgsV3: {
127
- data: {
128
- name: "test",
129
- symbol: "TST",
130
- uri: "https://shdw-drive.genesysgo.net/6tcnBSybPG7piEDShBcrVtYJDPSvGrDbVvXmXKpzBvWP/dc.json",
131
- sellerFeeBasisPoints: 10,
132
- creators: [
133
- {
134
- address: holderKey,
135
- verified: true,
136
- share: 100,
137
- },
138
- ],
139
- collection: collectionKey
140
- ? { key: collectionKey, verified: false }
141
- : null,
142
- uses: null,
143
- ...data,
144
- },
145
- isMutable: true,
146
- collectionDetails: null,
147
- },
148
- }));
149
- const { instructions: mintInstrs } = await createAtaAndMintInstructions(provider, mintKeypair.publicKey, 1, recipient);
150
- instructions.push(...mintInstrs);
151
- if (collectionKey) {
152
- const [collectionMetadataAccount] = PublicKey.findProgramAddressSync([
153
- Buffer.from("metadata", "utf8"),
154
- METADATA_PROGRAM_ID.toBuffer(),
155
- collectionKey.toBuffer(),
156
- ], METADATA_PROGRAM_ID);
157
- const [collectionMasterEdition] = PublicKey.findProgramAddressSync([
158
- Buffer.from("metadata", "utf8"),
159
- METADATA_PROGRAM_ID.toBuffer(),
160
- collectionKey.toBuffer(),
161
- Buffer.from("edition", "utf8"),
162
- ], METADATA_PROGRAM_ID);
163
- const instruction = createVerifyCollectionInstruction({
164
- metadata: metadata,
165
- collectionAuthority: provider.wallet.publicKey,
166
- payer: provider.wallet.publicKey,
167
- collectionMint: collectionKey,
168
- collection: collectionMetadataAccount,
169
- collectionMasterEditionAccount: collectionMasterEdition,
170
- });
171
- instructions.push(instruction);
172
- }
173
- const [edition] = PublicKey.findProgramAddressSync([
174
- Buffer.from("metadata", "utf8"),
175
- METADATA_PROGRAM_ID.toBuffer(),
176
- mintKey.toBuffer(),
177
- Buffer.from("edition", "utf8"),
178
- ], METADATA_PROGRAM_ID);
179
- instructions.push(createCreateMasterEditionV3Instruction({
180
- edition,
181
- mint: mintKey,
182
- updateAuthority: provider.wallet.publicKey,
183
- mintAuthority: provider.wallet.publicKey,
184
- payer: provider.wallet.publicKey,
185
- metadata,
186
- }, {
187
- createMasterEditionArgs: {
188
- maxSupply: 0,
189
- },
190
- }));
191
- const tx = new Transaction();
192
- tx.add(...instructions);
193
- try {
194
- await provider.sendAndConfirm(tx, [mintKeypair]);
195
- }
196
- catch (e) {
197
- console.log("Error", e, e.logs);
198
- if (e.logs) {
199
- console.error(e.logs.join("\n"));
200
- }
201
- throw e;
202
- }
203
- return {
204
- mintKey,
205
- collectionKey,
206
- };
207
- }
208
- //# sourceMappingURL=token.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/token.ts"],"names":[],"mappings":"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"}
@@ -1,415 +0,0 @@
1
- import { Transaction, } from "@solana/web3.js";
2
- import bs58 from "bs58";
3
- import { ProgramError } from "./anchorError";
4
- 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
- async function sleep(ms) {
6
- return new Promise((resolve) => setTimeout(resolve, ms));
7
- }
8
- async function promiseAllInOrder(it) {
9
- let ret = [];
10
- for (const i of it) {
11
- ret.push(await i());
12
- }
13
- return ret;
14
- }
15
- export async function sendInstructions(provider, instructions, signers = [], payer = provider.wallet.publicKey, commitment = "confirmed", idlErrors = new Map()) {
16
- if (instructions.length == 0) {
17
- return "";
18
- }
19
- let tx = new Transaction();
20
- tx.recentBlockhash = (await provider.connection.getLatestBlockhash()).blockhash;
21
- tx.feePayer = payer || provider.wallet.publicKey;
22
- tx.add(...instructions);
23
- if (signers.length > 0) {
24
- tx.partialSign(...signers);
25
- }
26
- if (tx.feePayer.equals(provider.wallet.publicKey) ||
27
- tx.instructions.some((ix) => ix.keys.some((key) => key.isSigner && key.pubkey.equals(provider.wallet.publicKey)))) {
28
- tx = await provider.wallet.signTransaction(tx);
29
- }
30
- try {
31
- const { txid } = await sendAndConfirmWithRetry(provider.connection, tx.serialize(), {
32
- skipPreflight: true,
33
- }, commitment);
34
- return txid;
35
- }
36
- catch (e) {
37
- console.error(e);
38
- const wrappedE = ProgramError.parse(e, idlErrors);
39
- throw wrappedE == null ? e : wrappedE;
40
- }
41
- }
42
- function truthy(value) {
43
- return !!value;
44
- }
45
- export async function sendMultipleInstructions(provider, instructionGroups, signerGroups, payer, finality = "confirmed", idlErrors = new Map()) {
46
- const recentBlockhash = (await provider.connection.getLatestBlockhash("confirmed")).blockhash;
47
- const ixAndSigners = instructionGroups
48
- .map((instructions, i) => {
49
- const signers = signerGroups[i];
50
- return {
51
- instructions,
52
- signers,
53
- };
54
- })
55
- .filter(({ instructions }) => instructions.length > 0);
56
- const txns = ixAndSigners.map(({ instructions }) => {
57
- const tx = new Transaction({
58
- feePayer: payer || provider.wallet.publicKey,
59
- recentBlockhash,
60
- });
61
- tx.add(...instructions);
62
- return tx;
63
- });
64
- const txnsSignedByWallet = await provider.wallet.signAllTransactions(txns);
65
- const txnsSigned = txnsSignedByWallet
66
- .map((tx, index) => {
67
- const signers = ixAndSigners[index].signers;
68
- if (signers.length > 0) {
69
- tx.partialSign(...signers);
70
- }
71
- return tx;
72
- })
73
- .map((tx) => tx.serialize());
74
- console.log("Sending multiple transactions...");
75
- try {
76
- return await promiseAllInOrder(txnsSigned.map((txn) => async () => {
77
- const { txid } = await sendAndConfirmWithRetry(provider.connection, txn, {
78
- skipPreflight: true,
79
- }, finality);
80
- return txid;
81
- }));
82
- }
83
- catch (e) {
84
- console.error(e);
85
- const wrappedE = ProgramError.parse(e, idlErrors);
86
- throw wrappedE == null ? e : wrappedE;
87
- }
88
- }
89
- export async function execute(program, provider, command, payer = provider.wallet.publicKey, commitment) {
90
- const { instructions, signers, output } = command;
91
- const errors = program.idl.errors?.reduce((acc, err) => {
92
- acc.set(err.code, `${err.name}: ${err.msg}`);
93
- return acc;
94
- }, new Map());
95
- if (instructions.length > 0) {
96
- const txid = await sendInstructions(provider, instructions, signers, payer, commitment, errors);
97
- return { txid, ...output };
98
- }
99
- // @ts-ignore
100
- return output;
101
- }
102
- export async function executeBig(program, provider, command, payer = provider.wallet.publicKey, finality) {
103
- const { instructions, signers, output } = command;
104
- const errors = program.idl.errors?.reduce((acc, err) => {
105
- acc.set(err.code, `${err.name}: ${err.msg}`);
106
- return acc;
107
- }, new Map());
108
- if (instructions.length > 0) {
109
- const txids = await sendMultipleInstructions(provider, instructions, signers, payer || provider.wallet.publicKey, finality, errors);
110
- return {
111
- ...output,
112
- txids: Array.from(txids),
113
- };
114
- }
115
- // @ts-ignore
116
- return output;
117
- }
118
- function getUnixTime() {
119
- return new Date().valueOf() / 1000;
120
- }
121
- const SEND_TRANSACTION_INTERVAL = 10;
122
- 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;
210
- };
211
- async function simulateTransaction(connection, transaction, commitment) {
212
- // @ts-ignore
213
- transaction.recentBlockhash = await connection._recentBlockhash(
214
- // @ts-ignore
215
- connection._disableBlockhashCaching);
216
- const signData = transaction.serializeMessage();
217
- // @ts-ignore
218
- const wireTransaction = transaction._serialize(signData);
219
- const encodedTransaction = wireTransaction.toString("base64");
220
- const config = { encoding: "base64", commitment };
221
- const args = [encodedTransaction, config];
222
- // @ts-ignore
223
- const res = await connection._rpcRequest("simulateTransaction", args);
224
- if (res.error) {
225
- throw new Error("failed to simulate transaction: " + res.error.message);
226
- }
227
- return res.result;
228
- }
229
- const DEFAULT_TIMEOUT = 3 * 60 * 1000; // 3 minutes
230
- /*
231
- A validator has up to 120s to accept the transaction and send it into a block.
232
- If it doesn’t happen within that timeframe, your transaction is dropped and you’ll need
233
- to send the transaction again. You can get the transaction signature and periodically
234
- Ping the network for that transaction signature. If you never get anything back,
235
- that means it’s definitely been dropped. If you do get a response back, you can keep pinging
236
- that means it’s definitely been dropped. If you do get a response back, you can keep pinging
237
- until it’s gone to a confirmed status to move on.
238
- */
239
- export async function sendAndConfirmWithRetry(connection, txn, sendOptions, commitment, timeout = DEFAULT_TIMEOUT) {
240
- let done = false;
241
- let slot = 0;
242
- const txid = await connection.sendRawTransaction(txn, sendOptions);
243
- console.log("txid", txid);
244
- const startTime = getUnixTime();
245
- (async () => {
246
- while (!done && getUnixTime() - startTime < timeout) {
247
- await connection.sendRawTransaction(txn, sendOptions);
248
- await sleep(500);
249
- }
250
- })();
251
- try {
252
- const confirmation = await awaitTransactionSignatureConfirmation(txid, timeout, connection, commitment, true);
253
- if (!confirmation)
254
- throw new Error("Timed out awaiting confirmation on transaction");
255
- if (confirmation.err) {
256
- const tx = await connection.getTransaction(txid, {
257
- commitment: "confirmed",
258
- });
259
- console.error(tx?.meta?.logMessages?.join("\n"));
260
- console.error(confirmation.err);
261
- throw new Error("Transaction failed: Custom instruction error");
262
- }
263
- slot = confirmation?.slot || 0;
264
- }
265
- catch (err) {
266
- console.error("Error caught", err);
267
- if (err.timeout) {
268
- throw new Error("Timed out awaiting confirmation on transaction");
269
- }
270
- const tx = await connection.getTransaction(txid, {
271
- commitment: "confirmed",
272
- });
273
- if (tx && tx.meta && tx.meta.logMessages) {
274
- console.error(tx.meta.logMessages.join("\n"));
275
- }
276
- if (err.err) {
277
- throw err.err;
278
- }
279
- throw err;
280
- }
281
- finally {
282
- done = true;
283
- }
284
- console.log("Latency", txid, getUnixTime() - startTime);
285
- return { txid };
286
- }
287
- export function stringToTransaction(solanaTransaction) {
288
- return Transaction.from(Buffer.from(solanaTransaction));
289
- }
290
- export function bufferToTransaction(solanaTransaction) {
291
- return Transaction.from(solanaTransaction);
292
- }
293
- async function withRetries(tries, input) {
294
- for (let i = 0; i < tries; i++) {
295
- try {
296
- return await input();
297
- }
298
- catch (e) {
299
- console.log(`Retrying ${i}...`, e);
300
- }
301
- }
302
- throw new Error("Failed after retries");
303
- }
304
- 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
- ) {
307
- let ret = [];
308
- // attempt to chunk by blockhash bounds (so signing doesn't take too long)
309
- for (let chunk of chunks(txs, TX_BATCH_SIZE)) {
310
- const thisRet = [];
311
- // Continually send in bulk while resetting blockhash until we send them all
312
- while (true) {
313
- const recentBlockhash = await withRetries(5, () => provider.connection.getLatestBlockhash("confirmed"));
314
- const blockhashedTxs = await Promise.all(chunk.map(async (tx) => {
315
- tx.recentBlockhash = recentBlockhash.blockhash;
316
- return tx;
317
- }));
318
- const signedTxs = await provider.wallet.signAllTransactions(blockhashedTxs);
319
- const txsWithSigs = signedTxs.map((tx, index) => {
320
- return {
321
- transaction: chunk[index],
322
- sig: bs58.encode(tx.signatures[0].signature),
323
- };
324
- });
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,
327
- // Hail mary, try with preflight enabled. Sometimes this causes
328
- // errors that wouldn't otherwise happen
329
- triesRemaining != 1);
330
- thisRet.push(...confirmedTxs);
331
- if (confirmedTxs.length == signedTxs.length) {
332
- break;
333
- }
334
- const retSet = new Set(thisRet);
335
- chunk = txsWithSigs
336
- .filter(({ sig }) => !retSet.has(sig))
337
- .map(({ transaction }) => transaction);
338
- triesRemaining--;
339
- if (triesRemaining <= 0) {
340
- throw new Error(`Failed to submit all txs after blockhashes expired, ${signedTxs.length - confirmedTxs.length} remain`);
341
- }
342
- }
343
- ret.push(...thisRet);
344
- }
345
- return ret;
346
- }
347
- // Returns the list of succesfully sent txns
348
- // NOTE: The return signatures are ordered by confirmation, not by order they are passed
349
- // This list should be in order. Seom txns may fail
350
- // due to blockhash exp
351
- export async function bulkSendRawTransactions(connection, txs, onProgress, lastValidBlockHeight, skipPreflight = true) {
352
- const txBatchSize = TX_BATCH_SIZE;
353
- let totalProgress = 0;
354
- const ret = [];
355
- if (!lastValidBlockHeight) {
356
- const blockhash = await withRetries(5, () => connection.getLatestBlockhash("confirmed"));
357
- lastValidBlockHeight = blockhash.lastValidBlockHeight;
358
- }
359
- for (let chunk of chunks(txs, txBatchSize)) {
360
- let currentBatchProgress = 0;
361
- let pendingCount = chunk.length;
362
- let txids = [];
363
- let lastRetry = 0;
364
- while (pendingCount > 0) {
365
- if ((await withRetries(5, () => connection.getBlockHeight())) >
366
- lastValidBlockHeight) {
367
- return ret;
368
- }
369
- // only resend txs every 4s
370
- if (lastRetry < new Date().valueOf() - 4 * 1000) {
371
- lastRetry = new Date().valueOf();
372
- txids = [];
373
- for (const tx of chunk) {
374
- const txid = await connection.sendRawTransaction(tx, {
375
- skipPreflight,
376
- });
377
- txids.push(txid);
378
- }
379
- }
380
- const statuses = await getAllTxns(connection, txids);
381
- const completed = statuses.filter((status) => status !== null);
382
- totalProgress += completed.length;
383
- currentBatchProgress += completed.length;
384
- onProgress &&
385
- onProgress({
386
- totalProgress: totalProgress,
387
- currentBatchProgress: currentBatchProgress,
388
- currentBatchSize: txBatchSize,
389
- });
390
- const failures = completed
391
- .map((status) => status !== null && status.meta?.err)
392
- .filter(truthy);
393
- if (failures.length > 0) {
394
- console.error(failures);
395
- throw new Error("Failed to run txs");
396
- }
397
- ret.push(...txids
398
- .map((txid, idx) => statuses[idx] == null ? null : txid)
399
- .filter(truthy));
400
- chunk = chunk.filter((_, index) => statuses[index] === null);
401
- txids = txids.filter((_, index) => statuses[index] === null);
402
- pendingCount -= completed.length;
403
- await sleep(1000); // Wait one seconds before querying again
404
- }
405
- }
406
- return ret;
407
- }
408
- const MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS = 200;
409
- async function getAllTxns(connection, txids) {
410
- return (await Promise.all(chunks(txids, MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS).map((txids) => connection.getTransactions(txids, {
411
- maxSupportedTransactionVersion: 0,
412
- commitment: "confirmed",
413
- })))).flat();
414
- }
415
- //# sourceMappingURL=transaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/transaction.ts"],"names":[],"mappings":"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"}