@haven-fi/solauto-sdk 1.0.658 → 1.0.659
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/dist/services/transactions/transactionsManager.d.ts.map +1 -1
- package/dist/services/transactions/transactionsManager.js +2 -5
- package/dist/utils/jitoUtils.d.ts +1 -1
- package/dist/utils/jitoUtils.d.ts.map +1 -1
- package/dist/utils/jitoUtils.js +18 -18
- package/dist/utils/solanaUtils.d.ts +2 -2
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +22 -12
- package/package.json +1 -1
- package/src/services/transactions/transactionsManager.ts +3 -7
- package/src/utils/jitoUtils.ts +23 -22
- package/src/utils/solanaUtils.ts +25 -22
- package/tests/transactions/shared.ts +1 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionsManager.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionsManager.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEL,aAAa,EAQd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAM5E,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAOjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IATtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB,WAAW,EAAE,OAAO,CAAS;IAC7B,SAAS,EAAE,MAAM,CAAK;gBAGb,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAOhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAwGD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAU5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IAdxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAE3B,kBAAkB,SAAmB;gBAG3B,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,UAAU,GAAE,OAAc,EAC1B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,WAAW,CAAC,EAAE,WAAW;YAab,uBAAuB;IA0CrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB;YAoBb,SAAS;IAmBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;IAyGzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA8BxB,6BAA6B;YA4I7B,qBAAqB;YAgDrB,eAAe;YA0Df,eAAe;CA4D9B"}
|
@@ -91,7 +91,7 @@ class TransactionSet {
|
|
91
91
|
return false;
|
92
92
|
}
|
93
93
|
const singleTx = await this.getSingleTransaction();
|
94
|
-
const tx = (0, utils_1.addTxOptimizations)(this.txHandler.umi
|
94
|
+
const tx = (0, utils_1.addTxOptimizations)(this.txHandler.umi, singleTx, 1, 1)
|
95
95
|
.add(item.tx)
|
96
96
|
.setAddressLookupTables(await this.lookupTables.getLutInputs([
|
97
97
|
...this.lutAddresses(),
|
@@ -270,10 +270,7 @@ class TransactionsManager {
|
|
270
270
|
const items = [...transactions];
|
271
271
|
const client = this.txHandler;
|
272
272
|
const updateLut = await client.updateLookupTable();
|
273
|
-
if (updateLut &&
|
274
|
-
(updateLut?.new ||
|
275
|
-
updateLut.accountsToAdd.length > 4 ||
|
276
|
-
(client.pos.memecoinPosition && updateLut.accountsToAdd.length >= 2))) {
|
273
|
+
if (updateLut && (updateLut?.new || updateLut.accountsToAdd.length > 4)) {
|
277
274
|
await this.updateLut(updateLut.tx, updateLut.new);
|
278
275
|
}
|
279
276
|
this.lookupTables.defaultLuts = client.defaultLookupTables();
|
@@ -2,7 +2,7 @@ import { Connection, PublicKey } from "@solana/web3.js";
|
|
2
2
|
import { Signer, TransactionBuilder, Umi, TransactionMessage } from "@metaplex-foundation/umi";
|
3
3
|
import { PriorityFeeSetting, TransactionRunType } from "../types";
|
4
4
|
export declare function getRandomTipAccount(): PublicKey;
|
5
|
-
export declare function
|
5
|
+
export declare function getAdditionalSigners(message: TransactionMessage): {
|
6
6
|
index: number;
|
7
7
|
publicKey: string;
|
8
8
|
isWritable: boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"jitoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jitoUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAIV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,GAAG,EAEH,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAelE,wBAAgB,mBAAmB,IAAI,SAAS,CAG/C;
|
1
|
+
{"version":3,"file":"jitoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jitoUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAIV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,GAAG,EAEH,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAelE,wBAAgB,mBAAmB,IAAI,SAAS,CAG/C;AAkGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB;;;;IAkB/D;AAwHD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EAAE,EACtB,GAAG,EAAE,kBAAkB,EAAE,EACzB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA+F/B"}
|
package/dist/utils/jitoUtils.js
CHANGED
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.getRandomTipAccount = getRandomTipAccount;
|
7
|
-
exports.
|
7
|
+
exports.getAdditionalSigners = getAdditionalSigners;
|
8
8
|
exports.sendJitoBundledTransactions = sendJitoBundledTransactions;
|
9
9
|
const web3_js_1 = require("@solana/web3.js");
|
10
10
|
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
@@ -86,9 +86,24 @@ async function simulateJitoBundle(umi, txs) {
|
|
86
86
|
const transactionResults = simulationResult.transactionResults;
|
87
87
|
return transactionResults;
|
88
88
|
}
|
89
|
+
function getAdditionalSigners(message) {
|
90
|
+
const { numRequiredSignatures, numReadonlySignedAccounts } = message.header;
|
91
|
+
const numWritableSigners = numRequiredSignatures - numReadonlySignedAccounts;
|
92
|
+
const signersInfo = [];
|
93
|
+
for (let i = 0; i < numRequiredSignatures; i++) {
|
94
|
+
const publicKey = message.accounts[i].toString();
|
95
|
+
const isWritable = i < numWritableSigners;
|
96
|
+
signersInfo.push({
|
97
|
+
index: i,
|
98
|
+
publicKey,
|
99
|
+
isWritable,
|
100
|
+
});
|
101
|
+
}
|
102
|
+
return signersInfo;
|
103
|
+
}
|
89
104
|
async function umiToVersionedTransactions(umi, blockhash, userSigner, otherSigners, txs, sign, feeEstimates, computeUnitLimits) {
|
90
105
|
let builtTxs = await Promise.all(txs.map(async (tx, i) => {
|
91
|
-
return (0, solanaUtils_1.assembleFinalTransaction)(
|
106
|
+
return (0, solanaUtils_1.assembleFinalTransaction)(umi, tx, feeEstimates ? feeEstimates[i] : undefined, computeUnitLimits ? computeUnitLimits[i] : undefined)
|
92
107
|
.setBlockhash(blockhash)
|
93
108
|
.build(umi);
|
94
109
|
}));
|
@@ -96,7 +111,7 @@ async function umiToVersionedTransactions(umi, blockhash, userSigner, otherSigne
|
|
96
111
|
builtTxs = await userSigner.signAllTransactions(builtTxs);
|
97
112
|
for (const signer of otherSigners) {
|
98
113
|
for (let i = 0; i < builtTxs.length; i++) {
|
99
|
-
const requiredSigners =
|
114
|
+
const requiredSigners = getAdditionalSigners(builtTxs[i].message);
|
100
115
|
if (requiredSigners
|
101
116
|
.map((x) => x.publicKey)
|
102
117
|
.includes(signer.publicKey.toString())) {
|
@@ -165,21 +180,6 @@ async function sendJitoBundle(umi, transactions) {
|
|
165
180
|
(0, generalUtils_1.consoleLog)("Bundle ID:", bundleId);
|
166
181
|
return bundleId ? await pollBundleStatus(umi, bundleId) : [];
|
167
182
|
}
|
168
|
-
function getRequiredSigners(message) {
|
169
|
-
const { numRequiredSignatures, numReadonlySignedAccounts } = message.header;
|
170
|
-
const numWritableSigners = numRequiredSignatures - numReadonlySignedAccounts;
|
171
|
-
const signersInfo = [];
|
172
|
-
for (let i = 0; i < numRequiredSignatures; i++) {
|
173
|
-
const publicKey = message.accounts[i].toString();
|
174
|
-
const isWritable = i < numWritableSigners;
|
175
|
-
signersInfo.push({
|
176
|
-
index: i,
|
177
|
-
publicKey,
|
178
|
-
isWritable,
|
179
|
-
});
|
180
|
-
}
|
181
|
-
return signersInfo;
|
182
|
-
}
|
183
183
|
async function sendJitoBundledTransactions(umi, connection, userSigner, otherSigners, txs, txType, priorityFeeSetting = types_1.PriorityFeeSetting.Min, onAwaitingSign) {
|
184
184
|
if (txs.length === 1) {
|
185
185
|
const resp = await (0, solanaUtils_1.sendSingleOptimizedTransaction)(umi, connection, txs[0], txType, priorityFeeSetting, onAwaitingSign);
|
@@ -11,8 +11,8 @@ export declare function closeTokenAccountUmiIx(signer: Signer, tokenAccount: Pub
|
|
11
11
|
export declare function splTokenTransferUmiIx(signer: Signer, fromTa: PublicKey, toTa: PublicKey, authority: PublicKey, amount: bigint): WrappedInstruction;
|
12
12
|
export declare function getWalletSplBalances(conn: Connection, wallet: PublicKey, tokenMints: PublicKey[]): Promise<bigint[]>;
|
13
13
|
export declare function getAddressLookupInputs(umi: Umi, lookupTableAddresses: string[]): Promise<AddressLookupTableInput[]>;
|
14
|
-
export declare function addTxOptimizations(
|
15
|
-
export declare function assembleFinalTransaction(
|
14
|
+
export declare function addTxOptimizations(umi: Umi, tx: TransactionBuilder, computeUnitPrice?: number, computeUnitLimit?: number): TransactionBuilder;
|
15
|
+
export declare function assembleFinalTransaction(umi: Umi, transaction: TransactionBuilder, computeUnitPrice?: number, computeUnitLimit?: number): TransactionBuilder;
|
16
16
|
export declare function getQnComputeUnitPriceEstimate(umi: Umi, programId: PublicKey, blockheight?: number): Promise<any>;
|
17
17
|
export declare function getComputeUnitPriceEstimate(umi: Umi, tx: TransactionBuilder, prioritySetting: PriorityFeeSetting, useAccounts?: boolean): Promise<number | undefined>;
|
18
18
|
export declare function sendSingleOptimizedTransaction(umi: Umi, connection: Connection, tx: TransactionBuilder, txType?: TransactionRunType, prioritySetting?: PriorityFeeSetting, onAwaitingSign?: () => void): Promise<Uint8Array | undefined>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,UAAU,EACV,SAAS,EAKT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAe9E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,KAAK,CAAC,EAAE,UAAU,GACjB,CAAC,UAAU,EAAE,GAAG,CAAC,CAWnB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAmBpC;AAED,wBAAgB,kBAAkB,CAChC,
|
1
|
+
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,UAAU,EACV,SAAS,EAKT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAe9E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,KAAK,CAAC,EAAE,UAAU,GACjB,CAAC,UAAU,EAAE,GAAG,CAAC,CAWnB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAmBpC;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBAmB1B;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBA2D1B;AAuBD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,GAAG,CAAC,CAKd;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,eAAe,EAAE,kBAAkB,EACnC,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwC7B;AA+CD,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,kBAAkB,EACtB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,eAAe,GAAE,kBAA2C,EAC5D,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAoEjC"}
|
@@ -99,17 +99,27 @@ async function getAddressLookupInputs(umi, lookupTableAddresses) {
|
|
99
99
|
return acc;
|
100
100
|
}, new Array());
|
101
101
|
}
|
102
|
-
function addTxOptimizations(
|
103
|
-
|
104
|
-
.
|
105
|
-
|
106
|
-
|
107
|
-
.
|
108
|
-
|
109
|
-
|
102
|
+
function addTxOptimizations(umi, tx, computeUnitPrice, computeUnitLimit) {
|
103
|
+
const computePriceIx = computeUnitPrice !== undefined
|
104
|
+
? setComputeUnitPriceUmiIx(umi.identity, computeUnitPrice)
|
105
|
+
: (0, umi_1.transactionBuilder)();
|
106
|
+
const computeLimitIx = computeUnitLimit
|
107
|
+
? setComputeUnitLimitUmiIx(umi.identity, computeUnitLimit)
|
108
|
+
: (0, umi_1.transactionBuilder)();
|
109
|
+
const allOptimizations = tx.prepend(computePriceIx).prepend(computeLimitIx);
|
110
|
+
const oneOptimization = tx.prepend(computePriceIx);
|
111
|
+
if (allOptimizations.fitsInOneTransaction(umi)) {
|
112
|
+
return allOptimizations;
|
113
|
+
}
|
114
|
+
else if (oneOptimization.fitsInOneTransaction(umi)) {
|
115
|
+
return oneOptimization;
|
116
|
+
}
|
117
|
+
else {
|
118
|
+
return tx;
|
119
|
+
}
|
110
120
|
}
|
111
|
-
function assembleFinalTransaction(
|
112
|
-
const tx = addTxOptimizations(
|
121
|
+
function assembleFinalTransaction(umi, transaction, computeUnitPrice, computeUnitLimit) {
|
122
|
+
const tx = addTxOptimizations(umi, transaction, computeUnitPrice, computeUnitLimit);
|
113
123
|
const marginfiStartFlSerializer = (0, marginfi_sdk_1.getLendingAccountStartFlashloanInstructionDataSerializer)();
|
114
124
|
const marginfiStartFlDiscriminator = marginfiStartFlSerializer
|
115
125
|
.serialize({
|
@@ -247,7 +257,7 @@ async function sendSingleOptimizedTransaction(umi, connection, tx, txType, prior
|
|
247
257
|
const blockhash = await connection.getLatestBlockhash("confirmed");
|
248
258
|
let computeUnitLimit = undefined;
|
249
259
|
if (txType !== "skip-simulation") {
|
250
|
-
const simulationResult = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await simulateTransaction(umi, connection, assembleFinalTransaction(umi
|
260
|
+
const simulationResult = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await simulateTransaction(umi, connection, assembleFinalTransaction(umi, tx, undefined, 1400000).setBlockhash(blockhash)), 3);
|
251
261
|
computeUnitLimit = Math.round(simulationResult.value.unitsConsumed * 1.15);
|
252
262
|
(0, generalUtils_1.consoleLog)("Compute unit limit: ", computeUnitLimit);
|
253
263
|
}
|
@@ -262,7 +272,7 @@ async function sendSingleOptimizedTransaction(umi, connection, tx, txType, prior
|
|
262
272
|
}
|
263
273
|
if (txType !== "only-simulate") {
|
264
274
|
onAwaitingSign?.();
|
265
|
-
const signedTx = await assembleFinalTransaction(umi
|
275
|
+
const signedTx = await assembleFinalTransaction(umi, tx, cuPrice, computeUnitLimit)
|
266
276
|
.setBlockhash(blockhash)
|
267
277
|
.buildAndSign(umi);
|
268
278
|
const txSig = await spamSendTransactionUntilConfirmed(connection, (0, umi_web3js_adapters_1.toWeb3JsTransaction)(signedTx), blockhash);
|
package/package.json
CHANGED
@@ -2,6 +2,7 @@ import bs58 from "bs58";
|
|
2
2
|
import {
|
3
3
|
PublicKey,
|
4
4
|
TransactionExpiredBlockheightExceededError,
|
5
|
+
VersionedTransaction,
|
5
6
|
} from "@solana/web3.js";
|
6
7
|
import {
|
7
8
|
AddressLookupTableInput,
|
@@ -154,7 +155,7 @@ class TransactionSet {
|
|
154
155
|
}
|
155
156
|
|
156
157
|
const singleTx = await this.getSingleTransaction();
|
157
|
-
const tx = addTxOptimizations(this.txHandler.umi
|
158
|
+
const tx = addTxOptimizations(this.txHandler.umi, singleTx, 1, 1)
|
158
159
|
.add(item.tx)
|
159
160
|
.setAddressLookupTables(
|
160
161
|
await this.lookupTables.getLutInputs([
|
@@ -443,12 +444,7 @@ export class TransactionsManager {
|
|
443
444
|
|
444
445
|
const updateLut = await client.updateLookupTable();
|
445
446
|
|
446
|
-
if (
|
447
|
-
updateLut &&
|
448
|
-
(updateLut?.new ||
|
449
|
-
updateLut.accountsToAdd.length > 4 ||
|
450
|
-
(client.pos.memecoinPosition && updateLut.accountsToAdd.length >= 2))
|
451
|
-
) {
|
447
|
+
if (updateLut && (updateLut?.new || updateLut.accountsToAdd.length > 4)) {
|
452
448
|
await this.updateLut(updateLut.tx, updateLut.new);
|
453
449
|
}
|
454
450
|
this.lookupTables.defaultLuts = client.defaultLookupTables();
|
package/src/utils/jitoUtils.ts
CHANGED
@@ -129,6 +129,27 @@ async function simulateJitoBundle(umi: Umi, txs: VersionedTransaction[]) {
|
|
129
129
|
return transactionResults;
|
130
130
|
}
|
131
131
|
|
132
|
+
|
133
|
+
export function getAdditionalSigners(message: TransactionMessage) {
|
134
|
+
const { numRequiredSignatures, numReadonlySignedAccounts } = message.header;
|
135
|
+
|
136
|
+
const numWritableSigners = numRequiredSignatures - numReadonlySignedAccounts;
|
137
|
+
|
138
|
+
const signersInfo = [];
|
139
|
+
for (let i = 0; i < numRequiredSignatures; i++) {
|
140
|
+
const publicKey = message.accounts[i].toString();
|
141
|
+
const isWritable = i < numWritableSigners;
|
142
|
+
|
143
|
+
signersInfo.push({
|
144
|
+
index: i,
|
145
|
+
publicKey,
|
146
|
+
isWritable,
|
147
|
+
});
|
148
|
+
}
|
149
|
+
|
150
|
+
return signersInfo;
|
151
|
+
}
|
152
|
+
|
132
153
|
async function umiToVersionedTransactions(
|
133
154
|
umi: Umi,
|
134
155
|
blockhash: string,
|
@@ -142,7 +163,7 @@ async function umiToVersionedTransactions(
|
|
142
163
|
let builtTxs = await Promise.all(
|
143
164
|
txs.map(async (tx, i) => {
|
144
165
|
return assembleFinalTransaction(
|
145
|
-
|
166
|
+
umi,
|
146
167
|
tx,
|
147
168
|
feeEstimates ? feeEstimates[i] : undefined,
|
148
169
|
computeUnitLimits ? computeUnitLimits[i] : undefined
|
@@ -156,7 +177,7 @@ async function umiToVersionedTransactions(
|
|
156
177
|
builtTxs = await userSigner.signAllTransactions(builtTxs);
|
157
178
|
for (const signer of otherSigners) {
|
158
179
|
for (let i = 0; i < builtTxs.length; i++) {
|
159
|
-
const requiredSigners =
|
180
|
+
const requiredSigners = getAdditionalSigners(builtTxs[i].message);
|
160
181
|
if (
|
161
182
|
requiredSigners
|
162
183
|
.map((x) => x.publicKey)
|
@@ -247,26 +268,6 @@ async function sendJitoBundle(
|
|
247
268
|
return bundleId ? await pollBundleStatus(umi, bundleId) : [];
|
248
269
|
}
|
249
270
|
|
250
|
-
export function getRequiredSigners(message: TransactionMessage) {
|
251
|
-
const { numRequiredSignatures, numReadonlySignedAccounts } = message.header;
|
252
|
-
|
253
|
-
const numWritableSigners = numRequiredSignatures - numReadonlySignedAccounts;
|
254
|
-
|
255
|
-
const signersInfo = [];
|
256
|
-
for (let i = 0; i < numRequiredSignatures; i++) {
|
257
|
-
const publicKey = message.accounts[i].toString();
|
258
|
-
const isWritable = i < numWritableSigners;
|
259
|
-
|
260
|
-
signersInfo.push({
|
261
|
-
index: i,
|
262
|
-
publicKey,
|
263
|
-
isWritable,
|
264
|
-
});
|
265
|
-
}
|
266
|
-
|
267
|
-
return signersInfo;
|
268
|
-
}
|
269
|
-
|
270
271
|
export async function sendJitoBundledTransactions(
|
271
272
|
umi: Umi,
|
272
273
|
connection: Connection,
|
package/src/utils/solanaUtils.ts
CHANGED
@@ -199,32 +199,38 @@ export async function getAddressLookupInputs(
|
|
199
199
|
}
|
200
200
|
|
201
201
|
export function addTxOptimizations(
|
202
|
-
|
203
|
-
|
202
|
+
umi: Umi,
|
203
|
+
tx: TransactionBuilder,
|
204
204
|
computeUnitPrice?: number,
|
205
205
|
computeUnitLimit?: number
|
206
206
|
) {
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
)
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
207
|
+
const computePriceIx =
|
208
|
+
computeUnitPrice !== undefined
|
209
|
+
? setComputeUnitPriceUmiIx(umi.identity, computeUnitPrice)
|
210
|
+
: transactionBuilder();
|
211
|
+
const computeLimitIx = computeUnitLimit
|
212
|
+
? setComputeUnitLimitUmiIx(umi.identity, computeUnitLimit)
|
213
|
+
: transactionBuilder();
|
214
|
+
|
215
|
+
const allOptimizations = tx.prepend(computePriceIx).prepend(computeLimitIx);
|
216
|
+
const oneOptimization = tx.prepend(computePriceIx);
|
217
|
+
if (allOptimizations.fitsInOneTransaction(umi)) {
|
218
|
+
return allOptimizations;
|
219
|
+
} else if (oneOptimization.fitsInOneTransaction(umi)) {
|
220
|
+
return oneOptimization;
|
221
|
+
} else {
|
222
|
+
return tx;
|
223
|
+
}
|
218
224
|
}
|
219
225
|
|
220
226
|
export function assembleFinalTransaction(
|
221
|
-
|
227
|
+
umi: Umi,
|
222
228
|
transaction: TransactionBuilder,
|
223
229
|
computeUnitPrice?: number,
|
224
230
|
computeUnitLimit?: number
|
225
231
|
) {
|
226
232
|
const tx = addTxOptimizations(
|
227
|
-
|
233
|
+
umi,
|
228
234
|
transaction,
|
229
235
|
computeUnitPrice,
|
230
236
|
computeUnitLimit
|
@@ -439,12 +445,9 @@ export async function sendSingleOptimizedTransaction(
|
|
439
445
|
await simulateTransaction(
|
440
446
|
umi,
|
441
447
|
connection,
|
442
|
-
assembleFinalTransaction(
|
443
|
-
|
444
|
-
|
445
|
-
undefined,
|
446
|
-
1_400_000
|
447
|
-
).setBlockhash(blockhash)
|
448
|
+
assembleFinalTransaction(umi, tx, undefined, 1_400_000).setBlockhash(
|
449
|
+
blockhash
|
450
|
+
)
|
448
451
|
),
|
449
452
|
3
|
450
453
|
);
|
@@ -465,7 +468,7 @@ export async function sendSingleOptimizedTransaction(
|
|
465
468
|
if (txType !== "only-simulate") {
|
466
469
|
onAwaitingSign?.();
|
467
470
|
const signedTx = await assembleFinalTransaction(
|
468
|
-
umi
|
471
|
+
umi,
|
469
472
|
tx,
|
470
473
|
cuPrice,
|
471
474
|
computeUnitLimit
|
@@ -40,7 +40,6 @@ export async function e2eTransactionTest(
|
|
40
40
|
|
41
41
|
await client.initialize({
|
42
42
|
positionId: 1,
|
43
|
-
new: true,
|
44
43
|
supplyMint,
|
45
44
|
debtMint,
|
46
45
|
});
|
@@ -55,7 +54,7 @@ export async function e2eTransactionTest(
|
|
55
54
|
};
|
56
55
|
|
57
56
|
const supplyUsd = 100;
|
58
|
-
const debtUsd = withFlashLoan ? 60 :
|
57
|
+
const debtUsd = withFlashLoan ? 60 : 3;
|
59
58
|
const [supplyPrice, debtPrice] = await fetchTokenPrices([
|
60
59
|
supplyMint,
|
61
60
|
debtMint,
|