@lifi/sdk 3.3.0 → 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 -57
  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 -75
  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 -98
  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.29"
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.0"
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',
@@ -97,67 +92,27 @@ class SolanaStepExecutor extends BaseStepExecutor_js_1.BaseStepExecutor {
97
92
  timeout: 120_000,
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
- async function bufferToBase64(buffer) {
101
- const base64url = (await new Promise((r) => {
102
- const reader = new FileReader();
103
- reader.onload = () => r(reader.result);
104
- reader.readAsDataURL(new Blob([buffer]));
105
- }));
106
- return base64url.slice(base64url.indexOf(',') + 1);
107
- }
108
- const _s = await bufferToBase64(signedTx.serialize());
109
- console.log(_s);
110
95
  process = this.statusManager.updateProcess(step, process.type, 'PENDING');
111
- const simulationResult = await connection.simulateTransaction(signedTx, {
112
- commitment: 'processed',
96
+ const simulationResult = await (0, connection_js_1.callSolanaWithRetry)((connection) => connection.simulateTransaction(signedTx, {
97
+ commitment: 'confirmed',
113
98
  replaceRecentBlockhash: true,
114
- });
99
+ }));
115
100
  if (simulationResult.value.err) {
116
101
  throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionSimulationFailed, 'Transaction simulation failed');
117
102
  }
118
- const txSignature = bs58_1.default.encode(signedTx.signatures[0]);
119
- const lastValidBlockHeight = blockhashResult.lastValidBlockHeight - 150;
120
- const abortController = new AbortController();
121
- const confirmTransactionPromise = connection
122
- .confirmTransaction({
123
- signature: txSignature,
124
- blockhash: blockhashResult.blockhash,
125
- lastValidBlockHeight: lastValidBlockHeight,
126
- abortSignal: abortController.signal,
127
- }, 'confirmed')
128
- .then((result) => result.value);
129
- let confirmedTx = null;
130
- let blockHeight = await connection.getBlockHeight();
131
- const rawTransactionOptions = {
132
- skipPreflight: true,
133
- maxRetries: 0,
134
- preflightCommitment: 'confirmed',
135
- };
136
- const signedTxSerialized = signedTx.serialize();
137
- while (!confirmedTx && blockHeight < lastValidBlockHeight) {
138
- await connection.sendRawTransaction(signedTxSerialized, rawTransactionOptions);
139
- confirmedTx = await Promise.race([
140
- confirmTransactionPromise,
141
- (0, sleep_js_1.sleep)(1000),
142
- ]);
143
- if (confirmedTx) {
144
- break;
145
- }
146
- blockHeight = await connection.getBlockHeight();
147
- }
148
- abortController.abort();
149
- if (!confirmedTx) {
103
+ const confirmedTx = await (0, sendAndConfirmTransaction_js_1.sendAndConfirmTransaction)(signedTx);
104
+ if (!confirmedTx.signatureResult) {
150
105
  throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionExpired, 'Transaction has expired: The block height has exceeded the maximum allowed limit.');
151
106
  }
152
- if (confirmedTx?.err) {
153
- const reason = typeof confirmedTx.err === 'object'
154
- ? JSON.stringify(confirmedTx.err)
155
- : 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;
156
111
  throw new errors_js_1.TransactionError(constants_js_1.LiFiErrorCode.TransactionFailed, `Transaction failed: ${reason}`);
157
112
  }
158
113
  process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
159
- txHash: txSignature,
160
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txSignature}`,
114
+ txHash: confirmedTx.txSignature,
115
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${confirmedTx.txSignature}`,
161
116
  });
162
117
  if (isBridgeExecution) {
163
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.0';
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',
@@ -101,84 +96,28 @@ export class SolanaStepExecutor extends BaseStepExecutor {
101
96
  timeout: 120_000,
102
97
  errorInstance: new TransactionError(LiFiErrorCode.TransactionExpired, 'Transaction has expired: blockhash is no longer recent enough.'),
103
98
  });
104
- async function bufferToBase64(buffer) {
105
- const base64url = (await new Promise((r) => {
106
- const reader = new FileReader();
107
- reader.onload = () => r(reader.result);
108
- reader.readAsDataURL(new Blob([buffer]));
109
- }));
110
- return base64url.slice(base64url.indexOf(',') + 1);
111
- }
112
- const _s = await bufferToBase64(signedTx.serialize());
113
- console.log(_s);
114
99
  process = this.statusManager.updateProcess(step, process.type, 'PENDING');
