@lifi/sdk 3.3.1 → 3.4.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.
Files changed (43) hide show
  1. package/package.json +4 -4
  2. package/src/_cjs/config.js +6 -5
  3. package/src/_cjs/config.js.map +1 -1
  4. package/src/_cjs/core/Solana/SolanaStepExecutor.js +12 -47
  5. package/src/_cjs/core/Solana/SolanaStepExecutor.js.map +1 -1
  6. package/src/_cjs/core/Solana/connection.js +30 -9
  7. package/src/_cjs/core/Solana/connection.js.map +1 -1
  8. package/src/_cjs/core/Solana/getSolanaBalance.js +5 -5
  9. package/src/_cjs/core/Solana/getSolanaBalance.js.map +1 -1
  10. package/src/_cjs/core/Solana/sendAndConfirmTransaction.js +68 -0
  11. package/src/_cjs/core/Solana/sendAndConfirmTransaction.js.map +1 -0
  12. package/src/_cjs/utils/withDedupe.js.map +1 -1
  13. package/src/_cjs/version.js +1 -1
  14. package/src/_esm/config.js +6 -5
  15. package/src/_esm/config.js.map +1 -1
  16. package/src/_esm/core/Solana/SolanaStepExecutor.js +14 -65
  17. package/src/_esm/core/Solana/SolanaStepExecutor.js.map +1 -1
  18. package/src/_esm/core/Solana/connection.js +40 -10
  19. package/src/_esm/core/Solana/connection.js.map +1 -1
  20. package/src/_esm/core/Solana/getSolanaBalance.js +6 -6
  21. package/src/_esm/core/Solana/getSolanaBalance.js.map +1 -1
  22. package/src/_esm/core/Solana/sendAndConfirmTransaction.js +76 -0
  23. package/src/_esm/core/Solana/sendAndConfirmTransaction.js.map +1 -0
  24. package/src/_esm/utils/withDedupe.js.map +1 -1
  25. package/src/_esm/version.js +1 -1
  26. package/src/_types/config.d.ts +2 -2
  27. package/src/_types/config.d.ts.map +1 -1
  28. package/src/_types/core/Solana/SolanaStepExecutor.d.ts.map +1 -1
  29. package/src/_types/core/Solana/connection.d.ts +14 -3
  30. package/src/_types/core/Solana/connection.d.ts.map +1 -1
  31. package/src/_types/core/Solana/getSolanaBalance.d.ts.map +1 -1
  32. package/src/_types/core/Solana/sendAndConfirmTransaction.d.ts +13 -0
  33. package/src/_types/core/Solana/sendAndConfirmTransaction.d.ts.map +1 -0
  34. package/src/_types/utils/withDedupe.d.ts +1 -1
  35. package/src/_types/utils/withDedupe.d.ts.map +1 -1
  36. package/src/_types/version.d.ts +1 -1
  37. package/src/config.ts +6 -6
  38. package/src/core/Solana/SolanaStepExecutor.ts +15 -86
  39. package/src/core/Solana/connection.ts +43 -10
  40. package/src/core/Solana/getSolanaBalance.ts +27 -7
  41. package/src/core/Solana/sendAndConfirmTransaction.ts +111 -0
  42. package/src/utils/withDedupe.ts +3 -3
  43. package/src/version.ts +1 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "dependencies": {
3
- "@bigmi/core": "^0.0.2",
4
- "@lifi/types": "^16.0.0",
3
+ "@bigmi/core": "^0.0.4",
4
+ "@lifi/types": "^16.1.0",
5
5
  "@noble/curves": "^1.6.0",
6
6
  "@noble/hashes": "^1.5.0",
7
7
  "@solana/wallet-adapter-base": "^0.9.23",
@@ -9,7 +9,7 @@
9
9
  "bech32": "^2.0.0",
10
10
  "bitcoinjs-lib": "^7.0.0-rc.0",
11
11
  "bs58": "^6.0.0",
12
- "viem": "^2.21.33"
12
+ "viem": "^2.21.35"
13
13
  },
14
14
  "description": "LI.FI Any-to-Any Cross-Chain-Swap SDK",
