rubic-sdk 5.50.5-alpha.solana.31 → 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 +33 -38
- 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,49 +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 = 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 =
|
34
|
-
|
35
|
-
});
|
36
|
-
|
37
|
-
|
38
|
-
const keys = ci.accountKeyIndexes.map(index => ({
|
39
|
-
pubkey: tx.message.staticAccountKeys[index],
|
40
|
-
isSigner: tx.message.isAccountSigner(index),
|
41
|
-
isWritable: tx.message.isAccountWritable(index)
|
42
|
-
}));
|
43
|
-
return new web3_js_1.TransactionInstruction({
|
44
|
-
programId,
|
45
|
-
keys,
|
46
|
-
data: Buffer.from(ci.data)
|
47
|
-
});
|
48
|
-
});
|
49
|
-
tx.message.recentBlockhash = blockhash;
|
50
|
-
const instructions = [
|
51
|
-
computePriceIx,
|
52
|
-
computeLimitIx,
|
53
|
-
...swapIx
|
54
|
-
];
|
55
|
-
// txMessage.instructions.push(computePriceIx, computeLimitIx);
|
56
|
-
// const msgWithGas = txMessage.compileToV0Message();
|
57
|
-
const msgWithGas = new web3_js_1.TransactionMessage({
|
58
|
-
instructions,
|
59
|
-
payerKey: new web3_js_1.PublicKey(options.fromAddress),
|
60
|
-
recentBlockhash: blockhash
|
61
|
-
}).compileToV0Message();
|
62
|
-
const txWithGas = new web3_js_1.VersionedTransaction(msgWithGas);
|
63
|
-
const { signature } = await this.solanaWeb3.signAndSendTransaction(txWithGas);
|
28
|
+
// const computePriceIx = ComputeBudgetProgram.setComputeUnitPrice({
|
29
|
+
// microLamports: 1
|
30
|
+
// });
|
31
|
+
// const computeLimitIx = ComputeBudgetProgram.setComputeUnitLimit({
|
32
|
+
// units: computeUnitLimit
|
33
|
+
// });
|
34
|
+
this.updatePriorityFee(tx, 1, computeUnitLimit);
|
35
|
+
const { signature } = await this.solanaWeb3.signAndSendTransaction(tx);
|
64
36
|
options.onTransactionHash?.(signature);
|
65
37
|
return signature;
|
66
38
|
}
|
@@ -69,6 +41,29 @@ class SolanaWeb3Private extends web3_private_1.Web3Private {
|
|
69
41
|
throw evm_web3_private_1.EvmWeb3Private.parseError(err);
|
70
42
|
}
|
71
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
|
+
}
|
72
67
|
constructor(solanaWeb3) {
|
73
68
|
super(solanaWeb3.publicKey?.toString() || '');
|
74
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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"}
|