@exodus/solana-api 3.26.1 → 3.26.3
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/CHANGELOG.md +18 -0
- package/package.json +2 -2
- package/src/create-unsigned-tx-for-send.js +9 -11
- package/src/tx-send.js +4 -17
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.26.3](https://github.com/ExodusMovement/assets/compare/@exodus/solana-api@3.26.2...@exodus/solana-api@3.26.3) (2025-12-19)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
* fix: solana reduce fee payer sponsorship requests (#7147)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## [3.26.2](https://github.com/ExodusMovement/assets/compare/@exodus/solana-api@3.26.1...@exodus/solana-api@3.26.2) (2025-12-15)
|
|
17
|
+
|
|
18
|
+
**Note:** Version bump only for package @exodus/solana-api
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
6
24
|
## [3.26.1](https://github.com/ExodusMovement/assets/compare/@exodus/solana-api@3.26.0...@exodus/solana-api@3.26.1) (2025-12-12)
|
|
7
25
|
|
|
8
26
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exodus/solana-api",
|
|
3
|
-
"version": "3.26.
|
|
3
|
+
"version": "3.26.3",
|
|
4
4
|
"description": "Transaction monitors, fee monitors, RPC with the blockchain node, and other networking code for Solana",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@exodus/assets-testing": "^1.0.0",
|
|
50
50
|
"@exodus/solana-web3.js": "^1.63.1-exodus.9-rc3"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "ae424af3e4254f05509527496806913d56e39aca",
|
|
53
53
|
"bugs": {
|
|
54
54
|
"url": "https://github.com/ExodusMovement/assets/issues?q=is%3Aissue+is%3Aopen+label%3Asolana-api"
|
|
55
55
|
},
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createUnsignedTx,
|
|
3
|
-
deserializeTransaction,
|
|
4
3
|
findAssociatedTokenAddress,
|
|
5
4
|
parseTxBuffer,
|
|
6
5
|
prepareForSigning,
|
|
@@ -24,6 +23,7 @@ export const createTxFactory = ({ assetClientInterface, api, feePayerClient }) =
|
|
|
24
23
|
feeData: providedFeeData,
|
|
25
24
|
fromAddress: providedFromAddress,
|
|
26
25
|
toAddress,
|
|
26
|
+
address,
|
|
27
27
|
amount,
|
|
28
28
|
reference,
|
|
29
29
|
memo,
|
|
@@ -56,6 +56,8 @@ export const createTxFactory = ({ assetClientInterface, api, feePayerClient }) =
|
|
|
56
56
|
assert(asset, 'asset is required')
|
|
57
57
|
assert(walletAccount, 'walletAccount is required')
|
|
58
58
|
|
|
59
|
+
toAddress = toAddress ?? address
|
|
60
|
+
|
|
59
61
|
let tokenParams = Object.create(null)
|
|
60
62
|
|
|
61
63
|
const baseAsset = asset.baseAsset
|
|
@@ -178,20 +180,18 @@ export const createTxFactory = ({ assetClientInterface, api, feePayerClient }) =
|
|
|
178
180
|
...magicEdenParams,
|
|
179
181
|
})
|
|
180
182
|
|
|
183
|
+
unsignedTx.txMeta.stakingParams = stakingParams
|
|
184
|
+
|
|
181
185
|
const resolveUnitConsumed = async () => {
|
|
182
186
|
// this avoids unnecessary simulations. Also the simulation fails with InsufficientFundsForRent when sending all.
|
|
183
187
|
if (asset.name === asset.baseAsset.name && amount && !nft && !method) {
|
|
184
188
|
return 150 + CU_FOR_COMPUTE_BUDGET_INSTRUCTIONS
|
|
185
189
|
}
|
|
186
190
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
})
|
|
192
|
-
const message = transactionForFeeEstimation.txMeta.usedFeePayer
|
|
193
|
-
? deserializeTransaction(transactionForFeeEstimation.txData.transactionBuffer).message
|
|
194
|
-
: prepareForSigning(transactionForFeeEstimation).message
|
|
191
|
+
// Simulate with unsigned transaction. The fee payer service is deterministic -
|
|
192
|
+
// same input always produces same output. Any variance from SetAuthority
|
|
193
|
+
// instructions added by fee payer is covered by computeUnitsMultiplier.
|
|
194
|
+
const { message } = prepareForSigning(unsignedTx)
|
|
195
195
|
|
|
196
196
|
const { unitsConsumed, err } = await api.simulateUnsignedTransaction({
|
|
197
197
|
message,
|
|
@@ -215,8 +215,6 @@ export const createTxFactory = ({ assetClientInterface, api, feePayerClient }) =
|
|
|
215
215
|
unsignedTx.txData.computeUnits = computeUnits
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
unsignedTx.txMeta.stakingParams = stakingParams
|
|
219
|
-
|
|
220
218
|
// we add token account creation fee
|
|
221
219
|
let tokenCreationFee = asset.feeAsset.currency.ZERO
|
|
222
220
|
if (isToken && (!unsignedTx.txData.isAssociatedTokenAccountActive || isExchange)) {
|
package/src/tx-send.js
CHANGED
|
@@ -6,26 +6,13 @@ export const createAndBroadcastTXFactory = ({ api, assetClientInterface }) => {
|
|
|
6
6
|
assert(assetClientInterface, 'assetClientInterface is required')
|
|
7
7
|
assert(api, 'api is required')
|
|
8
8
|
|
|
9
|
-
return async ({ asset, walletAccount, unsignedTx:
|
|
9
|
+
return async ({ asset, walletAccount, unsignedTx: providedUnsignedTx, ...legacyParams }) => {
|
|
10
10
|
const assetName = asset.name
|
|
11
11
|
const baseAsset = asset.baseAsset
|
|
12
12
|
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return baseAsset.api.createTx({
|
|
19
|
-
asset,
|
|
20
|
-
walletAccount,
|
|
21
|
-
amount: legacyParams.amount,
|
|
22
|
-
toAddress: legacyParams.address,
|
|
23
|
-
...legacyParams,
|
|
24
|
-
...legacyParams.options,
|
|
25
|
-
})
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const unsignedTx = await resolveTxs()
|
|
13
|
+
const { unsignedTx } = providedUnsignedTx
|
|
14
|
+
? { unsignedTx: providedUnsignedTx }
|
|
15
|
+
: await baseAsset.api.createTx({ asset, walletAccount, ...legacyParams })
|
|
29
16
|
|
|
30
17
|
const signedTx = await assetClientInterface.signTransaction({
|
|
31
18
|
assetName: baseAsset.name,
|