115
- const simulationResult = await connection.simulateTransaction(signedTx, {
116
- commitment: 'processed',
100
+ const simulationResult = await callSolanaWithRetry((connection) => connection.simulateTransaction(signedTx, {
101
+ commitment: 'confirmed',
117
102
  replaceRecentBlockhash: true,
118
- });
103
+ }));
119
104
  if (simulationResult.value.err) {
120
105
  throw new TransactionError(LiFiErrorCode.TransactionSimulationFailed, 'Transaction simulation failed');
121
106
  }
122
- // Create transaction hash (signature)
123
- const txSignature = bs58.encode(signedTx.signatures[0]);
124
- // A known weirdness - MAX_RECENT_BLOCKHASHES is 300
125
- // https://github.com/solana-labs/solana/blob/master/sdk/program/src/clock.rs#L123
126
- // but MAX_PROCESSING_AGE is 150
127
- // https://github.com/solana-labs/solana/blob/master/sdk/program/src/clock.rs#L129
128
- // the blockhash queue in the bank tells you 300 + current slot, but it won't be accepted 150 blocks later.
129
- // https://solana.com/docs/advanced/confirmation#transaction-expiration
130
- const lastValidBlockHeight = blockhashResult.lastValidBlockHeight - 150;
131
- // In the following section, we wait and constantly check for the transaction to be confirmed
132
- // and resend the transaction if it is not confirmed within a certain time interval
133
- // thus handling tx retries on the client side rather than relying on the RPC
134
- const abortController = new AbortController();
135
- const confirmTransactionPromise = connection
136
- .confirmTransaction({
137
- signature: txSignature,
138
- blockhash: blockhashResult.blockhash,
139
- lastValidBlockHeight: lastValidBlockHeight,
140
- abortSignal: abortController.signal,
141
- }, 'confirmed')
142
- .then((result) => result.value);
143
- let confirmedTx = null;
144
- let blockHeight = await connection.getBlockHeight();
145
- const rawTransactionOptions = {
146
- // We can skip preflight check after the first transaction has been sent
147
- // https://solana.com/docs/advanced/retry#the-cost-of-skipping-preflight
148
- skipPreflight: true,
149
- // Setting max retries to 0 as we are handling retries manually
150
- maxRetries: 0,
151
- // https://solana.com/docs/advanced/confirmation#use-an-appropriate-preflight-commitment-level
152
- preflightCommitment: 'confirmed',
153
- };
154
- const signedTxSerialized = signedTx.serialize();
155
- // https://solana.com/docs/advanced/retry#customizing-rebroadcast-logic
156
- while (!confirmedTx && blockHeight < lastValidBlockHeight) {
157
- await connection.sendRawTransaction(signedTxSerialized, rawTransactionOptions);
158
- confirmedTx = await Promise.race([
159
- confirmTransactionPromise,
160
- sleep(1000),
161
- ]);
162
- if (confirmedTx) {
163
- break;
164
- }
165
- blockHeight = await connection.getBlockHeight();
166
- }
167
- // Stop waiting for tx confirmation
168
- abortController.abort();
169
- if (!confirmedTx) {
107
+ const confirmedTx = await sendAndConfirmTransaction(signedTx);
108
+ if (!confirmedTx.signatureResult) {
170
109
  throw new TransactionError(LiFiErrorCode.TransactionExpired, 'Transaction has expired: The block height has exceeded the maximum allowed limit.');
171
110
  }
172
- if (confirmedTx?.err) {
173
- const reason = typeof confirmedTx.err === 'object'
174
- ? JSON.stringify(confirmedTx.err)
175
- : 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;
176
115
  throw new TransactionError(LiFiErrorCode.TransactionFailed, `Transaction failed: ${reason}`);
177
116
  }
178
117
  // Transaction has been confirmed and we can update the process
179
118
  process = this.statusManager.updateProcess(step, process.type, 'PENDING', {
180
- txHash: txSignature,
181
- txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${txSignature}`,
119
+ txHash: confirmedTx.txSignature,
120
+ txLink: `${fromChain.metamask.blockExplorerUrls[0]}tx/${confirmedTx.txSignature}`,
182
121
  });
183
122
  if (isBridgeExecution) {
184
123
  process = this.statusManager.updateProcess(step, process.type, 'DONE');