@huma-finance/sdk 0.0.75-beta.981 → 0.0.75-beta.984
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/API.md +10 -0
- package/dist/cjs/utils/solana/buildOptimalTransaction.d.ts +10 -2
- package/dist/cjs/utils/solana/buildOptimalTransaction.js +32 -18
- package/dist/cjs/utils/solana/buildOptimalTransaction.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/utils/solana/buildOptimalTransaction.d.ts +10 -2
- package/dist/utils/solana/buildOptimalTransaction.js +32 -18
- package/dist/utils/solana/buildOptimalTransaction.js.map +1 -1
- package/package.json +3 -3
|
@@ -3,5 +3,13 @@ import { SolanaChainEnum } from '@huma-finance/shared';
|
|
|
3
3
|
import { HumaSolanaContext } from '../../helpers';
|
|
4
4
|
export declare function extractWritableAccounts(tx: Transaction): PublicKey[];
|
|
5
5
|
export type HeliusPriorityLevel = 'Min' | 'Low' | 'Medium' | 'High' | 'VeryHigh' | 'UnsafeMax';
|
|
6
|
-
export declare function buildOptimalTransaction(tx: Transaction, txAccounts: PublicKey[], context: HumaSolanaContext, heliusPriorityLevel?: HeliusPriorityLevel): Promise<
|
|
7
|
-
|
|
6
|
+
export declare function buildOptimalTransaction(tx: Transaction, txAccounts: PublicKey[], context: HumaSolanaContext, heliusPriorityLevel?: HeliusPriorityLevel): Promise<{
|
|
7
|
+
tx: Transaction;
|
|
8
|
+
unitsConsumed: number | undefined;
|
|
9
|
+
fee: number | undefined;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function buildOptimalTransactionFromConnection(tx: Transaction, txAccounts: PublicKey[], connection: Connection, chainId: SolanaChainEnum, signer: PublicKey, heliusPriorityLevel?: HeliusPriorityLevel, heliusApiKey?: string | null): Promise<{
|
|
12
|
+
tx: Transaction;
|
|
13
|
+
unitsConsumed: number | undefined;
|
|
14
|
+
fee: number | undefined;
|
|
15
|
+
}>;
|
|
@@ -45,24 +45,38 @@ async function getPriorityFeeEstimate(priorityLevel, tx, txAccounts, chainEnum,
|
|
|
45
45
|
return null;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if a given instruction is a SetComputeUnitLimit instruction
|
|
50
|
+
* See https://github.com/solana-program/compute-budget/blob/main/clients/js/src/generated/programs/computeBudget.ts#L29
|
|
51
|
+
*/
|
|
52
|
+
function isSetComputeLimitInstruction(ix) {
|
|
53
|
+
return (ix.programId.equals(ComputeBudgetProgram.programId) && ix.data[0] === 2 // opcode for setComputeUnitLimit is 2
|
|
54
|
+
);
|
|
55
|
+
}
|
|
48
56
|
async function buildOptimalTransactionImpl(tx, txAccounts, connection, chainEnum, signer, heliusPriority = 'Medium', heliusApiKey) {
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
57
|
+
let unitsConsumed;
|
|
58
|
+
const computeLimitIndex = tx.instructions.findIndex(isSetComputeLimitInstruction);
|
|
59
|
+
// Calculate compute unit limit if it doesn't exist
|
|
60
|
+
if (computeLimitIndex === -1) {
|
|
61
|
+
const testInstructions = [
|
|
62
|
+
ComputeBudgetProgram.setComputeUnitLimit({ units: 1400000 }),
|
|
63
|
+
...tx.instructions,
|
|
64
|
+
];
|
|
65
|
+
const testTransaction = new VersionedTransaction(new TransactionMessage({
|
|
66
|
+
instructions: testInstructions,
|
|
67
|
+
payerKey: signer,
|
|
68
|
+
recentBlockhash: (await connection.getLatestBlockhash()).blockhash,
|
|
69
|
+
}).compileToV0Message([]));
|
|
70
|
+
const rpcResponse = await connection.simulateTransaction(testTransaction, {
|
|
71
|
+
replaceRecentBlockhash: true,
|
|
72
|
+
sigVerify: false,
|
|
73
|
+
});
|
|
74
|
+
unitsConsumed = rpcResponse.value.unitsConsumed;
|
|
75
|
+
if (unitsConsumed) {
|
|
76
|
+
tx.instructions.unshift(ComputeBudgetProgram.setComputeUnitLimit({
|
|
77
|
+
units: unitsConsumed * 1.2,
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
66
80
|
}
|
|
67
81
|
// Calculate compute unit priority fee
|
|
68
82
|
const heliusPriorityFeeEstimateRes = await getPriorityFeeEstimate(heliusPriority, tx, txAccounts, chainEnum, heliusApiKey);
|
|
@@ -71,7 +85,7 @@ async function buildOptimalTransactionImpl(tx, txAccounts, connection, chainEnum
|
|
|
71
85
|
tx.instructions.unshift(ComputeBudgetProgram.setComputeUnitPrice({
|
|
72
86
|
microLamports: chosenFee,
|
|
73
87
|
}));
|
|
74
|
-
return tx;
|
|
88
|
+
return { tx, unitsConsumed, fee: chosenFee };
|
|
75
89
|
}
|
|
76
90
|
export async function buildOptimalTransaction(tx, txAccounts, context, heliusPriorityLevel) {
|
|
77
91
|
return buildOptimalTransactionImpl(tx, txAccounts, context.connection, context.chainId, context.publicKey, heliusPriorityLevel, context.heliusApiKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildOptimalTransaction.js","sourceRoot":"","sources":["../../../src/utils/solana/buildOptimalTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"buildOptimalTransaction.js","sourceRoot":"","sources":["../../../src/utils/solana/buildOptimalTransaction.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huma-finance/sdk",
|
|
3
|
-
"version": "0.0.75-beta.
|
|
3
|
+
"version": "0.0.75-beta.984+6489f74",
|
|
4
4
|
"types": "./dist/index.d.ts",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@ethersproject/bignumber": "^5.6.0",
|
|
29
29
|
"@ethersproject/constants": "^5.7.0",
|
|
30
30
|
"@ethersproject/contracts": "^5.7.0",
|
|
31
|
-
"@huma-finance/shared": "^0.0.75-beta.
|
|
31
|
+
"@huma-finance/shared": "^0.0.75-beta.984+6489f74",
|
|
32
32
|
"@irys/sdk": "^0.2.11",
|
|
33
33
|
"axios": "^1.4.0",
|
|
34
34
|
"bignumber.js": "^9.1.1",
|
|
@@ -113,5 +113,5 @@
|
|
|
113
113
|
"optionalDependencies": {
|
|
114
114
|
"encoding": "^0.1.13"
|
|
115
115
|
},
|
|
116
|
-
"gitHead": "
|
|
116
|
+
"gitHead": "6489f7486bb63b2bc021539cd339260b601e1c49"
|
|
117
117
|
}
|