15
15
  "exports": {
@@ -65,5 +65,5 @@
65
65
  "sideEffects": false,
66
66
  "types": "./src/_types/index.d.ts",
67
67
  "typings": "./src/_types/index.d.ts",
68
- "version": "3.3.1"
68
+ "version": "3.4.0"
69
69
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.config = void 0;
4
+ const types_1 = require("@lifi/types");
4
5
  exports.config = (() => {
5
6
  const _config = {
6
7
  integrator: 'lifi-sdk',
@@ -47,7 +48,7 @@ exports.config = (() => {
47
48
  }
48
49
  return rpcUrls;
49
50
  }, {});
50
- this.setRPCUrls(rpcUrls);
51
+ this.setRPCUrls(rpcUrls, [types_1.ChainId.SOL]);
51
52
  _config.chains = chains;
52
53
  _loading = undefined;
53
54
  },
@@ -67,9 +68,9 @@ exports.config = (() => {
67
68
  }
68
69
  return chain;
69
70
  },
70
- setRPCUrls(rpcUrls) {
71
+ setRPCUrls(rpcUrls, skipChains) {
71
72
  for (const rpcUrlsKey in rpcUrls) {
72
- const chainId = rpcUrlsKey;
73
+ const chainId = Number(rpcUrlsKey);
73
74
  const urls = rpcUrls[chainId];
74
75
  if (!urls?.length) {
75
76
  continue;
@@ -77,9 +78,9 @@ exports.config = (() => {
77
78
  if (!_config.rpcUrls[chainId]?.length) {
78
79
  _config.rpcUrls[chainId] = Array.from(urls);
79
80
  }
80
- else {
81
+ else if (!skipChains?.includes(chainId)) {
81
82
  const filteredUrls = urls.filter((url) => !_config.rpcUrls[chainId]?.includes(url));
82
- _config.rpcUrls[chainId]?.push(...filteredUrls);
83
+ _config.rpcUrls[chainId].push(...filteredUrls);
83
84
  }
84
85
  }
85
86
  },
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SolanaStepExecutor = void 0;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
- const bs58_1 = require("bs58");
6
5
  const viem_1 = require("viem");
7
6
  const config_js_1 = require("../../config.js");
8
7
  const constants_js_1 = require("../../errors/constants.js");
@@ -10,7 +9,6 @@ const errors_js_1 = require("../../errors/errors.js");
10
9
  const api_js_1 = require("../../services/api.js");
11
10
  const base64ToUint8Array_js_1 = require("../../utils/base64ToUint8Array.js");
12
11
  const getTransactionMessage_js_1 = require("../../utils/getTransactionMessage.js");
13
- const sleep_js_1 = require("../../utils/sleep.js");
14
12
  const BaseStepExecutor_js_1 = require("../BaseStepExecutor.js");
15
13
  const checkBalance_js_1 = require("../checkBalance.js");
16
14
  const processMessages_js_1 = require("../processMessages.js");
@@ -18,6 +16,7 @@ const stepComparison_js_1 = require("../stepComparison.js");
18
16
  const waitForReceivingTransaction_js_1 = require("../waitForReceivingTransaction.js");
19
17
  const connection_js_1 = require("./connection.js");
20
18
  const parseSolanaErrors_js_1 = require("./parseSolanaErrors.js");
19
+ const sendAndConfirmTransaction_js_1 = require("./sendAndConfirmTransaction.js");
21
20
  class SolanaStepExecutor extends BaseStepExecutor_js_1.BaseStepExecutor {
22
21
  constructor(options) {
23
22
  super(options);
@@ -53,7 +52,6 @@ class SolanaStepExecutor extends BaseStepExecutor_js_1.BaseStepExecutor {
53
52
  });
54
53
  if (process.status !== 'DONE') {
55
54
  try {
56
- const connection = await (0, connection_js_1.getSolanaConnection)();
57
55
  process = this.statusManager.updateProcess(step, process.type, 'STARTED');
58
56
  await (0, checkBalance_js_1.checkBalance)(this.walletAdapter.publicKey.toString(), step);
59
57
  if (!step.transactionRequest) {
@@ -75,9 +73,6 @@ class SolanaStepExecutor extends BaseStepExecutor_js_1.BaseStepExecutor {
75
73
  let transactionRequest = {
76
74
  data: step.transactionRequest.data,
77
75
  };
78
- const blockhashResult = await connection.getLatestBlockhash({
79
- commitment: 'confirmed',
80
- });
81
76
  if (this.executionOptions?.updateTransactionRequestHook) {
82
77
  const customizedTransactionRequest = await this.executionOptions.updateTransactionRequestHook({
83
78
  requestType: 'transaction',
@@ -98,56 +93,26 @@ class SolanaStepExecutor extends BaseStepExecutor_js_1.BaseStepExecutor {
98
93
  errorInstance: new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionExpired, 'Transaction has expired: blockhash is no longer recent enough.'),
99
94
  });
100
95
  process = this.statusManager.updateProcess(step, process.type, 'PENDING');
101
- const simulationResult = await connection.simulateTransaction(signedTx, {
102
- commitment: 'processed',
96
+ const simulationResult = await (0, connection_js_1.callSolanaWithRetry)((connection) => connection.simulateTransaction(signedTx, {
97
+ commitment: 'confirmed',
103
98
  replaceRecentBlockhash: true,
104
- });
99
+ }));
105
100
  if (simulationResult.value.err) {
106
101
  throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionSimulationFailed, 'Transaction simulation failed');
107
102
  }
108
- const txSignature = bs58_1.default.encode(signedTx.signatures[0]);
109
- const lastValidBlockHeight = blockhashResult.lastValidBlockHeight - 150;
110
- const abortController = new AbortController();
111
- const confirmTransactionPromise = connection
112
- .confirmTransaction({
113
- signature: txSignature,
114
- blockhash: blockhashResult.blockhash,
115
- lastValidBlockHeight: lastValidBlockHeight,
116
- abortSignal: abortController.signal,
117
- }, 'confirmed')
118
- .then((result) => result.value);
119
- let confirmedTx = null;
120
- let blockHeight = await connection.getBlockHeight();
121
- const rawTransactionOptions = {
122
- skipPreflight: true,
123
- maxRetries: 0,
124
- preflightCommitment: 'confirmed',
125
- };
126
- const signedTxSerialized = signedTx.serialize();
127
- while (!confirmedTx && blockHeight < lastValidBlockHeight) {
128
- await connection.sendRawTransaction(signedTxSerialized, rawTransactionOptions);
129
- confirmedTx = await Promise.race([
130
- confirmTransactionPromise,
131
- (0, sleep_js_1.sleep)(1000),
132
- ]);
133
- if (confirmedTx) {
134
- break;
135
- }
136
- blockHeight = await connection.getBlockHeight();
137
- }
138
- abortController.abort();
139
- if (!confirmedTx) {
103
+ const confirmedTx = await (0, sendAndConfirmTransaction_js_1.sendAndConfirmTransaction)(signedTx);
104
+ if (!confirmedTx.signatureResult) {
140
105
  throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionExpired, 'Transaction has expired: The block height has exceeded the maximum allowed limit.');
141
106
  }
142
- if (confirmedTx?.err) {
143
- const reason = typeof confirmedTx.err === 'object'
144
- ? JSON.stringify(confirmedTx.err)
145
- : confirmedTx.err;
107
+ if (confirmedTx.signatureResult.err) {
108
+ const reason = typeof confirmedTx.signatureResult.err === 'object'
109
+ ? JSON.stringify(confirmedTx.signatureResult.err)
110
+ : confirmedTx.signatureResult.err;
146
111
  throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionFailed, `Transaction failed: ${reason}`);
147
112
  }
148
113
  process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
149
- txHash: txSignature,
150
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txSignature}`,
114
+ txHash: confirmedTx.txSignature,
115
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${confirmedTx.txSignature}`,
151
116
  });
152
117
  if (isBridgeExecution) {
153
118
  process = this.statusManager.updateProcess(step, process.type, 'DONE');
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaStepExecutor.js","sourceRoot":"","sources":["../../../core/Solana/SolanaStepExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SolanaStepExecutor.js","sourceRoot":"","sources":["../../../core/Solana/SolanaStepExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,38 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSolanaConnection = void 0;
3
+ exports.getSolanaConnections = exports.ensureConnections = void 0;
4
+ exports.callSolanaWithRetry = callSolanaWithRetry;
4
5
  const types_1 = require("@lifi/types");
5
6
  const web3_js_1 = require("@solana/web3.js");
6
7
  const rpc_js_1 = require("../rpc.js");
7
- let connection = undefined;
8
- const getSolanaConnection = async () => {
9
- if (!connection) {
10
- const rpcUrl = await (0, rpc_js_1.getRpcUrl)(types_1.ChainId.SOL);
11
- connection = new web3_js_1.Connection(rpcUrl);
12
- return connection;
8
+ const connections = new Map();
9
+ const ensureConnections = async () => {
10
+ const rpcUrls = await (0, rpc_js_1.getRpcUrls)(types_1.ChainId.SOL);
11
+ for (const rpcUrl of rpcUrls) {
12
+ if (!connections.get(rpcUrl)) {
13
+ const connection = new web3_js_1.Connection(rpcUrl);
14
+ connections.set(rpcUrl, connection);
15
+ }
13
16
  }
14
- return connection;
15
17
  };
16
- exports.getSolanaConnection = getSolanaConnection;
18
+ exports.ensureConnections = ensureConnections;
19
+ const getSolanaConnections = async () => {
20
+ await (0, exports.ensureConnections)();
21
+ return Array.from(connections.values());
22
+ };
23
+ exports.getSolanaConnections = getSolanaConnections;
24
+ async function callSolanaWithRetry(fn) {
25
+ await (0, exports.ensureConnections)();
26
+ let lastError = null;
27
+ for (const connection of connections.values()) {
28
+ try {
29
+ const result = await fn(connection);
30
+ return result;
31
+ }
32
+ catch (error) {
33
+ lastError = error;
34
+ }
35
+ }
36
+ throw lastError;
37
+ }
17
38
  //# sourceMappingURL=connection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../core/Solana/connection.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,6CAA4C;AAC5C,sCAAqC;AAErC,IAAI,UAAU,GAA2B,SAAS,CAAA;AAM3C,MAAM,mBAAmB,GAAG,KAAK,IAAyB,EAAE;IACjE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,EAAC,eAAO,CAAC,GAAG,CAAC,CAAA;QAC3C,UAAU,GAAG,IAAI,oBAAU,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAPY,QAAA,mBAAmB,uBAO/B"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../core/Solana/connection.ts"],"names":[],"mappings":";;;AAkCA,kDAgBC;AAlDD,uCAAqC;AACrC,6CAA4C;AAC5C,sCAAsC;AAEtC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAA;AAM1C,MAAM,iBAAiB,GAAG,KAAK,IAAmB,EAAE;IACzD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAU,EAAC,eAAO,CAAC,GAAG,CAAC,CAAA;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,MAAM,CAAC,CAAA;YACzC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AARY,QAAA,iBAAiB,qBAQ7B;AAMM,MAAM,oBAAoB,GAAG,KAAK,IAA2B,EAAE;IACpE,MAAM,IAAA,yBAAiB,GAAE,CAAA;IACzB,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;AACzC,CAAC,CAAA;AAHY,QAAA,oBAAoB,wBAGhC;AAOM,KAAK,UAAU,mBAAmB,CACvC,EAA0C;IAG1C,MAAM,IAAA,yBAAiB,GAAE,CAAA;IACzB,IAAI,SAAS,GAAQ,IAAI,CAAA;IACzB,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,CAAA;YACnC,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAA;QACnB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAA;AACjB,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSolanaBalance = void 0;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
5
  const constants_js_1 = require("../../constants.js");
6
+ const withDedupe_js_1 = require("../../utils/withDedupe.js");
6
7
  const connection_js_1 = require("./connection.js");
7
8
  const types_js_1 = require("./types.js");
8
9
  const getSolanaBalance = async (walletAddress, tokens) => {
@@ -19,15 +20,14 @@ const getSolanaBalance = async (walletAddress, tokens) => {
19
20
  };
20
21
  exports.getSolanaBalance = getSolanaBalance;
21
22
  const getSolanaBalanceDefault = async (_chainId, tokens, walletAddress) => {
22
- const connection = await (0, connection_js_1.getSolanaConnection)();
23
23
  const accountPublicKey = new web3_js_1.PublicKey(walletAddress);
24
24
  const tokenProgramPublicKey = new web3_js_1.PublicKey(types_js_1.TokenProgramAddress);
25
25
  const [slot, balance, tokenAccountsByOwner] = await Promise.allSettled([
26
- connection.getSlot(),
27
- connection.getBalance(accountPublicKey),
28
- connection.getParsedTokenAccountsByOwner(accountPublicKey, {
26
+ (0, withDedupe_js_1.withDedupe)(() => (0, connection_js_1.callSolanaWithRetry)((connection) => connection.getSlot('confirmed')), { id: `${getSolanaBalanceDefault.name}.getSlot` }),
27
+ (0, withDedupe_js_1.withDedupe)(() => (0, connection_js_1.callSolanaWithRetry)((connection) => connection.getBalance(accountPublicKey, 'confirmed')), { id: `${getSolanaBalanceDefault.name}.getBalance` }),
28
+ (0, withDedupe_js_1.withDedupe)(() => (0, connection_js_1.callSolanaWithRetry)((connection) => connection.getParsedTokenAccountsByOwner(accountPublicKey, {
29
29
  programId: tokenProgramPublicKey,
30
- }),
30
+ }, 'confirmed')), { id: `${getSolanaBalanceDefault.name}.getParsedTokenAccountsByOwner` }),
31
31
  ]);
32
32
  const blockNumber = slot.status === 'fulfilled' ? BigInt(slot.value) : 0n;
33
33
  const solBalance = balance.status === 'fulfilled' ? BigInt(balance.value) : 0n;
@@ -1 +1 @@
1
- {"version":3,"file":"getSolanaBalance.js","sourceRoot":"","sources":["../../../core/Solana/getSolanaBalance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getSolanaBalance.js","sourceRoot":"","sources":["../../../core/Solana/getSolanaBalance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendAndConfirmTransaction = sendAndConfirmTransaction;
4
+ const bs58_1 = require("bs58");
5
+ const sleep_js_1 = require("../../utils/sleep.js");
6
+ const connection_js_1 = require("./connection.js");
7
+ async function sendAndConfirmTransaction(signedTx) {
8
+ const connections = await (0, connection_js_1.getSolanaConnections)();
9
+ const signedTxSerialized = signedTx.serialize();
10
+ const txSignature = bs58_1.default.encode(signedTx.signatures[0]);
11
+ if (!txSignature) {
12
+ throw new Error('Transaction signature is missing.');
13
+ }
14
+ const rawTransactionOptions = {
15
+ skipPreflight: true,
16
+ maxRetries: 0,
17
+ preflightCommitment: 'confirmed',
18
+ };
19
+ for (const connection of connections) {
20
+ connection
21
+ .sendRawTransaction(signedTxSerialized, rawTransactionOptions)
22
+ .catch();
23
+ }
24
+ const abortControllers = [];
25
+ const confirmPromises = connections.map(async (connection) => {
26
+ const abortController = new AbortController();
27
+ abortControllers.push(abortController);
28
+ try {
29
+ const blockhashResult = await connection.getLatestBlockhash('confirmed');
30
+ const confirmTransactionPromise = connection
31
+ .confirmTransaction({
32
+ signature: txSignature,
33
+ blockhash: blockhashResult.blockhash,
34
+ lastValidBlockHeight: blockhashResult.lastValidBlockHeight,
35
+ abortSignal: abortController.signal,
36
+ }, 'confirmed')
37
+ .then((result) => result.value);
38
+ let signatureResult = null;
39
+ let blockHeight = await connection.getBlockHeight('confirmed');
40
+ while (!signatureResult &&
41
+ blockHeight < blockhashResult.lastValidBlockHeight) {
42
+ await connection.sendRawTransaction(signedTxSerialized, rawTransactionOptions);
43
+ signatureResult = await Promise.race([
44
+ confirmTransactionPromise,
45
+ (0, sleep_js_1.sleep)(1000),
46
+ ]);
47
+ if (signatureResult || abortController.signal.aborted) {
48
+ break;
49
+ }
50
+ blockHeight = await connection.getBlockHeight('confirmed');
51
+ }
52
+ abortController.abort();
53
+ return signatureResult;
54
+ }
55
+ catch (error) {
56
+ if (abortController.signal.aborted) {
57
+ return Promise.reject(new Error('Confirmation aborted.'));
58
+ }
59
+ throw error;
60
+ }
61
+ });
62
+ const signatureResult = await Promise.any(confirmPromises).catch(() => null);
63
+ for (const abortController of abortControllers) {
64
+ abortController.abort();
65
+ }
66
+ return { signatureResult, txSignature };
67
+ }
68
+ //# sourceMappingURL=sendAndConfirmTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendAndConfirmTransaction.js","sourceRoot":"","sources":["../../../core/Solana/sendAndConfirmTransaction.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"withDedupe.js","sourceRoot":"","sources":["../../utils/withDedupe.ts"],"names":[],"mappings":";;;AA+BA,gCAaC;AAvCD,MAAa,MAAwB,SAAQ,GAAkB;IAG7D,YAAY,IAAY;QACtB,KAAK,EAAE,CAAA;QAHT;;;;;WAAe;QAIb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAEQ,GAAG,CAAC,GAAW,EAAE,KAAY;QACpC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAfD,wBAeC;AAGY,QAAA,YAAY,GAAiB,IAAI,MAAM,CAAe,IAAI,CAAC,CAAA;AAQxE,SAAgB,UAAU,CACxB,EAAuB,EACvB,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAqB;IAEzC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,CAAA;IACb,CAAC;IACD,IAAI,oBAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,OAAO,oBAAY,CAAC,GAAG,CAAC,EAAE,CAAE,CAAA;IAC9B,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,oBAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3D,oBAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"withDedupe.js","sourceRoot":"","sources":["../../utils/withDedupe.ts"],"names":[],"mappings":";;;AA+BA,gCAaC;AAvCD,MAAa,MAAwB,SAAQ,GAAkB;IAG7D,YAAY,IAAY;QACtB,KAAK,EAAE,CAAA;QAHT;;;;;WAAe;QAIb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAEQ,GAAG,CAAC,GAAW,EAAE,KAAY;QACpC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAfD,wBAeC;AAGY,QAAA,YAAY,GAAiB,IAAI,MAAM,CAAe,IAAI,CAAC,CAAA;AAQxE,SAAgB,UAAU,CACxB,EAAoB,EACpB,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAqB;IAEzC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,CAAA;IACb,CAAC;IACD,IAAI,oBAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,OAAO,oBAAY,CAAC,GAAG,CAAC,EAAE,CAAE,CAAA;IAC9B,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,oBAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3D,oBAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = exports.name = void 0;
4
4
  exports.name = '@lifi/sdk';
5
- exports.version = '3.3.1';
5
+ exports.version = '3.4.0';
6
6
  //# sourceMappingURL=version.js.map
@@ -1,3 +1,4 @@
1
+ import { ChainId } from '@lifi/types';
1
2
  export const config = (() => {
2
3
  const _config = {
3
4
  integrator: 'lifi-sdk',
@@ -44,7 +45,7 @@ export const config = (() => {
44
45
  }
45
46
  return rpcUrls;
46
47
  }, {});
47
- this.setRPCUrls(rpcUrls);
48
+ this.setRPCUrls(rpcUrls, [ChainId.SOL]);
48
49
  _config.chains = chains;
49
50
  _loading = undefined;
50
51
  },
@@ -64,9 +65,9 @@ export const config = (() => {
64
65
  }
65
66
  return chain;
66
67
  },
67
- setRPCUrls(rpcUrls) {
68
+ setRPCUrls(rpcUrls, skipChains) {
68
69
  for (const rpcUrlsKey in rpcUrls) {
69
- const chainId = rpcUrlsKey;
70
+ const chainId = Number(rpcUrlsKey);
70
71
  const urls = rpcUrls[chainId];
71
72
  if (!urls?.length) {
72
73
  continue;
@@ -74,9 +75,9 @@ export const config = (() => {
74
75
  if (!_config.rpcUrls[chainId]?.length) {
75
76
  _config.rpcUrls[chainId] = Array.from(urls);
76
77
  }
77
- else {
78
+ else if (!skipChains?.includes(chainId)) {
78
79
  const filteredUrls = urls.filter((url) => !_config.rpcUrls[chainId]?.includes(url));
79
- _config.rpcUrls[chainId]?.push(...filteredUrls);
80
+ _config.rpcUrls[chainId].push(...filteredUrls);
80
81
  }
81
82
  }
82
83
  },
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { VersionedTransaction, } from '@solana/web3.js';
2
- import bs58 from 'bs58';
1
+ import { VersionedTransaction } from '@solana/web3.js';
3
2
  import { withTimeout } from 'viem';
4
3
  import { config } from '../../config.js';
5
4
  import { LiFiErrorCode } from '../../errors/constants.js';
@@ -7,14 +6,14 @@ import { TransactionError } from '../../errors/errors.js';
7
6
  import { getStepTransaction } from '../../services/api.js';
8
7
  import { base64ToUint8Array } from '../../utils/base64ToUint8Array.js';
9
8
  import { getTransactionFailedMessage } from '../../utils/getTransactionMessage.js';
10
- import { sleep } from '../../utils/sleep.js';
11
9
  import { BaseStepExecutor } from '../BaseStepExecutor.js';
12
10
  import { checkBalance } from '../checkBalance.js';
13
11
  import { getSubstatusMessage } from '../processMessages.js';
14
12
  import { stepComparison } from '../stepComparison.js';
15
13
  import { waitForReceivingTransaction } from '../waitForReceivingTransaction.js';
16
- import { getSolanaConnection } from './connection.js';
14
+ import { callSolanaWithRetry } from './connection.js';
17
15
  import { parseSolanaErrors } from './parseSolanaErrors.js';
16
+ import { sendAndConfirmTransaction } from './sendAndConfirmTransaction.js';
18
17
  export class SolanaStepExecutor extends BaseStepExecutor {
19
18
  constructor(options) {
20
19
  super(options);
@@ -52,7 +51,6 @@ export class SolanaStepExecutor extends BaseStepExecutor {
52
51
  });
53
52
  if (process.status !== 'DONE') {
54
53
  try {
55
- const connection = await getSolanaConnection();
56
54
  process = this.statusManager.updateProcess(step, process.type, 'STARTED');
57
55
  // Check balance
58
56
  await checkBalance(this.walletAdapter.publicKey.toString(), step);
@@ -76,9 +74,6 @@ export class SolanaStepExecutor extends BaseStepExecutor {
76
74
  let transactionRequest = {
77
75
  data: step.transactionRequest.data,
78
76
  };
79
- const blockhashResult = await connection.getLatestBlockhash({
80
- commitment: 'confirmed',
81
- });
82
77
  if (this.executionOptions?.updateTransactionRequestHook) {
83
78
  const customizedTransactionRequest = await this.executionOptions.updateTransactionRequestHook({
84
79
  requestType: 'transaction',
@@ -102,73 +97,27 @@ export class SolanaStepExecutor extends BaseStepExecutor {
102
97
  errorInstance: new TransactionError(LiFiErrorCode.TransactionExpired, 'Transaction has expired: blockhash is no longer recent enough.'),
103
98
  });
104
99
  process = this.statusManager.updateProcess(step, process.type, 'PENDING');
105
- const simulationResult = await connection.simulateTransaction(signedTx, {
106
- commitment: 'processed',
100
+ const simulationResult = await callSolanaWithRetry((connection) => connection.simulateTransaction(signedTx, {
101
+ commitment: 'confirmed',
107
102
  replaceRecentBlockhash: true,
108
- });
103
+ }));
109
104
  if (simulationResult.value.err) {
110
105
  throw new TransactionError(LiFiErrorCode.TransactionSimulationFailed, 'Transaction simulation failed');
111
106
  }
112
- // Create transaction hash (signature)
113
- const txSignature = bs58.encode(signedTx.signatures[0]);
114
- // A known weirdness - MAX_RECENT_BLOCKHASHES is 300
115
- // https://github.com/solana-labs/solana/blob/master/sdk/program/src/clock.rs#L123
116
- // but MAX_PROCESSING_AGE is 150
117
- // https://github.com/solana-labs/solana/blob/master/sdk/program/src/clock.rs#L129
118
- // the blockhash queue in the bank tells you 300 + current slot, but it won't be accepted 150 blocks later.
119
- // https://solana.com/docs/advanced/confirmation#transaction-expiration
120
- const lastValidBlockHeight = blockhashResult.lastValidBlockHeight - 150;
121
- // In the following section, we wait and constantly check for the transaction to be confirmed
122
- // and resend the transaction if it is not confirmed within a certain time interval
123
- // thus handling tx retries on the client side rather than relying on the RPC
124
- const abortController = new AbortController();
125
- const confirmTransactionPromise = connection
126
- .confirmTransaction({
127
- signature: txSignature,
128
- blockhash: blockhashResult.blockhash,
129
- lastValidBlockHeight: lastValidBlockHeight,
130
- abortSignal: abortController.signal,
131
- }, 'confirmed')
132
- .then((result) => result.value);
133
- let confirmedTx = null;
134
- let blockHeight = await connection.getBlockHeight();
135
- const rawTransactionOptions = {
136
- // We can skip preflight check after the first transaction has been sent
137
- // https://solana.com/docs/advanced/retry#the-cost-of-skipping-preflight
138
- skipPreflight: true,
139
- // Setting max retries to 0 as we are handling retries manually
140
- maxRetries: 0,
141
- // https://solana.com/docs/advanced/confirmation#use-an-appropriate-preflight-commitment-level
142
- preflightCommitment: 'confirmed',
143
- };
144
- const signedTxSerialized = signedTx.serialize();
145
- // https://solana.com/docs/advanced/retry#customizing-rebroadcast-logic
146
- while (!confirmedTx && blockHeight < lastValidBlockHeight) {
147
- await connection.sendRawTransaction(signedTxSerialized, rawTransactionOptions);
148
- confirmedTx = await Promise.race([
149
- confirmTransactionPromise,
150
- sleep(1000),
151
- ]);
152
- if (confirmedTx) {
153
- break;
154
- }
155
- blockHeight = await connection.getBlockHeight();
156
- }
157
- // Stop waiting for tx confirmation
158
- abortController.abort();
159
- if (!confirmedTx) {
107
+ const confirmedTx = await sendAndConfirmTransaction(signedTx);
108
+ if (!confirmedTx.signatureResult) {
160
109
  throw new TransactionError(LiFiErrorCode.TransactionExpired, 'Transaction has expired: The block height has exceeded the maximum allowed limit.');
161
110
  }
162
- if (confirmedTx?.err) {
163
- const reason = typeof confirmedTx.err === 'object'
164
- ? JSON.stringify(confirmedTx.err)
165
- : confirmedTx.err;
111
+ if (confirmedTx.signatureResult.err) {
112
+ const reason = typeof confirmedTx.signatureResult.err === 'object'
113
+ ? JSON.stringify(confirmedTx.signatureResult.err)
114
+ : confirmedTx.signatureResult.err;
166
115
  throw new TransactionError(LiFiErrorCode.TransactionFailed, `Transaction failed: ${reason}`);
167
116
  }
168
117
  // Transaction has been confirmed and we can update the process
169
118
  process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
170
- txHash: txSignature,
171
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txSignature}`,
119
+ txHash: confirmedTx.txSignature,
120
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${confirmedTx.txSignature}`,
172
121
  });
173
122
  if (isBridgeExecution) {
174
123
  process = this.statusManager.updateProcess(step, process.type, 'DONE');