rubic-sdk 5.50.5-alpha.solana.32 → 5.50.5-alpha.solana.33
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/lib/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.d.ts +2 -0
- package/lib/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.js +31 -41
- package/lib/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.js.map +1 -1
- package/package.json +1 -1
@@ -8,5 +8,7 @@ export declare class SolanaWeb3Private extends Web3Private {
|
|
8
8
|
protected readonly Web3Pure: typeof SolanaWeb3Pure;
|
9
9
|
getBlockchainName(): Promise<BlockchainName | undefined>;
|
10
10
|
sendTransaction(options: SolanaTransactionOptions): Promise<string>;
|
11
|
+
private updatePriorityFee;
|
12
|
+
private encodeNumberToArrayLE;
|
11
13
|
constructor(solanaWeb3: SolanaWeb3);
|
12
14
|
}
|
@@ -18,54 +18,21 @@ class SolanaWeb3Private extends web3_private_1.Web3Private {
|
|
18
18
|
const decodedData = options.data.startsWith('0x')
|
19
19
|
? Buffer.from(options.data.slice(2), 'hex')
|
20
20
|
: utils_1.base64.decode(options.data);
|
21
|
-
const tx = web3_js_1.VersionedTransaction.deserialize(decodedData);
|
22
|
-
const txMessage = web3_js_1.TransactionMessage.decompile(tx.message);
|
23
21
|
const { blockhash } = await web3Public.getRecentBlockhash();
|
22
|
+
const tx = web3_js_1.VersionedTransaction.deserialize(decodedData);
|
23
|
+
tx.message.recentBlockhash = blockhash;
|
24
24
|
const avgGas = await injector_1.Injector.web3PublicService
|
25
25
|
.getWeb3Public('SOLANA')
|
26
26
|
.getLastComputeUnits();
|
27
|
-
// tx.message.recentBlockhash = blockhash;
|
28
|
-
// Create the priority fee instructions
|
29
27
|
const computeUnitLimit = avgGas.multipliedBy(1.2).toNumber();
|
30
|
-
const computePriceIx =
|
31
|
-
|
32
|
-
});
|
33
|
-
const computeLimitIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
|
34
|
-
units: computeUnitLimit
|
35
|
-
});
|
36
|
-
txMessage.instructions.push(computePriceIx, computeLimitIx);
|
37
|
-
txMessage.recentBlockhash = blockhash;
|
38
|
-
// const swapIx = tx.message.compiledInstructions.map((ci: MessageCompiledInstruction) => {
|
39
|
-
// const programId = tx.message.staticAccountKeys[ci.programIdIndex]!;
|
40
|
-
// const keys = ci.accountKeyIndexes.map(index => ({
|
41
|
-
// pubkey: tx.message.staticAccountKeys[index]!,
|
42
|
-
// isSigner: tx.message.isAccountSigner(index),
|
43
|
-
// isWritable: tx.message.isAccountWritable(index)
|
44
|
-
// }));
|
45
|
-
// return new TransactionInstruction({
|
46
|
-
// programId,
|
47
|
-
// keys,
|
48
|
-
// data: Buffer.from(ci.data)
|
49
|
-
// });
|
28
|
+
// const computePriceIx = ComputeBudgetProgram.setComputeUnitPrice({
|
29
|
+
// microLamports: 1
|
50
30
|
// });
|
51
|
-
// const
|
52
|
-
//
|
53
|
-
// programId: SWAP_PROGRAM_ID
|
31
|
+
// const computeLimitIx = ComputeBudgetProgram.setComputeUnitLimit({
|
32
|
+
// units: computeUnitLimit
|
54
33
|
// });
|
55
|
-
|
56
|
-
|
57
|
-
// computePriceIx,
|
58
|
-
// computeLimitIx,
|
59
|
-
// ...swapIx
|
60
|
-
// ];
|
61
|
-
// txMessage.instructions.push(computePriceIx, computeLimitIx);
|
62
|
-
// const msgWithGas = new TransactionMessage({
|
63
|
-
// payerKey: new PublicKey(options.fromAddress),
|
64
|
-
// recentBlockhash: blockhash,
|
65
|
-
// instructions
|
66
|
-
// }).compileToV0Message();
|
67
|
-
const txWithGas = new web3_js_1.VersionedTransaction(txMessage.compileToV0Message());
|
68
|
-
const { signature } = await this.solanaWeb3.signAndSendTransaction(txWithGas);
|
34
|
+
this.updatePriorityFee(tx, 1, computeUnitLimit);
|
35
|
+
const { signature } = await this.solanaWeb3.signAndSendTransaction(tx);
|
69
36
|
options.onTransactionHash?.(signature);
|
70
37
|
return signature;
|
71
38
|
}
|
@@ -74,6 +41,29 @@ class SolanaWeb3Private extends web3_private_1.Web3Private {
|
|
74
41
|
throw evm_web3_private_1.EvmWeb3Private.parseError(err);
|
75
42
|
}
|
76
43
|
}
|
44
|
+
updatePriorityFee(tx, computeUnitPrice, computeUnitLimit) {
|
45
|
+
const computeBudgetOfset = 1;
|
46
|
+
const computeUnitPriceData = tx.message.compiledInstructions[1].data;
|
47
|
+
const encodedPrice = this.encodeNumberToArrayLE(computeUnitPrice, 8);
|
48
|
+
for (let i = 0; i < encodedPrice.length; i++) {
|
49
|
+
computeUnitPriceData[i + computeBudgetOfset] = encodedPrice[i];
|
50
|
+
}
|
51
|
+
if (computeUnitLimit) {
|
52
|
+
const computeUnitLimitData = tx.message.compiledInstructions[0].data;
|
53
|
+
const encodedLimit = this.encodeNumberToArrayLE(computeUnitLimit, 4);
|
54
|
+
for (let i = 0; i < encodedLimit.length; i++) {
|
55
|
+
computeUnitLimitData[i + computeBudgetOfset] = encodedLimit[i];
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
encodeNumberToArrayLE(num, arraySize) {
|
60
|
+
const result = new Uint8Array(arraySize);
|
61
|
+
for (let i = 0; i < arraySize; i++) {
|
62
|
+
result[i] = Number(num & 0xff);
|
63
|
+
num >>= 8;
|
64
|
+
}
|
65
|
+
return result;
|
66
|
+
}
|
77
67
|
constructor(solanaWeb3) {
|
78
68
|
super(solanaWeb3.publicKey?.toString() || '');
|
79
69
|
this.solanaWeb3 = solanaWeb3;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solana-web3-private.js","sourceRoot":"","sources":["../../../../../../src/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"solana-web3-private.js","sourceRoot":"","sources":["../../../../../../src/core/blockchain/web3-private-service/web3-private/solana-web3-private/solana-web3-private.ts"],"names":[],"mappings":"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"}
|