@chainlink/ccip-sdk 0.90.2 → 0.91.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 +35 -26
- package/dist/aptos/exec.d.ts +4 -5
- package/dist/aptos/exec.d.ts.map +1 -1
- package/dist/aptos/exec.js +5 -14
- package/dist/aptos/exec.js.map +1 -1
- package/dist/aptos/hasher.d.ts +18 -0
- package/dist/aptos/hasher.d.ts.map +1 -1
- package/dist/aptos/hasher.js +18 -0
- package/dist/aptos/hasher.js.map +1 -1
- package/dist/aptos/index.d.ts +127 -28
- package/dist/aptos/index.d.ts.map +1 -1
- package/dist/aptos/index.js +199 -70
- package/dist/aptos/index.js.map +1 -1
- package/dist/aptos/logs.d.ts +18 -0
- package/dist/aptos/logs.d.ts.map +1 -1
- package/dist/aptos/logs.js +21 -3
- package/dist/aptos/logs.js.map +1 -1
- package/dist/aptos/send.d.ts +22 -5
- package/dist/aptos/send.d.ts.map +1 -1
- package/dist/aptos/send.js +23 -15
- package/dist/aptos/send.js.map +1 -1
- package/dist/aptos/token.d.ts +6 -0
- package/dist/aptos/token.d.ts.map +1 -1
- package/dist/aptos/token.js +6 -0
- package/dist/aptos/token.js.map +1 -1
- package/dist/aptos/types.d.ts +16 -1
- package/dist/aptos/types.d.ts.map +1 -1
- package/dist/aptos/types.js +13 -0
- package/dist/aptos/types.js.map +1 -1
- package/dist/aptos/utils.d.ts +1 -1
- package/dist/aptos/utils.js +1 -1
- package/dist/chain.d.ts +185 -99
- package/dist/chain.d.ts.map +1 -1
- package/dist/chain.js +38 -15
- package/dist/chain.js.map +1 -1
- package/dist/commits.d.ts +4 -10
- package/dist/commits.d.ts.map +1 -1
- package/dist/commits.js +2 -1
- package/dist/commits.js.map +1 -1
- package/dist/evm/const.d.ts +5 -0
- package/dist/evm/const.d.ts.map +1 -1
- package/dist/evm/const.js +5 -0
- package/dist/evm/const.js.map +1 -1
- package/dist/evm/errors.d.ts +5 -0
- package/dist/evm/errors.d.ts.map +1 -1
- package/dist/evm/errors.js +6 -1
- package/dist/evm/errors.js.map +1 -1
- package/dist/evm/hasher.d.ts +16 -2
- package/dist/evm/hasher.d.ts.map +1 -1
- package/dist/evm/hasher.js +17 -3
- package/dist/evm/hasher.js.map +1 -1
- package/dist/evm/index.d.ts +176 -31
- package/dist/evm/index.d.ts.map +1 -1
- package/dist/evm/index.js +312 -154
- package/dist/evm/index.js.map +1 -1
- package/dist/evm/logs.d.ts +20 -0
- package/dist/evm/logs.d.ts.map +1 -0
- package/dist/evm/logs.js +194 -0
- package/dist/evm/logs.js.map +1 -0
- package/dist/evm/messages.d.ts +11 -2
- package/dist/evm/messages.d.ts.map +1 -1
- package/dist/evm/messages.js +4 -2
- package/dist/evm/messages.js.map +1 -1
- package/dist/evm/offchain.d.ts +7 -2
- package/dist/evm/offchain.d.ts.map +1 -1
- package/dist/evm/offchain.js +12 -7
- package/dist/evm/offchain.js.map +1 -1
- package/dist/execution.d.ts +19 -62
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +28 -31
- package/dist/execution.js.map +1 -1
- package/dist/extra-args.d.ts +35 -5
- package/dist/extra-args.d.ts.map +1 -1
- package/dist/extra-args.js +10 -5
- package/dist/extra-args.js.map +1 -1
- package/dist/gas.d.ts +6 -8
- package/dist/gas.d.ts.map +1 -1
- package/dist/gas.js +7 -9
- package/dist/gas.js.map +1 -1
- package/dist/hasher/common.d.ts +3 -2
- package/dist/hasher/common.d.ts.map +1 -1
- package/dist/hasher/common.js +2 -2
- package/dist/hasher/common.js.map +1 -1
- package/dist/hasher/hasher.d.ts +8 -2
- package/dist/hasher/hasher.d.ts.map +1 -1
- package/dist/hasher/hasher.js +8 -3
- package/dist/hasher/hasher.js.map +1 -1
- package/dist/hasher/merklemulti.d.ts +11 -9
- package/dist/hasher/merklemulti.d.ts.map +1 -1
- package/dist/hasher/merklemulti.js +17 -16
- package/dist/hasher/merklemulti.js.map +1 -1
- package/dist/index.d.ts +16 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/requests.d.ts +39 -25
- package/dist/requests.d.ts.map +1 -1
- package/dist/requests.js +42 -35
- package/dist/requests.js.map +1 -1
- package/dist/selectors.d.ts +1 -1
- package/dist/solana/cleanup.d.ts +14 -10
- package/dist/solana/cleanup.d.ts.map +1 -1
- package/dist/solana/cleanup.js +35 -33
- package/dist/solana/cleanup.js.map +1 -1
- package/dist/solana/exec.d.ts +19 -11
- package/dist/solana/exec.d.ts.map +1 -1
- package/dist/solana/exec.js +86 -163
- package/dist/solana/exec.js.map +1 -1
- package/dist/solana/hasher.d.ts +7 -2
- package/dist/solana/hasher.d.ts.map +1 -1
- package/dist/solana/hasher.js +7 -2
- package/dist/solana/hasher.js.map +1 -1
- package/dist/solana/index.d.ts +202 -84
- package/dist/solana/index.d.ts.map +1 -1
- package/dist/solana/index.js +367 -252
- package/dist/solana/index.js.map +1 -1
- package/dist/solana/offchain.d.ts +8 -18
- package/dist/solana/offchain.d.ts.map +1 -1
- package/dist/solana/offchain.js +29 -83
- package/dist/solana/offchain.js.map +1 -1
- package/dist/solana/patchBorsh.d.ts +5 -1
- package/dist/solana/patchBorsh.d.ts.map +1 -1
- package/dist/solana/patchBorsh.js +57 -46
- package/dist/solana/patchBorsh.js.map +1 -1
- package/dist/solana/send.d.ts +28 -10
- package/dist/solana/send.d.ts.map +1 -1
- package/dist/solana/send.js +44 -77
- package/dist/solana/send.js.map +1 -1
- package/dist/solana/types.d.ts +22 -1
- package/dist/solana/types.d.ts.map +1 -1
- package/dist/solana/types.js +12 -1
- package/dist/solana/types.js.map +1 -1
- package/dist/solana/utils.d.ts +58 -4
- package/dist/solana/utils.d.ts.map +1 -1
- package/dist/solana/utils.js +110 -7
- package/dist/solana/utils.js.map +1 -1
- package/dist/sui/hasher.d.ts +18 -0
- package/dist/sui/hasher.d.ts.map +1 -1
- package/dist/sui/hasher.js +18 -0
- package/dist/sui/hasher.js.map +1 -1
- package/dist/sui/index.d.ts +99 -12
- package/dist/sui/index.d.ts.map +1 -1
- package/dist/sui/index.js +108 -19
- package/dist/sui/index.js.map +1 -1
- package/dist/sui/types.d.ts +6 -0
- package/dist/sui/types.d.ts.map +1 -1
- package/dist/sui/types.js +5 -0
- package/dist/sui/types.js.map +1 -1
- package/dist/supported-chains.d.ts +2 -1
- package/dist/supported-chains.d.ts.map +1 -1
- package/dist/supported-chains.js.map +1 -1
- package/dist/types.d.ts +127 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +67 -46
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +143 -21
- package/dist/utils.js.map +1 -1
- package/package.json +13 -9
- package/src/aptos/exec.ts +7 -18
- package/src/aptos/hasher.ts +18 -0
- package/src/aptos/index.ts +288 -110
- package/src/aptos/logs.ts +21 -3
- package/src/aptos/send.ts +25 -22
- package/src/aptos/token.ts +6 -0
- package/src/aptos/types.ts +26 -2
- package/src/aptos/utils.ts +1 -1
- package/src/chain.ts +243 -108
- package/src/commits.ts +6 -7
- package/src/evm/const.ts +5 -0
- package/src/evm/errors.ts +6 -1
- package/src/evm/hasher.ts +20 -4
- package/src/evm/index.ts +416 -214
- package/src/evm/logs.ts +255 -0
- package/src/evm/messages.ts +11 -5
- package/src/evm/offchain.ts +13 -4
- package/src/execution.ts +40 -32
- package/src/extra-args.ts +38 -6
- package/src/gas.ts +7 -9
- package/src/hasher/common.ts +3 -2
- package/src/hasher/hasher.ts +12 -4
- package/src/hasher/merklemulti.ts +17 -16
- package/src/index.ts +29 -23
- package/src/requests.ts +64 -46
- package/src/selectors.ts +1 -1
- package/src/solana/cleanup.ts +49 -34
- package/src/solana/exec.ts +128 -272
- package/src/solana/hasher.ts +13 -4
- package/src/solana/index.ts +483 -356
- package/src/solana/offchain.ts +32 -102
- package/src/solana/patchBorsh.ts +65 -50
- package/src/solana/send.ts +52 -111
- package/src/solana/types.ts +44 -3
- package/src/solana/utils.ts +143 -19
- package/src/sui/hasher.ts +18 -0
- package/src/sui/index.ts +143 -31
- package/src/sui/types.ts +6 -0
- package/src/supported-chains.ts +2 -1
- package/src/types.ts +130 -18
- package/src/utils.ts +168 -26
- package/tsconfig.json +2 -1
package/dist/solana/send.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
2
|
import { Program } from '@coral-xyz/anchor';
|
|
3
3
|
import { NATIVE_MINT, createApproveInstruction, getAccount, getAssociatedTokenAddressSync, } from '@solana/spl-token';
|
|
4
|
-
import {
|
|
4
|
+
import { PublicKey, } from '@solana/web3.js';
|
|
5
5
|
import BN from 'bn.js';
|
|
6
6
|
import { zeroPadValue } from 'ethers';
|
|
7
7
|
import { SolanaChain } from "./index.js";
|
|
8
|
-
import {
|
|
8
|
+
import { ChainFamily } from "../types.js";
|
|
9
|
+
import { toLeArray, util } from "../utils.js";
|
|
9
10
|
import { IDL as CCIP_ROUTER_IDL } from "./idl/1.6.0/CCIP_ROUTER.js";
|
|
10
|
-
import { bytesToBuffer,
|
|
11
|
+
import { bytesToBuffer, simulationProvider } from "./utils.js";
|
|
11
12
|
function anyToSvmMessage(message) {
|
|
12
13
|
const feeTokenPubkey = message.feeToken ? new PublicKey(message.feeToken) : PublicKey.default;
|
|
13
14
|
const svmMessage = {
|
|
@@ -27,8 +28,17 @@ function anyToSvmMessage(message) {
|
|
|
27
28
|
};
|
|
28
29
|
return svmMessage;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Gets the fee for sending a CCIP message on Solana.
|
|
33
|
+
* @param ctx - Context object containing the Solana connection and logger.
|
|
34
|
+
* @param router - Router program address.
|
|
35
|
+
* @param destChainSelector - Destination chain selector.
|
|
36
|
+
* @param message - CCIP message to send.
|
|
37
|
+
* @returns Fee amount in native tokens.
|
|
38
|
+
*/
|
|
39
|
+
export async function getFee(ctx, router, destChainSelector, message) {
|
|
40
|
+
const { connection, logger = console } = ctx;
|
|
41
|
+
const program = new Program(CCIP_ROUTER_IDL, new PublicKey(router), simulationProvider(ctx));
|
|
32
42
|
// Get router config to find feeQuoter
|
|
33
43
|
const [configPda] = PublicKey.findProgramAddressSync([Buffer.from('config')], program.programId);
|
|
34
44
|
const configAccount = await connection.getAccountInfo(configPda);
|
|
@@ -42,7 +52,7 @@ export async function getFee(connection, router, destChainSelector, message) {
|
|
|
42
52
|
if (message.feeToken &&
|
|
43
53
|
message.feeToken !== PublicKey.default.toBase58() &&
|
|
44
54
|
message.feeToken !== linkTokenMint.toBase58()) {
|
|
45
|
-
|
|
55
|
+
logger.warn('feeToken is not default nor link =', linkTokenMint.toBase58());
|
|
46
56
|
}
|
|
47
57
|
// Convert feeToken to PublicKey (default to native SOL if not specified)
|
|
48
58
|
const feeTokenPubkey = message.feeToken && message.feeToken !== PublicKey.default.toBase58()
|
|
@@ -66,7 +76,7 @@ export async function getFee(connection, router, destChainSelector, message) {
|
|
|
66
76
|
.flat()
|
|
67
77
|
.map((pubkey) => ({ pubkey, isWritable: false, isSigner: false }));
|
|
68
78
|
// Call getFee method
|
|
69
|
-
const result = await program.methods
|
|
79
|
+
const result = (await program.methods
|
|
70
80
|
.getFee(new BN(destChainSelector), svmMessage)
|
|
71
81
|
.accounts({
|
|
72
82
|
config: configPda,
|
|
@@ -78,7 +88,7 @@ export async function getFee(connection, router, destChainSelector, message) {
|
|
|
78
88
|
feeQuoterLinkTokenConfig: feeQuoterLinkTokenConfigPda,
|
|
79
89
|
})
|
|
80
90
|
.remainingAccounts(remainingAccounts)
|
|
81
|
-
.view();
|
|
91
|
+
.view());
|
|
82
92
|
if (!result?.amount) {
|
|
83
93
|
throw new Error(`Invalid fee result from router: ${util.inspect(result)}`);
|
|
84
94
|
}
|
|
@@ -93,11 +103,9 @@ async function deriveAccountsCcipSend({ router, destChainSelector, message, send
|
|
|
93
103
|
let stage = 'Start';
|
|
94
104
|
let tokenIndex = 0;
|
|
95
105
|
const [configPDA] = PublicKey.findProgramAddressSync([Buffer.from('config')], router.programId);
|
|
96
|
-
// read-only copy of router which avoids signing every simulation
|
|
97
|
-
const roProgram = new Program(router.idl, router.programId, simulationProvider(connection, sender));
|
|
98
106
|
do {
|
|
99
107
|
// Create the transaction instruction for the deriveAccountsCcipSend method
|
|
100
|
-
const response = (await
|
|
108
|
+
const response = (await router.methods
|
|
101
109
|
.deriveAccountsCcipSend({
|
|
102
110
|
destChainSelector: new BN(destChainSelector.toString()),
|
|
103
111
|
ccipSendCaller: sender,
|
|
@@ -148,67 +156,36 @@ async function deriveAccountsCcipSend({ router, destChainSelector, message, send
|
|
|
148
156
|
tokenIndexes: Buffer.from(tokenIndices),
|
|
149
157
|
};
|
|
150
158
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
payerKey: feePayer.publicKey,
|
|
163
|
-
recentBlockhash: (await connection.getLatestBlockhash('confirmed')).blockhash,
|
|
164
|
-
instructions: [
|
|
165
|
-
...(computeUnitLimit
|
|
166
|
-
? [ComputeBudgetProgram.setComputeUnitLimit({ units: computeUnitLimit })]
|
|
167
|
-
: []),
|
|
168
|
-
...instructions,
|
|
169
|
-
],
|
|
170
|
-
});
|
|
171
|
-
const messageV0 = txMsg.compileToV0Message(addressLookupTableAccounts);
|
|
172
|
-
const tx = new VersionedTransaction(messageV0);
|
|
173
|
-
const signed = await feePayer.signTransaction(tx);
|
|
174
|
-
let hash;
|
|
175
|
-
for (let attempt = 0;; attempt++) {
|
|
176
|
-
try {
|
|
177
|
-
hash = await connection.sendTransaction(signed);
|
|
178
|
-
await connection.confirmTransaction(hash, 'confirmed');
|
|
179
|
-
return hash;
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
if (attempt >= 3)
|
|
183
|
-
throw error;
|
|
184
|
-
console.error(`sendTransaction failed attempt=${attempt + 1}/3:`, error);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
export async function ccipSend(router, destChainSelector, message, opts) {
|
|
189
|
-
const connection = router.provider.connection;
|
|
190
|
-
let wallet;
|
|
191
|
-
if (!(wallet = router.provider.wallet)) {
|
|
192
|
-
throw new Error('ccipSend called without signer wallet');
|
|
193
|
-
}
|
|
159
|
+
/**
|
|
160
|
+
* Generates unsigned instructions for sending a message with CCIP on Solana
|
|
161
|
+
* @param ctx - Context containing connection and logger.
|
|
162
|
+
* @param sender - Wallet to pay transaction fees.
|
|
163
|
+
* @param router - Router program instance.
|
|
164
|
+
* @param destChainSelector - Destination chain selector.
|
|
165
|
+
* @param message - CCIP message with fee.
|
|
166
|
+
* @param opts - Optional parameters for approval.
|
|
167
|
+
* @returns Solana unsigned txs (instructions and lookup tables)
|
|
168
|
+
*/
|
|
169
|
+
export async function generateUnsignedCcipSend(ctx, sender, router, destChainSelector, message, opts) {
|
|
194
170
|
const amountsToApprove = (message.tokenAmounts ?? []).reduce((acc, { token, amount }) => ({ ...acc, [token]: (acc[token] ?? 0n) + amount }), {});
|
|
195
171
|
if (message.feeToken && message.feeToken !== PublicKey.default.toBase58()) {
|
|
196
172
|
amountsToApprove[message.feeToken] = (amountsToApprove[message.feeToken] ?? 0n) + message.fee;
|
|
197
173
|
}
|
|
174
|
+
const program = new Program(CCIP_ROUTER_IDL, router, simulationProvider(ctx, sender));
|
|
198
175
|
const approveIxs = [];
|
|
199
176
|
for (const [token, amount] of Object.entries(amountsToApprove)) {
|
|
200
|
-
const approveIx = await approveRouterSpender(
|
|
177
|
+
const approveIx = await approveRouterSpender(ctx, sender, new PublicKey(token), router, opts?.approveMax ? undefined : amount);
|
|
201
178
|
if (approveIx)
|
|
202
179
|
approveIxs.push(approveIx);
|
|
203
180
|
}
|
|
204
181
|
const svmMessage = anyToSvmMessage(message);
|
|
205
182
|
const { addressLookupTableAccounts, accounts, tokenIndexes } = await deriveAccountsCcipSend({
|
|
206
|
-
router,
|
|
183
|
+
router: program,
|
|
207
184
|
destChainSelector,
|
|
208
|
-
sender
|
|
185
|
+
sender,
|
|
209
186
|
message: svmMessage,
|
|
210
187
|
});
|
|
211
|
-
const sendIx = await
|
|
188
|
+
const sendIx = await program.methods
|
|
212
189
|
.ccipSend(new BN(destChainSelector), svmMessage, tokenIndexes)
|
|
213
190
|
.accountsStrict({
|
|
214
191
|
config: accounts[0].pubkey,
|
|
@@ -232,24 +209,14 @@ export async function ccipSend(router, destChainSelector, message, opts) {
|
|
|
232
209
|
})
|
|
233
210
|
.remainingAccounts(accounts.slice(18))
|
|
234
211
|
.instruction();
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
if (!approveIxs.length ||
|
|
242
|
-
!(err instanceof Error) ||
|
|
243
|
-
!['encoding overruns Uint8Array', 'too large'].some((e) => err.message.includes(e)))
|
|
244
|
-
throw err;
|
|
245
|
-
// if serialization fails, send approve txs separately
|
|
246
|
-
for (const approveIx of approveIxs)
|
|
247
|
-
await simulateAndSendTxs(connection, wallet, [approveIx]);
|
|
248
|
-
hash = await simulateAndSendTxs(connection, wallet, [sendIx], addressLookupTableAccounts);
|
|
249
|
-
}
|
|
250
|
-
return { hash };
|
|
212
|
+
return {
|
|
213
|
+
family: ChainFamily.Solana,
|
|
214
|
+
mainIndex: approveIxs.length,
|
|
215
|
+
instructions: [...approveIxs, sendIx],
|
|
216
|
+
lookupTables: addressLookupTableAccounts,
|
|
217
|
+
};
|
|
251
218
|
}
|
|
252
|
-
async function approveRouterSpender(connection, owner, token, router, amount) {
|
|
219
|
+
async function approveRouterSpender({ connection, logger = console }, owner, token, router, amount) {
|
|
253
220
|
// Get the current account info to check existing delegation (or create if needed)
|
|
254
221
|
const mintInfo = await connection.getAccountInfo(token);
|
|
255
222
|
if (!mintInfo)
|
|
@@ -266,7 +233,7 @@ async function approveRouterSpender(connection, owner, token, router, amount) {
|
|
|
266
233
|
return;
|
|
267
234
|
// Approve the spender to use tokens from the user's account
|
|
268
235
|
const approveIx = createApproveInstruction(accountInfo.address, spender, owner, amount ?? BigInt(Number.MAX_SAFE_INTEGER), undefined, mintInfo.owner);
|
|
269
|
-
|
|
236
|
+
logger.info('Approving', amount ?? BigInt(Number.MAX_SAFE_INTEGER), 'of', token.toBase58(), 'tokens to router', router.toBase58());
|
|
270
237
|
return approveIx;
|
|
271
238
|
}
|
|
272
239
|
//# sourceMappingURL=send.js.map
|
package/dist/solana/send.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/solana/send.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/solana/send.ts"],"names":[],"mappings":"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"}
|
package/dist/solana/types.d.ts
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
|
+
import type { AddressLookupTableAccount, PublicKey, Transaction, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
|
|
1
2
|
import type { SVMExtraArgsV1 } from '../extra-args.ts';
|
|
2
|
-
import type { CCIPMessage_V1_6 } from '../types.ts';
|
|
3
|
+
import type { CCIPMessage_V1_6, ChainFamily } from '../types.ts';
|
|
4
|
+
/** Solana-specific CCIP v1.6 message type with SVM extra args. */
|
|
3
5
|
export type CCIPMessage_V1_6_Solana = CCIPMessage_V1_6 & SVMExtraArgsV1;
|
|
6
|
+
/**
|
|
7
|
+
* Contains unsigned data for a Solana transaction.
|
|
8
|
+
* instructions - array of instructions; may or may not fit in a single transaction
|
|
9
|
+
* mainIndex - index of the main instruction in the array
|
|
10
|
+
* lookupTables - array of lookupTables to be used in *main* transaction
|
|
11
|
+
*/
|
|
12
|
+
export type UnsignedSolanaTx = {
|
|
13
|
+
family: typeof ChainFamily.Solana;
|
|
14
|
+
instructions: TransactionInstruction[];
|
|
15
|
+
mainIndex?: number;
|
|
16
|
+
lookupTables?: AddressLookupTableAccount[];
|
|
17
|
+
};
|
|
18
|
+
/** Minimal Solana wallet interface (anchor.Wallet=) */
|
|
19
|
+
export type Wallet = {
|
|
20
|
+
readonly publicKey: PublicKey;
|
|
21
|
+
signTransaction<T extends Transaction | VersionedTransaction>(tx: T): Promise<T>;
|
|
22
|
+
};
|
|
23
|
+
/** Typeguard for Solana Wallet */
|
|
24
|
+
export declare function isWallet(wallet: unknown): wallet is Wallet;
|
|
4
25
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/solana/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/solana/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,SAAS,EACT,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEhE,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,cAAc,CAAA;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,OAAO,WAAW,CAAC,MAAM,CAAA;IACjC,YAAY,EAAE,sBAAsB,EAAE,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAA;CAC3C,CAAA;AAED,uDAAuD;AACvD,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjF,CAAA;AAED,kCAAkC;AAClC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,MAAM,CAY1D"}
|
package/dist/solana/types.js
CHANGED
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
/** Typeguard for Solana Wallet */
|
|
2
|
+
export function isWallet(wallet) {
|
|
3
|
+
return (typeof wallet === 'object' &&
|
|
4
|
+
wallet !== null &&
|
|
5
|
+
'publicKey' in wallet &&
|
|
6
|
+
'signTransaction' in wallet &&
|
|
7
|
+
typeof wallet.publicKey === 'object' &&
|
|
8
|
+
wallet.publicKey !== null &&
|
|
9
|
+
'toBase58' in wallet.publicKey &&
|
|
10
|
+
typeof wallet.publicKey.toBase58 === 'function' &&
|
|
11
|
+
typeof wallet.signTransaction === 'function');
|
|
12
|
+
}
|
|
2
13
|
//# sourceMappingURL=types.js.map
|
package/dist/solana/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/solana/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/solana/types.ts"],"names":[],"mappings":"AAiCA,kCAAkC;AAClC,MAAM,UAAU,QAAQ,CAAC,MAAe;IACtC,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,WAAW,IAAI,MAAM;QACrB,iBAAiB,IAAI,MAAM;QAC3B,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACpC,MAAM,CAAC,SAAS,KAAK,IAAI;QACzB,UAAU,IAAI,MAAM,CAAC,SAAS;QAC9B,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,UAAU;QAC/C,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,CAC7C,CAAA;AACH,CAAC"}
|
package/dist/solana/utils.d.ts
CHANGED
|
@@ -1,11 +1,37 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
1
2
|
import { type AddressLookupTableAccount, type Connection, type Signer, type Transaction, type TransactionInstruction, PublicKey, VersionedTransaction } from '@solana/web3.js';
|
|
2
3
|
import { type BytesLike } from 'ethers';
|
|
3
|
-
import type { Log_ } from '../types.ts';
|
|
4
|
+
import type { Log_, WithLogger } from '../types.ts';
|
|
5
|
+
import type { UnsignedSolanaTx, Wallet } from './types.ts';
|
|
6
|
+
/**
|
|
7
|
+
* Generates a hex-encoded discriminator for a Solana event.
|
|
8
|
+
* @param eventName - Name of the event.
|
|
9
|
+
* @returns Hex-encoded discriminator string.
|
|
10
|
+
*/
|
|
11
|
+
export declare function hexDiscriminator(eventName: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Converts bytes to a Node.js Buffer.
|
|
14
|
+
* @param bytes - Bytes to convert.
|
|
15
|
+
* @returns Node.js Buffer.
|
|
16
|
+
*/
|
|
4
17
|
export declare function bytesToBuffer(bytes: BytesLike): Buffer;
|
|
18
|
+
/**
|
|
19
|
+
* Waits for a Solana transaction to reach finalized status.
|
|
20
|
+
* @param connection - Solana connection instance.
|
|
21
|
+
* @param signature - Transaction signature to wait for.
|
|
22
|
+
* @param intervalMs - Polling interval in milliseconds.
|
|
23
|
+
* @param maxAttempts - Maximum polling attempts before timeout.
|
|
24
|
+
*/
|
|
5
25
|
export declare function waitForFinalization(connection: Connection, signature: string, intervalMs?: number, maxAttempts?: number): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Converts a camelCase string to snake_case.
|
|
28
|
+
* @param str - String to convert.
|
|
29
|
+
* @returns snake_case formatted string.
|
|
30
|
+
*/
|
|
6
31
|
export declare function camelToSnakeCase(str: string): string;
|
|
7
32
|
type ParsedLog = Pick<Log_, 'topics' | 'index' | 'address' | 'data'> & {
|
|
8
33
|
data: string;
|
|
34
|
+
level: number;
|
|
9
35
|
};
|
|
10
36
|
/**
|
|
11
37
|
* Utility function to parse Solana logs with proper address and topic extraction.
|
|
@@ -26,12 +52,23 @@ type ParsedLog = Pick<Log_, 'topics' | 'index' | 'address' | 'data'> & {
|
|
|
26
52
|
* @returns Array of parsed log objects from all programs in the transaction
|
|
27
53
|
*/
|
|
28
54
|
export declare function parseSolanaLogs(logs: readonly string[]): ParsedLog[];
|
|
55
|
+
/**
|
|
56
|
+
* Extracts error information from Solana transaction logs.
|
|
57
|
+
* @param logs_ - Raw log strings or parsed log objects.
|
|
58
|
+
* @returns Parsed error info with program and error details.
|
|
59
|
+
*/
|
|
29
60
|
export declare function getErrorFromLogs(logs_: readonly string[] | readonly Pick<Log_, 'address' | 'index' | 'data' | 'topics'>[] | null): {
|
|
30
61
|
program: string;
|
|
31
62
|
[k: string]: string;
|
|
32
63
|
} | undefined;
|
|
33
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Simulates a Solana transaction to estimate compute units.
|
|
66
|
+
* @param params - Simulation parameters including connection and payer.
|
|
67
|
+
* @returns Simulation result with estimated compute units.
|
|
68
|
+
*/
|
|
69
|
+
export declare function simulateTransaction({ connection, logger }: {
|
|
34
70
|
connection: Connection;
|
|
71
|
+
} & WithLogger, { payerKey, computeUnitsOverride, ...rest }: {
|
|
35
72
|
payerKey: PublicKey;
|
|
36
73
|
computeUnitsOverride?: number;
|
|
37
74
|
addressLookupTableAccounts?: AddressLookupTableAccount[];
|
|
@@ -43,16 +80,33 @@ export declare function simulateTransaction({ connection, payerKey, computeUnits
|
|
|
43
80
|
/**
|
|
44
81
|
* Used as `provider` in anchor's `Program` constructor, to support `.view()` simulations
|
|
45
82
|
* without * requiring a full AnchorProvider with wallet
|
|
46
|
-
* @param
|
|
83
|
+
* @param ctx - Context object containing connection and logger
|
|
47
84
|
* @param feePayer - Fee payer for the simulated transaction
|
|
48
85
|
* @returns Value returned by the simulated method
|
|
49
86
|
*/
|
|
50
|
-
export declare function simulationProvider(
|
|
87
|
+
export declare function simulationProvider(ctx: {
|
|
88
|
+
connection: Connection;
|
|
89
|
+
} & WithLogger, feePayer?: PublicKey): {
|
|
51
90
|
connection: Connection;
|
|
52
91
|
wallet: {
|
|
53
92
|
publicKey: PublicKey;
|
|
54
93
|
};
|
|
55
94
|
simulate: (tx: Transaction | VersionedTransaction, _signers?: Signer[]) => Promise<import("@solana/web3.js").SimulatedTransactionResponse>;
|
|
56
95
|
};
|
|
96
|
+
/**
|
|
97
|
+
* Sign, simulate, send and confirm as many instructions as possible on each transaction
|
|
98
|
+
* @param ctx - Context object containing connection and logger
|
|
99
|
+
* @param wallet - Wallet to sign and pay for txs
|
|
100
|
+
* @param unsignedTx - instructions to sign and send
|
|
101
|
+
* - instructions - Instructions to send; they may not fit all in a single transaction,
|
|
102
|
+
* in which case they will be split into multiple transactions
|
|
103
|
+
* - mainIndex - Index of the main instruction
|
|
104
|
+
* - lookupTables - lookupTables to be used for main instruction
|
|
105
|
+
* @param computeUnits - max computeUnits limit to be used for main instruction
|
|
106
|
+
* @returns - signature of successful transaction including main instruction
|
|
107
|
+
*/
|
|
108
|
+
export declare function simulateAndSendTxs(ctx: {
|
|
109
|
+
connection: Connection;
|
|
110
|
+
} & WithLogger, wallet: Wallet, { instructions, mainIndex, lookupTables }: Omit<UnsignedSolanaTx, 'family'>, computeUnits?: number): Promise<string>;
|
|
57
111
|
export {};
|
|
58
112
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,KAAK,MAAM,EAEX,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAE3B,SAAS,EAGT,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,KAAK,MAAM,EAEX,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAE3B,SAAS,EAGT,oBAAoB,EACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAE1D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAM,EAChB,WAAW,SAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,KAAK,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG;IACrE,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAyCpE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,GAAG,IAAI,GAC/F;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,SAAS,CA0DtD;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,UAAU,EAAE,MAAgB,EAAE,EAAE;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,UAAU,EACzE,EACE,QAAQ,EACR,oBAAoB,EACpB,GAAG,IAAI,EACR,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,0BAA0B,CAAC,EAAE,yBAAyB,EAAE,CAAA;CACzD,GAAG,CAAC;IAAE,YAAY,EAAE,sBAAsB,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,WAAW,GAAG,oBAAoB,CAAA;CAAE,CAAC,mEA2D9F;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,UAAU,EAC5C,QAAQ,GAAE,SAA6D;;;;;mBAOhD,WAAW,GAAG,oBAAoB,aAAa,MAAM,EAAE;EAM/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,UAAU,EAC5C,MAAM,EAAE,MAAM,EACd,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EAC3E,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CA6DjB"}
|
package/dist/solana/utils.js
CHANGED
|
@@ -1,9 +1,31 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
import { eventDiscriminator } from '@coral-xyz/anchor';
|
|
1
3
|
import { ComputeBudgetProgram, PublicKey, SendTransactionError, TransactionMessage, VersionedTransaction, } from '@solana/web3.js';
|
|
2
4
|
import { dataLength, dataSlice, hexlify } from 'ethers';
|
|
3
5
|
import { getDataBytes, sleep } from "../utils.js";
|
|
6
|
+
/**
|
|
7
|
+
* Generates a hex-encoded discriminator for a Solana event.
|
|
8
|
+
* @param eventName - Name of the event.
|
|
9
|
+
* @returns Hex-encoded discriminator string.
|
|
10
|
+
*/
|
|
11
|
+
export function hexDiscriminator(eventName) {
|
|
12
|
+
return hexlify(eventDiscriminator(eventName));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Converts bytes to a Node.js Buffer.
|
|
16
|
+
* @param bytes - Bytes to convert.
|
|
17
|
+
* @returns Node.js Buffer.
|
|
18
|
+
*/
|
|
4
19
|
export function bytesToBuffer(bytes) {
|
|
5
20
|
return Buffer.from(getDataBytes(bytes).buffer);
|
|
6
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Waits for a Solana transaction to reach finalized status.
|
|
24
|
+
* @param connection - Solana connection instance.
|
|
25
|
+
* @param signature - Transaction signature to wait for.
|
|
26
|
+
* @param intervalMs - Polling interval in milliseconds.
|
|
27
|
+
* @param maxAttempts - Maximum polling attempts before timeout.
|
|
28
|
+
*/
|
|
7
29
|
export async function waitForFinalization(connection, signature, intervalMs = 500, maxAttempts = 500) {
|
|
8
30
|
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
9
31
|
const status = await connection.getSignatureStatuses([signature]);
|
|
@@ -15,6 +37,11 @@ export async function waitForFinalization(connection, signature, intervalMs = 50
|
|
|
15
37
|
}
|
|
16
38
|
throw new Error(`Transaction ${signature} not finalized after timeout`);
|
|
17
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Converts a camelCase string to snake_case.
|
|
42
|
+
* @param str - String to convert.
|
|
43
|
+
* @returns snake_case formatted string.
|
|
44
|
+
*/
|
|
18
45
|
export function camelToSnakeCase(str) {
|
|
19
46
|
return str
|
|
20
47
|
.replace(/([A-Z]+)([A-Z][a-z]|$)/g, (_, p1, p2) => {
|
|
@@ -81,11 +108,17 @@ export function parseSolanaLogs(logs) {
|
|
|
81
108
|
index: i,
|
|
82
109
|
address: currentProgram,
|
|
83
110
|
data: logData,
|
|
111
|
+
level: programStack.length,
|
|
84
112
|
});
|
|
85
113
|
}
|
|
86
114
|
}
|
|
87
115
|
return results;
|
|
88
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Extracts error information from Solana transaction logs.
|
|
119
|
+
* @param logs_ - Raw log strings or parsed log objects.
|
|
120
|
+
* @returns Parsed error info with program and error details.
|
|
121
|
+
*/
|
|
89
122
|
export function getErrorFromLogs(logs_) {
|
|
90
123
|
if (!logs_?.length)
|
|
91
124
|
return;
|
|
@@ -134,7 +167,12 @@ export function getErrorFromLogs(logs_) {
|
|
|
134
167
|
};
|
|
135
168
|
}
|
|
136
169
|
}
|
|
137
|
-
|
|
170
|
+
/**
|
|
171
|
+
* Simulates a Solana transaction to estimate compute units.
|
|
172
|
+
* @param params - Simulation parameters including connection and payer.
|
|
173
|
+
* @returns Simulation result with estimated compute units.
|
|
174
|
+
*/
|
|
175
|
+
export async function simulateTransaction({ connection, logger = console }, { payerKey, computeUnitsOverride, ...rest }) {
|
|
138
176
|
// Add max compute units for simulation
|
|
139
177
|
const maxComputeUnits = 1_400_000;
|
|
140
178
|
const recentBlockhash = '11111111111111111111111111111112';
|
|
@@ -172,7 +210,7 @@ export async function simulateTransaction({ connection, payerKey, computeUnitsOv
|
|
|
172
210
|
};
|
|
173
211
|
const result = await connection.simulateTransaction(tx, config);
|
|
174
212
|
if (result.value.err) {
|
|
175
|
-
|
|
213
|
+
logger.debug('Simulation results:', {
|
|
176
214
|
logs: result.value.logs,
|
|
177
215
|
unitsConsumed: result.value.unitsConsumed,
|
|
178
216
|
returnData: result.value.returnData,
|
|
@@ -191,21 +229,86 @@ export async function simulateTransaction({ connection, payerKey, computeUnitsOv
|
|
|
191
229
|
/**
|
|
192
230
|
* Used as `provider` in anchor's `Program` constructor, to support `.view()` simulations
|
|
193
231
|
* without * requiring a full AnchorProvider with wallet
|
|
194
|
-
* @param
|
|
232
|
+
* @param ctx - Context object containing connection and logger
|
|
195
233
|
* @param feePayer - Fee payer for the simulated transaction
|
|
196
234
|
* @returns Value returned by the simulated method
|
|
197
235
|
*/
|
|
198
|
-
export function simulationProvider(
|
|
236
|
+
export function simulationProvider(ctx, feePayer = new PublicKey('11111111111111111111111111111112')) {
|
|
199
237
|
return {
|
|
200
|
-
connection,
|
|
238
|
+
connection: ctx.connection,
|
|
201
239
|
wallet: {
|
|
202
240
|
publicKey: feePayer,
|
|
203
241
|
},
|
|
204
|
-
simulate: async (tx, _signers) => simulateTransaction({
|
|
205
|
-
connection,
|
|
242
|
+
simulate: async (tx, _signers) => simulateTransaction(ctx, {
|
|
206
243
|
payerKey: feePayer,
|
|
207
244
|
tx,
|
|
208
245
|
}),
|
|
209
246
|
};
|
|
210
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Sign, simulate, send and confirm as many instructions as possible on each transaction
|
|
250
|
+
* @param ctx - Context object containing connection and logger
|
|
251
|
+
* @param wallet - Wallet to sign and pay for txs
|
|
252
|
+
* @param unsignedTx - instructions to sign and send
|
|
253
|
+
* - instructions - Instructions to send; they may not fit all in a single transaction,
|
|
254
|
+
* in which case they will be split into multiple transactions
|
|
255
|
+
* - mainIndex - Index of the main instruction
|
|
256
|
+
* - lookupTables - lookupTables to be used for main instruction
|
|
257
|
+
* @param computeUnits - max computeUnits limit to be used for main instruction
|
|
258
|
+
* @returns - signature of successful transaction including main instruction
|
|
259
|
+
*/
|
|
260
|
+
export async function simulateAndSendTxs(ctx, wallet, { instructions, mainIndex, lookupTables }, computeUnits) {
|
|
261
|
+
const { connection } = ctx;
|
|
262
|
+
let mainHash;
|
|
263
|
+
for (let [start, end] = [0, instructions.length]; start < instructions.length; [start, end] = [end, instructions.length]) {
|
|
264
|
+
let computeUnitLimit, lastErr, addressLookupTableAccounts, ixs, includesMain;
|
|
265
|
+
do {
|
|
266
|
+
ixs = instructions.slice(start, end);
|
|
267
|
+
includesMain = mainIndex != null && start <= mainIndex && mainIndex < end;
|
|
268
|
+
addressLookupTableAccounts = includesMain ? lookupTables : undefined;
|
|
269
|
+
try {
|
|
270
|
+
const simulated = (await simulateTransaction(ctx, {
|
|
271
|
+
payerKey: wallet.publicKey,
|
|
272
|
+
instructions: ixs,
|
|
273
|
+
addressLookupTableAccounts,
|
|
274
|
+
})).unitsConsumed || 0;
|
|
275
|
+
if (simulated <= 200000) {
|
|
276
|
+
computeUnitLimit = undefined;
|
|
277
|
+
}
|
|
278
|
+
else if (!includesMain || computeUnits == null || simulated <= computeUnits) {
|
|
279
|
+
computeUnitLimit = Math.ceil(simulated * 1.1);
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
throw new Error(`Main simulation exceeds specified computeUnits limit. simulated=${simulated}, limit=${computeUnits}`);
|
|
283
|
+
}
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
catch (err) {
|
|
287
|
+
lastErr = err;
|
|
288
|
+
end--; // truncate until finding a slice which fits (both computeUnits and tx size limits)
|
|
289
|
+
}
|
|
290
|
+
} while (end > start);
|
|
291
|
+
if (end <= start)
|
|
292
|
+
throw lastErr;
|
|
293
|
+
const blockhash = await connection.getLatestBlockhash('confirmed');
|
|
294
|
+
const txMsg = new TransactionMessage({
|
|
295
|
+
payerKey: wallet.publicKey,
|
|
296
|
+
recentBlockhash: blockhash.blockhash,
|
|
297
|
+
instructions: [
|
|
298
|
+
...(computeUnitLimit
|
|
299
|
+
? [ComputeBudgetProgram.setComputeUnitLimit({ units: computeUnitLimit })]
|
|
300
|
+
: []),
|
|
301
|
+
...ixs,
|
|
302
|
+
],
|
|
303
|
+
});
|
|
304
|
+
const messageV0 = txMsg.compileToV0Message(addressLookupTableAccounts);
|
|
305
|
+
const tx = new VersionedTransaction(messageV0);
|
|
306
|
+
const signed = await wallet.signTransaction(tx);
|
|
307
|
+
const signature = await connection.sendTransaction(signed);
|
|
308
|
+
await connection.confirmTransaction({ signature, ...blockhash }, 'confirmed');
|
|
309
|
+
if (includesMain)
|
|
310
|
+
mainHash = signature;
|
|
311
|
+
}
|
|
312
|
+
return mainHash;
|
|
313
|
+
}
|
|
211
314
|
//# sourceMappingURL=utils.js.map
|
package/dist/solana/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,oBAAoB,EACpB,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAkB,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAGvE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/solana/utils.ts"],"names":[],"mappings":"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"}
|