@marinade.finance/web3js-1x 4.0.0
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/README.md +75 -0
- package/dist/package.json +57 -0
- package/dist/src/account.d.ts +38 -0
- package/dist/src/account.d.ts.map +1 -0
- package/dist/src/account.js +72 -0
- package/dist/src/account.js.map +1 -0
- package/dist/src/borsh.d.ts +3 -0
- package/dist/src/borsh.d.ts.map +1 -0
- package/dist/src/borsh.js +31 -0
- package/dist/src/borsh.js.map +1 -0
- package/dist/src/epoch.d.ts +5 -0
- package/dist/src/epoch.d.ts.map +1 -0
- package/dist/src/epoch.js +31 -0
- package/dist/src/epoch.js.map +1 -0
- package/dist/src/equalityTesters.d.ts +2 -0
- package/dist/src/equalityTesters.d.ts.map +1 -0
- package/dist/src/equalityTesters.js +34 -0
- package/dist/src/equalityTesters.js.map +1 -0
- package/dist/src/error.d.ts +22 -0
- package/dist/src/error.d.ts.map +1 -0
- package/dist/src/error.js +65 -0
- package/dist/src/error.js.map +1 -0
- package/dist/src/execution.d.ts +12 -0
- package/dist/src/execution.d.ts.map +1 -0
- package/dist/src/execution.js +24 -0
- package/dist/src/execution.js.map +1 -0
- package/dist/src/fileKeypair.d.ts +7 -0
- package/dist/src/fileKeypair.d.ts.map +1 -0
- package/dist/src/fileKeypair.js +53 -0
- package/dist/src/fileKeypair.js.map +1 -0
- package/dist/src/formatter.d.ts +27 -0
- package/dist/src/formatter.d.ts.map +1 -0
- package/dist/src/formatter.js +113 -0
- package/dist/src/formatter.js.map +1 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +35 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/math.d.ts +3 -0
- package/dist/src/math.d.ts.map +1 -0
- package/dist/src/math.js +19 -0
- package/dist/src/math.js.map +1 -0
- package/dist/src/parse.d.ts +12 -0
- package/dist/src/parse.d.ts.map +1 -0
- package/dist/src/parse.js +123 -0
- package/dist/src/parse.js.map +1 -0
- package/dist/src/provider.d.ts +43 -0
- package/dist/src/provider.d.ts.map +1 -0
- package/dist/src/provider.js +88 -0
- package/dist/src/provider.js.map +1 -0
- package/dist/src/solana.d.ts +19 -0
- package/dist/src/solana.d.ts.map +1 -0
- package/dist/src/solana.js +106 -0
- package/dist/src/solana.js.map +1 -0
- package/dist/src/stakeAccount.d.ts +22 -0
- package/dist/src/stakeAccount.d.ts.map +1 -0
- package/dist/src/stakeAccount.js +70 -0
- package/dist/src/stakeAccount.js.map +1 -0
- package/dist/src/tokenMetadata.d.ts +4 -0
- package/dist/src/tokenMetadata.d.ts.map +1 -0
- package/dist/src/tokenMetadata.js +14 -0
- package/dist/src/tokenMetadata.js.map +1 -0
- package/dist/src/tx.d.ts +102 -0
- package/dist/src/tx.d.ts.map +1 -0
- package/dist/src/tx.js +543 -0
- package/dist/src/tx.js.map +1 -0
- package/dist/src/txBulk.d.ts +30 -0
- package/dist/src/txBulk.d.ts.map +1 -0
- package/dist/src/txBulk.js +194 -0
- package/dist/src/txBulk.js.map +1 -0
- package/dist/src/txToBase64.d.ts +24 -0
- package/dist/src/txToBase64.d.ts.map +1 -0
- package/dist/src/txToBase64.js +72 -0
- package/dist/src/txToBase64.js.map +1 -0
- package/dist/src/voteAccount.d.ts +39 -0
- package/dist/src/voteAccount.d.ts.map +1 -0
- package/dist/src/voteAccount.js +320 -0
- package/dist/src/voteAccount.js.map +1 -0
- package/dist/src/wallet.d.ts +31 -0
- package/dist/src/wallet.d.ts.map +1 -0
- package/dist/src/wallet.js +100 -0
- package/dist/src/wallet.js.map +1 -0
- package/package.json +57 -0
package/dist/src/tx.js
ADDED
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SPLIT_MARKER_END_INSTANCE = exports.SPLIT_MARKER_START_INSTANCE = exports.TransactionInstructionSplitMarkerEnd = exports.TransactionInstructionSplitMarkerStart = exports.TRANSACTION_SAFE_SIZE = void 0;
|
|
7
|
+
exports.transaction = transaction;
|
|
8
|
+
exports.isExecuteTxReturn = isExecuteTxReturn;
|
|
9
|
+
exports.partialSign = partialSign;
|
|
10
|
+
exports.unhandledRejection = unhandledRejection;
|
|
11
|
+
exports.executeTx = executeTx;
|
|
12
|
+
exports.updateTransactionBlockhash = updateTransactionBlockhash;
|
|
13
|
+
exports.confirmTransaction = confirmTransaction;
|
|
14
|
+
exports.executeTxSimple = executeTxSimple;
|
|
15
|
+
exports.executeTxWithExceededBlockhashRetry = executeTxWithExceededBlockhashRetry;
|
|
16
|
+
exports.isSimulatedTransactionResponse = isSimulatedTransactionResponse;
|
|
17
|
+
exports.isVersionedTransaction = isVersionedTransaction;
|
|
18
|
+
exports.filterSignersForInstruction = filterSignersForInstruction;
|
|
19
|
+
exports.addComputeBudgetIxes = addComputeBudgetIxes;
|
|
20
|
+
exports.setComputeUnitLimitIx = setComputeUnitLimitIx;
|
|
21
|
+
exports.setComputeUnitPriceIx = setComputeUnitPriceIx;
|
|
22
|
+
exports.splitAndExecuteTx = splitAndExecuteTx;
|
|
23
|
+
exports.debugStr = debugStr;
|
|
24
|
+
const assert_1 = __importDefault(require("assert"));
|
|
25
|
+
const ts_common_1 = require("@marinade.finance/ts-common");
|
|
26
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
27
|
+
const error_1 = require("./error");
|
|
28
|
+
const provider_1 = require("./provider");
|
|
29
|
+
const txToBase64_1 = require("./txToBase64");
|
|
30
|
+
const wallet_1 = require("./wallet");
|
|
31
|
+
exports.TRANSACTION_SAFE_SIZE = 1280 - 40 - 8 - 1;
|
|
32
|
+
async function transaction(connection, feePayer) {
|
|
33
|
+
if (feePayer === undefined && (0, provider_1.instanceOfProvider)(connection)) {
|
|
34
|
+
feePayer = (0, provider_1.providerPubkey)(connection);
|
|
35
|
+
}
|
|
36
|
+
if (feePayer === undefined) {
|
|
37
|
+
throw new Error('transaction: feePayer or instance of Provider has to be passed in to ' +
|
|
38
|
+
'find the transaction fee payer');
|
|
39
|
+
}
|
|
40
|
+
connection = (0, provider_1.instanceOfProvider)(connection)
|
|
41
|
+
? connection.connection
|
|
42
|
+
: connection;
|
|
43
|
+
const bh = await connection.getLatestBlockhash();
|
|
44
|
+
feePayer = feePayer instanceof web3_js_1.PublicKey ? feePayer : feePayer.publicKey;
|
|
45
|
+
return new web3_js_1.Transaction({
|
|
46
|
+
feePayer,
|
|
47
|
+
blockhash: bh.blockhash,
|
|
48
|
+
lastValidBlockHeight: bh.lastValidBlockHeight,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function isExecuteTxReturn(data) {
|
|
52
|
+
return (data !== undefined &&
|
|
53
|
+
data !== null &&
|
|
54
|
+
typeof data === 'object' &&
|
|
55
|
+
'signature' in data &&
|
|
56
|
+
'transaction' in data);
|
|
57
|
+
}
|
|
58
|
+
async function partialSign(transaction, signers) {
|
|
59
|
+
for (const signer of signers) {
|
|
60
|
+
if ((0, wallet_1.instanceOfWallet)(signer)) {
|
|
61
|
+
await signer.signTransaction(transaction);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
if (transaction instanceof web3_js_1.VersionedTransaction) {
|
|
65
|
+
transaction.sign([signer]);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
transaction.partialSign(signer);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function unhandledRejection(err, promise, logger) {
|
|
74
|
+
promise.then(() => { }).catch(() => { });
|
|
75
|
+
(0, ts_common_1.logDebug)(logger, {
|
|
76
|
+
msg: 'Unhandled promise rejection',
|
|
77
|
+
message: err instanceof Error ? err.message : err,
|
|
78
|
+
stack: err.stack || '',
|
|
79
|
+
promise,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
async function executeTx({ connection, transaction, signers = [], errMessage, simulate = false, printOnly = false, logger, feePayer, sendOpts = {}, confirmOpts, computeUnitLimit, computeUnitPrice, confirmWaitTime, }) {
|
|
83
|
+
let txResponse = undefined;
|
|
84
|
+
if (printOnly) {
|
|
85
|
+
(0, ts_common_1.logInfo)(logger, 'Instructions (SPL Gov base64):');
|
|
86
|
+
for (const ix of transaction.instructions) {
|
|
87
|
+
console.log(' ' + (0, txToBase64_1.serializeInstructionToBase64)(ix));
|
|
88
|
+
}
|
|
89
|
+
if (!simulate) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
connection = (0, provider_1.instanceOfProvider)(connection)
|
|
94
|
+
? connection.connection
|
|
95
|
+
: connection;
|
|
96
|
+
addComputeBudgetIxes({
|
|
97
|
+
transaction,
|
|
98
|
+
computeUnitLimit,
|
|
99
|
+
computeUnitPrice,
|
|
100
|
+
});
|
|
101
|
+
if (transaction.recentBlockhash === undefined ||
|
|
102
|
+
transaction.lastValidBlockHeight === undefined ||
|
|
103
|
+
transaction.feePayer === undefined) {
|
|
104
|
+
await updateTransactionBlockhash(transaction, connection);
|
|
105
|
+
const possibleFeePayer = transaction.feePayer ?? feePayer ?? signers[0]?.publicKey;
|
|
106
|
+
if (possibleFeePayer !== undefined) {
|
|
107
|
+
transaction.feePayer = possibleFeePayer;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
await partialSign(transaction, signers);
|
|
111
|
+
let txSignature = undefined;
|
|
112
|
+
try {
|
|
113
|
+
if (simulate) {
|
|
114
|
+
const handler = (r, p) => unhandledRejection(r, p, logger);
|
|
115
|
+
process.on('unhandledRejection', handler);
|
|
116
|
+
(0, ts_common_1.logDebug)(logger, 'executeTx: simulation mode');
|
|
117
|
+
txResponse = (await connection.simulateTransaction(transaction)).value;
|
|
118
|
+
process.off('unhandledRejection', handler);
|
|
119
|
+
if (txResponse.err) {
|
|
120
|
+
throw new web3_js_1.SendTransactionError({
|
|
121
|
+
action: 'simulate',
|
|
122
|
+
signature: '',
|
|
123
|
+
transactionMessage: txResponse.err,
|
|
124
|
+
logs: txResponse?.logs || undefined,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else if (!printOnly) {
|
|
129
|
+
txSignature = await sendRawTransactionWithRetry(connection, transaction, sendOpts, logger);
|
|
130
|
+
txResponse = await confirmTransaction(connection, txSignature, confirmOpts, logger, confirmWaitTime);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
throw new error_1.ExecutionError({
|
|
135
|
+
txSignature,
|
|
136
|
+
msg: errMessage,
|
|
137
|
+
cause: e,
|
|
138
|
+
logs: e.logs,
|
|
139
|
+
transaction: (0, ts_common_1.isLevelEnabled)(logger, 'debug') ? transaction : undefined,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (txResponse === undefined) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
if (simulate) {
|
|
147
|
+
return { response: txResponse };
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
return txSignature === undefined
|
|
151
|
+
? undefined
|
|
152
|
+
: {
|
|
153
|
+
response: txResponse,
|
|
154
|
+
signature: txSignature,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
async function updateTransactionBlockhash(transaction, connection, currentBlockhash) {
|
|
160
|
+
if (currentBlockhash === undefined) {
|
|
161
|
+
currentBlockhash = await connection.getLatestBlockhash();
|
|
162
|
+
}
|
|
163
|
+
if (transaction instanceof web3_js_1.VersionedTransaction) {
|
|
164
|
+
transaction.message.recentBlockhash = currentBlockhash.blockhash;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
transaction.lastValidBlockHeight = currentBlockhash.lastValidBlockHeight;
|
|
168
|
+
transaction.recentBlockhash = currentBlockhash.blockhash;
|
|
169
|
+
}
|
|
170
|
+
return transaction;
|
|
171
|
+
}
|
|
172
|
+
async function sendRawTransactionWithRetry(connection, transaction, sendOpts, logger) {
|
|
173
|
+
try {
|
|
174
|
+
return await connection.sendRawTransaction(transaction.serialize(), sendOpts);
|
|
175
|
+
}
|
|
176
|
+
catch (e) {
|
|
177
|
+
if ((0, ts_common_1.checkErrorMessage)(e, 'blockhash not found')) {
|
|
178
|
+
(0, ts_common_1.logDebug)(logger, 'Blockhash not found, retrying to update transaction blockhash, reason: ' +
|
|
179
|
+
String(e));
|
|
180
|
+
await updateTransactionBlockhash(transaction, connection);
|
|
181
|
+
return await connection.sendRawTransaction(transaction.serialize(), sendOpts);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
throw e;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function confirmTransaction(connection, txSig, confirmOpts, logger, confirmWaitTime = 0) {
|
|
189
|
+
const MAX_WAIT_TIME = 10_000;
|
|
190
|
+
let confirmFinality = confirmOpts;
|
|
191
|
+
if (confirmFinality === undefined &&
|
|
192
|
+
(connection.commitment === 'finalized' ||
|
|
193
|
+
connection.commitment === 'confirmed')) {
|
|
194
|
+
confirmFinality = connection.commitment;
|
|
195
|
+
}
|
|
196
|
+
confirmFinality = confirmFinality || 'confirmed';
|
|
197
|
+
const txSearchConnection = new web3_js_1.Connection(connection.rpcEndpoint, {
|
|
198
|
+
commitment: confirmFinality,
|
|
199
|
+
});
|
|
200
|
+
(0, ts_common_1.logDebug)(logger, `Waiting to confirm transaction signature: ${txSig} (timeout ~2 minutes)`);
|
|
201
|
+
let txRes = await txSearchConnection.getTransaction(txSig, {
|
|
202
|
+
commitment: confirmFinality,
|
|
203
|
+
maxSupportedTransactionVersion: 0,
|
|
204
|
+
});
|
|
205
|
+
const confirmBlockhash = await connection.getLatestBlockhash(confirmFinality);
|
|
206
|
+
while (txRes === null &&
|
|
207
|
+
(await connection.isBlockhashValid(confirmBlockhash.blockhash, {
|
|
208
|
+
commitment: confirmFinality,
|
|
209
|
+
})).value) {
|
|
210
|
+
if (confirmWaitTime > 0) {
|
|
211
|
+
confirmWaitTime =
|
|
212
|
+
confirmWaitTime < MAX_WAIT_TIME
|
|
213
|
+
? (confirmWaitTime += 1000)
|
|
214
|
+
: confirmWaitTime;
|
|
215
|
+
await (0, ts_common_1.sleep)(confirmWaitTime);
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
if (confirmWaitTime > 0) {
|
|
219
|
+
(0, ts_common_1.logDebug)(logger, `Checking outcome of transaction '${txSig}'`);
|
|
220
|
+
}
|
|
221
|
+
txRes = await txSearchConnection.getTransaction(txSig, {
|
|
222
|
+
commitment: confirmFinality,
|
|
223
|
+
maxSupportedTransactionVersion: 0,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
if ((0, ts_common_1.checkErrorMessage)(e, 'Too many requests for a specific RPC call')) {
|
|
228
|
+
(0, ts_common_1.logDebug)(logger, `Error confirming transaction '${txSig}': ` + String(e));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (txRes === null) {
|
|
233
|
+
throw new Error(`Transaction ${txSig} not found, failed to get from ${connection.rpcEndpoint}`);
|
|
234
|
+
}
|
|
235
|
+
if (txRes.meta?.err) {
|
|
236
|
+
throw new Error(`Transaction ${txSig} failure, result: ${JSON.stringify(txRes)}`);
|
|
237
|
+
}
|
|
238
|
+
(0, ts_common_1.logDebug)(logger, 'Transaction signature: ' + txSig);
|
|
239
|
+
(0, ts_common_1.logDebug)(logger, txRes.meta?.logMessages);
|
|
240
|
+
return txRes;
|
|
241
|
+
}
|
|
242
|
+
async function executeTxSimple(connection, transaction, signers, sendOpts, confirmOpts) {
|
|
243
|
+
return await executeTx({
|
|
244
|
+
connection,
|
|
245
|
+
transaction,
|
|
246
|
+
signers,
|
|
247
|
+
sendOpts,
|
|
248
|
+
confirmOpts,
|
|
249
|
+
errMessage: 'Error executing transaction',
|
|
250
|
+
simulate: false,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
async function executeTxWithExceededBlockhashRetry(txParams) {
|
|
254
|
+
try {
|
|
255
|
+
return await executeTx(txParams);
|
|
256
|
+
}
|
|
257
|
+
catch (e) {
|
|
258
|
+
const txSig = e instanceof error_1.ExecutionError && e.txSignature !== undefined
|
|
259
|
+
? `${e.txSignature} `
|
|
260
|
+
: '';
|
|
261
|
+
if ((0, ts_common_1.checkErrorMessage)(e, 'block height exceeded')) {
|
|
262
|
+
(0, ts_common_1.logDebug)(txParams.logger, `Failed to execute transaction ${txSig}` +
|
|
263
|
+
'due to block height exceeded, retrying, ' +
|
|
264
|
+
'original error: ' +
|
|
265
|
+
String(e));
|
|
266
|
+
txParams.transaction.recentBlockhash = undefined;
|
|
267
|
+
return await executeTx(txParams);
|
|
268
|
+
}
|
|
269
|
+
if ((0, ts_common_1.checkErrorMessage)(e, 'Too many requests')) {
|
|
270
|
+
(0, ts_common_1.logDebug)(txParams.logger, `Failed to execute transaction ${txSig}` +
|
|
271
|
+
'due too many requests on RPC, retrying, ' +
|
|
272
|
+
'original error: ' +
|
|
273
|
+
String(e));
|
|
274
|
+
txParams.transaction.recentBlockhash = undefined;
|
|
275
|
+
await (0, ts_common_1.sleep)(3_000);
|
|
276
|
+
return await executeTx(txParams);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
(0, ts_common_1.logDebug)(txParams.logger, 'Failed transaction execution', e.message);
|
|
280
|
+
throw e;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function isSimulatedTransactionResponse(response) {
|
|
285
|
+
if (response === undefined) {
|
|
286
|
+
throw new Error('internal error: response is undefined, this is not expected for the type guard function');
|
|
287
|
+
}
|
|
288
|
+
return ('err' in response &&
|
|
289
|
+
'logs' in response &&
|
|
290
|
+
'accounts' in response &&
|
|
291
|
+
'unitsConsumed' in response &&
|
|
292
|
+
'returnData' in response);
|
|
293
|
+
}
|
|
294
|
+
function isVersionedTransaction(transaction) {
|
|
295
|
+
return 'version' in transaction;
|
|
296
|
+
}
|
|
297
|
+
function filterSignersForInstruction(instructions, signers, feePayer) {
|
|
298
|
+
const signersRequired = instructions.flatMap(ix => ix.keys.filter(k => k.isSigner).map(k => k.pubkey));
|
|
299
|
+
if (feePayer !== undefined) {
|
|
300
|
+
signersRequired.push(feePayer);
|
|
301
|
+
}
|
|
302
|
+
return signers.filter(s => signersRequired.find(rs => rs.equals(s.publicKey)));
|
|
303
|
+
}
|
|
304
|
+
function getNewTransaction(feePayer, bh) {
|
|
305
|
+
return new web3_js_1.Transaction({
|
|
306
|
+
feePayer,
|
|
307
|
+
blockhash: bh.blockhash,
|
|
308
|
+
lastValidBlockHeight: bh.lastValidBlockHeight,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
function addComputeBudgetIxes({ transaction, computeUnitLimit, computeUnitPrice, }) {
|
|
312
|
+
if (computeUnitLimit !== undefined && computeUnitLimit >= 0) {
|
|
313
|
+
transaction.add(setComputeUnitLimitIx(computeUnitLimit));
|
|
314
|
+
}
|
|
315
|
+
if (computeUnitPrice !== undefined && computeUnitPrice > 0) {
|
|
316
|
+
transaction.add(setComputeUnitPriceIx(computeUnitPrice));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
function setComputeUnitLimitIx(units) {
|
|
320
|
+
return web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units });
|
|
321
|
+
}
|
|
322
|
+
function setComputeUnitPriceIx(microLamports) {
|
|
323
|
+
return web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({ microLamports });
|
|
324
|
+
}
|
|
325
|
+
class TransactionInstructionSplitMarkerStart extends web3_js_1.TransactionInstruction {
|
|
326
|
+
constructor() {
|
|
327
|
+
const config = {
|
|
328
|
+
keys: [],
|
|
329
|
+
programId: web3_js_1.PublicKey.default,
|
|
330
|
+
data: Buffer.alloc(0),
|
|
331
|
+
};
|
|
332
|
+
super(config);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
exports.TransactionInstructionSplitMarkerStart = TransactionInstructionSplitMarkerStart;
|
|
336
|
+
class TransactionInstructionSplitMarkerEnd extends web3_js_1.TransactionInstruction {
|
|
337
|
+
constructor() {
|
|
338
|
+
const config = {
|
|
339
|
+
keys: [],
|
|
340
|
+
programId: web3_js_1.PublicKey.default,
|
|
341
|
+
data: Buffer.alloc(0),
|
|
342
|
+
};
|
|
343
|
+
super(config);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
exports.TransactionInstructionSplitMarkerEnd = TransactionInstructionSplitMarkerEnd;
|
|
347
|
+
exports.SPLIT_MARKER_START_INSTANCE = new TransactionInstructionSplitMarkerStart();
|
|
348
|
+
exports.SPLIT_MARKER_END_INSTANCE = new TransactionInstructionSplitMarkerEnd();
|
|
349
|
+
function isSplitMarkerInstruction(ix) {
|
|
350
|
+
if (ix === undefined) {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
return (ix instanceof TransactionInstructionSplitMarkerStart ||
|
|
354
|
+
ix instanceof TransactionInstructionSplitMarkerEnd);
|
|
355
|
+
}
|
|
356
|
+
async function splitAndExecuteTx({ connection, transaction, errMessage, signers = [], feePayer, simulate = false, printOnly = false, logger, sendOpts = {}, confirmOpts, computeUnitLimit, computeUnitPrice, }) {
|
|
357
|
+
const result = [];
|
|
358
|
+
const realInstructionNumber = transaction.instructions.filter(ix => !isSplitMarkerInstruction(ix)).length;
|
|
359
|
+
if (realInstructionNumber === 0) {
|
|
360
|
+
return result;
|
|
361
|
+
}
|
|
362
|
+
if (!simulate && printOnly) {
|
|
363
|
+
transaction.instructions = transaction.instructions.filter(ix => !isSplitMarkerInstruction(ix));
|
|
364
|
+
await executeTx({
|
|
365
|
+
connection,
|
|
366
|
+
transaction,
|
|
367
|
+
errMessage,
|
|
368
|
+
signers,
|
|
369
|
+
logger,
|
|
370
|
+
simulate,
|
|
371
|
+
printOnly,
|
|
372
|
+
sendOpts,
|
|
373
|
+
confirmOpts,
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
feePayer = feePayer || transaction.feePayer;
|
|
378
|
+
if (feePayer === undefined && (0, provider_1.instanceOfProviderWithWallet)(connection)) {
|
|
379
|
+
feePayer = connection.wallet.publicKey;
|
|
380
|
+
signers.push(connection.wallet);
|
|
381
|
+
}
|
|
382
|
+
if (feePayer === undefined) {
|
|
383
|
+
throw new Error('splitAndExecuteTx: transaction fee payer has to be defined, either in transaction or argument');
|
|
384
|
+
}
|
|
385
|
+
connection = (0, provider_1.instanceOfProvider)(connection)
|
|
386
|
+
? connection.connection
|
|
387
|
+
: connection;
|
|
388
|
+
const uniqueSigners = new Map();
|
|
389
|
+
for (const signer of signers) {
|
|
390
|
+
uniqueSigners.set(signer.publicKey.toBase58(), signer);
|
|
391
|
+
}
|
|
392
|
+
signers = Array.from(uniqueSigners.values());
|
|
393
|
+
const feePayerDefined = feePayer;
|
|
394
|
+
const feePayerSigner = uniqueSigners.get(feePayerDefined.toBase58());
|
|
395
|
+
if (feePayerSigner === undefined) {
|
|
396
|
+
throw new Error('splitAndExecuteTx: transaction fee payer ' +
|
|
397
|
+
feePayerDefined.toBase58() +
|
|
398
|
+
' has to be defined amongst signers');
|
|
399
|
+
}
|
|
400
|
+
const transactions = [];
|
|
401
|
+
let blockhash;
|
|
402
|
+
if (transaction.recentBlockhash === undefined ||
|
|
403
|
+
transaction.lastValidBlockHeight === undefined) {
|
|
404
|
+
blockhash = await connection.getLatestBlockhash();
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
blockhash = {
|
|
408
|
+
blockhash: transaction.recentBlockhash,
|
|
409
|
+
lastValidBlockHeight: transaction.lastValidBlockHeight,
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
let lastValidTransaction = generateNewTransaction({
|
|
413
|
+
feePayer: feePayerDefined,
|
|
414
|
+
bh: blockhash,
|
|
415
|
+
computeUnitLimit,
|
|
416
|
+
computeUnitPrice,
|
|
417
|
+
});
|
|
418
|
+
let transactionStartIndex = 0;
|
|
419
|
+
let splitMarkerStartIdx = Number.MAX_SAFE_INTEGER;
|
|
420
|
+
for (let i = 0; i < transaction.instructions.length; i++) {
|
|
421
|
+
const ix = transaction.instructions[i];
|
|
422
|
+
if (ix instanceof TransactionInstructionSplitMarkerStart) {
|
|
423
|
+
splitMarkerStartIdx = i;
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
if (ix instanceof TransactionInstructionSplitMarkerEnd) {
|
|
427
|
+
splitMarkerStartIdx = Number.MAX_SAFE_INTEGER;
|
|
428
|
+
continue;
|
|
429
|
+
}
|
|
430
|
+
(0, assert_1.default)(ix !== undefined, 'Instruction cannot be undefined');
|
|
431
|
+
lastValidTransaction.add(ix);
|
|
432
|
+
const filteredSigners = filterSignersForInstruction(lastValidTransaction.instructions, signers, feePayerDefined);
|
|
433
|
+
const signaturesSize = filteredSigners.length * 64;
|
|
434
|
+
let txSize = undefined;
|
|
435
|
+
try {
|
|
436
|
+
txSize = lastValidTransaction.serialize({
|
|
437
|
+
verifySignatures: false,
|
|
438
|
+
requireAllSignatures: false,
|
|
439
|
+
}).byteLength;
|
|
440
|
+
}
|
|
441
|
+
catch (_e) {
|
|
442
|
+
}
|
|
443
|
+
if (txSize === undefined ||
|
|
444
|
+
txSize + signaturesSize > exports.TRANSACTION_SAFE_SIZE) {
|
|
445
|
+
const transactionAdd = generateNewTransaction({
|
|
446
|
+
feePayer: feePayerDefined,
|
|
447
|
+
bh: blockhash,
|
|
448
|
+
computeUnitLimit,
|
|
449
|
+
computeUnitPrice,
|
|
450
|
+
});
|
|
451
|
+
let addIdx;
|
|
452
|
+
for (addIdx = transactionStartIndex; addIdx < i && addIdx <= splitMarkerStartIdx; addIdx++) {
|
|
453
|
+
if (isSplitMarkerInstruction(transaction.instructions[addIdx])) {
|
|
454
|
+
continue;
|
|
455
|
+
}
|
|
456
|
+
const instructionAdd = transaction.instructions[addIdx];
|
|
457
|
+
(0, assert_1.default)(instructionAdd !== undefined, 'Instruction add cannot be undefined');
|
|
458
|
+
transactionAdd.add(instructionAdd);
|
|
459
|
+
}
|
|
460
|
+
if (transactionAdd.instructions.length === 0) {
|
|
461
|
+
(0, ts_common_1.logError)(logger, `Working with instructions number: ${transaction.instructions.length}, ` +
|
|
462
|
+
`current instruction index: ${i}, last split marker index: ${splitMarkerStartIdx}` +
|
|
463
|
+
` and transaction start index: ${transactionStartIndex}, last valid transaction: ${JSON.stringify(lastValidTransaction)}`);
|
|
464
|
+
throw new Error('splitAndExecuteTx: no instructions to be added to the transaction, ' +
|
|
465
|
+
'most probably the transaction contains split markers ' +
|
|
466
|
+
TransactionInstructionSplitMarkerStart.name +
|
|
467
|
+
' at indexes that the instructions cannot be split to executable chunks.');
|
|
468
|
+
}
|
|
469
|
+
transactions.push(transactionAdd);
|
|
470
|
+
i = addIdx - 1;
|
|
471
|
+
transactionStartIndex = addIdx;
|
|
472
|
+
lastValidTransaction = generateNewTransaction({
|
|
473
|
+
feePayer: feePayerDefined,
|
|
474
|
+
bh: blockhash,
|
|
475
|
+
computeUnitLimit,
|
|
476
|
+
computeUnitPrice,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
if (lastValidTransaction.instructions.length !== 0) {
|
|
481
|
+
transactions.push(lastValidTransaction);
|
|
482
|
+
}
|
|
483
|
+
let executionCounter = 0;
|
|
484
|
+
let priorTransaction = undefined;
|
|
485
|
+
for (const transaction of transactions) {
|
|
486
|
+
transaction.recentBlockhash = priorTransaction?.recentBlockhash;
|
|
487
|
+
transaction.lastValidBlockHeight = priorTransaction?.lastValidBlockHeight;
|
|
488
|
+
const txSigners = filterSignersForInstruction(transaction.instructions, signers).filter(s => !s.publicKey.equals(feePayerDefined));
|
|
489
|
+
txSigners.push(feePayerSigner);
|
|
490
|
+
const executeResult = await executeTxWithExceededBlockhashRetry({
|
|
491
|
+
connection,
|
|
492
|
+
transaction,
|
|
493
|
+
errMessage,
|
|
494
|
+
signers: txSigners,
|
|
495
|
+
simulate,
|
|
496
|
+
logger,
|
|
497
|
+
sendOpts,
|
|
498
|
+
});
|
|
499
|
+
executionCounter++;
|
|
500
|
+
priorTransaction = transaction;
|
|
501
|
+
(0, ts_common_1.logDebug)(logger, `Transaction [${executeResult && 'signature' in executeResult
|
|
502
|
+
? executeResult?.signature
|
|
503
|
+
: undefined}] ` +
|
|
504
|
+
`${executionCounter}(${transaction.instructions.length} ixes)/${transactions.length} ` +
|
|
505
|
+
(simulate ? 'simulated' : 'executed'));
|
|
506
|
+
if (executeResult !== undefined) {
|
|
507
|
+
result.push({
|
|
508
|
+
...executeResult,
|
|
509
|
+
transaction,
|
|
510
|
+
instructions: transaction.instructions,
|
|
511
|
+
signers: txSigners,
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
return result;
|
|
517
|
+
}
|
|
518
|
+
function generateNewTransaction({ feePayer, bh, computeUnitLimit, computeUnitPrice, }) {
|
|
519
|
+
const transaction = getNewTransaction(feePayer, bh);
|
|
520
|
+
addComputeBudgetIxes({
|
|
521
|
+
transaction,
|
|
522
|
+
computeUnitLimit,
|
|
523
|
+
computeUnitPrice,
|
|
524
|
+
});
|
|
525
|
+
return transaction;
|
|
526
|
+
}
|
|
527
|
+
function debugStr(transaction) {
|
|
528
|
+
return [
|
|
529
|
+
'=> Instructions',
|
|
530
|
+
transaction.instructions
|
|
531
|
+
.map((ser, i) => {
|
|
532
|
+
return [
|
|
533
|
+
`Instruction ${i}: ${ser.programId.toString()}`,
|
|
534
|
+
...ser.keys.map((k, i) => ` [${i}] ${k.pubkey.toString()} ${k.isWritable ? '(mut)' : ''} ${k.isSigner ? '(signer)' : ''}`),
|
|
535
|
+
` Data (base64): ${ser.data.toString('base64')}`,
|
|
536
|
+
].join('\n');
|
|
537
|
+
})
|
|
538
|
+
.join('\n'),
|
|
539
|
+
'=> Signers',
|
|
540
|
+
transaction.signatures.map(sg => sg.publicKey.toString()).join('\n'),
|
|
541
|
+
].join('\n');
|
|
542
|
+
}
|
|
543
|
+
//# sourceMappingURL=tx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../../src/tx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { VersionedTransaction } from '@solana/web3.js';
|
|
2
|
+
import type { ExecuteTxParams, ExecuteTxReturnSimulated, TransactionData } from './tx';
|
|
3
|
+
import type { Transaction, VersionedTransactionResponse } from '@solana/web3.js';
|
|
4
|
+
export type ExecuteTxReturnExecutedUnknown = {
|
|
5
|
+
signature?: string;
|
|
6
|
+
response?: VersionedTransactionResponse;
|
|
7
|
+
};
|
|
8
|
+
export type BulkExecuteTxInput = ExecuteTxParams & {
|
|
9
|
+
numberOfRetries?: number;
|
|
10
|
+
};
|
|
11
|
+
export type BulkExecuteTxSimulatedReturn = TransactionData<Transaction> & ExecuteTxReturnSimulated;
|
|
12
|
+
export type BulkExecuteTxExecutedReturn = TransactionData<VersionedTransaction> & ExecuteTxReturnExecutedUnknown & {
|
|
13
|
+
confirmationError?: Error;
|
|
14
|
+
};
|
|
15
|
+
export declare function splitAndBulkExecuteTx(args: Omit<BulkExecuteTxInput, 'simulate'> & {
|
|
16
|
+
simulate: true;
|
|
17
|
+
}): Promise<BulkExecuteTxSimulatedReturn[]>;
|
|
18
|
+
export declare function splitAndBulkExecuteTx(args: Omit<BulkExecuteTxInput, 'simulate' | 'printOnly'> & {
|
|
19
|
+
simulate: true;
|
|
20
|
+
}): Promise<BulkExecuteTxSimulatedReturn[]>;
|
|
21
|
+
export declare function splitAndBulkExecuteTx(args: Omit<BulkExecuteTxInput, 'simulate' | 'printOnly'> & {
|
|
22
|
+
simulate?: false;
|
|
23
|
+
printOnly?: false;
|
|
24
|
+
}): Promise<BulkExecuteTxExecutedReturn[]>;
|
|
25
|
+
export declare function splitAndBulkExecuteTx(args: BulkExecuteTxInput): Promise<BulkExecuteTxExecutedReturn[]>;
|
|
26
|
+
export declare function splitAndBulkExecuteTx(args: Omit<BulkExecuteTxInput, 'simulate' | 'printOnly'> & {
|
|
27
|
+
simulate?: false;
|
|
28
|
+
printOnly: true;
|
|
29
|
+
}): Promise<[]>;
|
|
30
|
+
//# sourceMappingURL=txBulk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txBulk.d.ts","sourceRoot":"","sources":["../../src/txBulk.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAW1E,OAAO,KAAK,EACV,eAAe,EACf,wBAAwB,EACxB,eAAe,EAChB,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAMV,WAAW,EACX,4BAA4B,EAC7B,MAAM,iBAAiB,CAAA;AAExB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,4BAA4B,CAAA;CACxC,CAAA;AACD,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAC/E,MAAM,MAAM,4BAA4B,GAAG,eAAe,CAAC,WAAW,CAAC,GACrE,wBAAwB,CAAA;AAC1B,MAAM,MAAM,2BAA2B,GACrC,eAAe,CAAC,oBAAoB,CAAC,GACnC,8BAA8B,GAAG;IAAE,iBAAiB,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAElE,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAC9D,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAAA;AAC1C,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,WAAW,CAAC,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAC5E,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAAA;AAC1C,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,WAAW,CAAC,GAAG;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,SAAS,CAAC,EAAE,KAAK,CAAA;CAClB,GACA,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAA;AACzC,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAA;AACzC,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,WAAW,CAAC,GAAG;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;CAChB,GACA,OAAO,CAAC,EAAE,CAAC,CAAA"}
|