forgex-cli 1.0.16 → 1.0.18
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/src/sol-sdk/pump/instructions/buy.d.ts +2 -2
- package/dist/src/sol-sdk/pump/instructions/buy.d.ts.map +1 -1
- package/dist/src/sol-sdk/pump/instructions/buy.js +26 -5
- package/dist/src/sol-sdk/pump/instructions/buy.js.map +1 -1
- package/dist/src/sol-sdk/pump/instructions/sell.d.ts +1 -1
- package/dist/src/sol-sdk/pump/instructions/sell.d.ts.map +1 -1
- package/dist/src/sol-sdk/pump/instructions/sell.js +27 -3
- package/dist/src/sol-sdk/pump/instructions/sell.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,7 +9,7 @@ import { Connection, PublicKey, Transaction } from '@solana/web3.js';
|
|
|
9
9
|
* @param amount 购买数量
|
|
10
10
|
* @param maxSolCost 最大sol成本
|
|
11
11
|
*/
|
|
12
|
-
export declare function buyInstructions(provider: Provider, buyer: PublicKey, mint: PublicKey, feeRecipient: PublicKey, amount: bigint, maxSolCost: bigint, creator: PublicKey): Promise<Transaction>;
|
|
12
|
+
export declare function buyInstructions(provider: Provider, buyer: PublicKey, mint: PublicKey, feeRecipient: PublicKey, amount: bigint, maxSolCost: bigint, creator: PublicKey, jitoTip?: number): Promise<Transaction>;
|
|
13
13
|
/**
|
|
14
14
|
* 购买SPL代币
|
|
15
15
|
* @param connection
|
|
@@ -21,7 +21,7 @@ export declare function buyInstructions(provider: Provider, buyer: PublicKey, mi
|
|
|
21
21
|
* @param caPrice CA价格
|
|
22
22
|
* @returns
|
|
23
23
|
*/
|
|
24
|
-
export declare const buySPLInstructions: (provider: Provider, payer: PublicKey, caAddr: string, buyAmount: string, // 小数
|
|
24
|
+
export declare const buySPLInstructions: (provider: Provider, payer: PublicKey, caAddr: string, buyAmount: string, // 小数 → lamports
|
|
25
25
|
slippageDecimal: number, caPrice: string, creator: PublicKey, tokenAmount?: string, reserveInfo?: {
|
|
26
26
|
virtual_sol_reserves?: bigint | number;
|
|
27
27
|
virtual_token_reserves?: bigint | number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buy.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/buy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAW,SAAS,EAAoB,WAAW,
|
|
1
|
+
{"version":3,"file":"buy.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/buy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAW,SAAS,EAAoB,WAAW,EAAuC,MAAM,iBAAiB,CAAC;AAmCrI;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,SAAS,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,SAAS,EAClB,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,WAAW,CAAC,CAyDtB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,QAAQ,EAClB,OAAO,SAAS,EAChB,QAAQ,MAAM,EACd,WAAW,MAAM,EAAE,gBAAgB;AACnC,iBAAiB,MAAM,EACvB,SAAS,MAAM,EACf,SAAS,SAAS,EAClB,cAAc,MAAM,EACpB,cAAc;IAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,KAC/K,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAiC/B,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,UAAU,QAAQ,EAClB,OAAO,SAAS,EAChB,QAAQ,MAAM,EACd,eAAe,MAAM,EACrB,YAAY,MAAM,EAClB,SAAS,SAAS,EAClB,OAAO,WAAW,KACjB,OAAO,CAAC,WAAW,CAcrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,YAAY,UAAU,EACtB,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,iBAAiB,MAAM,sBAuCxB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,YAAY,UAAU,EAAE,OAAO,MAAM,oBAUtE,CAAC"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { Program } from '@coral-xyz/anchor';
|
|
2
|
-
import { PublicKey, LAMPORTS_PER_SOL, Transaction } from '@solana/web3.js';
|
|
2
|
+
import { PublicKey, LAMPORTS_PER_SOL, Transaction, ComputeBudgetProgram, SystemProgram } from '@solana/web3.js';
|
|
3
3
|
import { createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddress, TOKEN_2022_PROGRAM_ID, } from '@solana/spl-token';
|
|
4
|
+
// Jito tip instruction
|
|
5
|
+
const tipInstruction = (payer, jitoTipLamports) => {
|
|
6
|
+
// In real code you'd get random tip account from jito
|
|
7
|
+
const jitoTipAccount = new PublicKey("DCzpLmT9oPDcr1pGoZNEQn8cy5WkiVNPfx6f1xzsT9ZQ");
|
|
8
|
+
return SystemProgram.transfer({
|
|
9
|
+
fromPubkey: payer,
|
|
10
|
+
toPubkey: jitoTipAccount,
|
|
11
|
+
lamports: jitoTipLamports,
|
|
12
|
+
});
|
|
13
|
+
};
|
|
4
14
|
import { PUMP_FEE_RECEIPENT, PUMP_FUN_GLOBAL_ACCOUNT } from '../../../const/index.js';
|
|
5
15
|
import { IDL } from '../../../const/IDL/pump-fun.js';
|
|
6
16
|
import { getBondingCurvePDA, getPumpCurveState, getCreatorVaultPDA, getGlobalVolumeAccmulatorPDA, getUserVolumeAccumulatorPDA, } from '../index.js';
|
|
@@ -15,7 +25,8 @@ import BigNumber from 'bignumber.js';
|
|
|
15
25
|
* @param amount 购买数量
|
|
16
26
|
* @param maxSolCost 最大sol成本
|
|
17
27
|
*/
|
|
18
|
-
export async function buyInstructions(provider, buyer, mint, feeRecipient, amount, maxSolCost, creator
|
|
28
|
+
export async function buyInstructions(provider, buyer, mint, feeRecipient, amount, maxSolCost, creator, jitoTip = 100000 // 0.0001 SOL = 100000 lamports
|
|
29
|
+
) {
|
|
19
30
|
let associatedBondingCurve;
|
|
20
31
|
let associatedUser;
|
|
21
32
|
[associatedBondingCurve, associatedUser] = await Promise.all([
|
|
@@ -25,6 +36,12 @@ export async function buyInstructions(provider, buyer, mint, feeRecipient, amoun
|
|
|
25
36
|
const globalVolumeAccumulator = getGlobalVolumeAccmulatorPDA();
|
|
26
37
|
const userVolumeAccumulator = getUserVolumeAccumulatorPDA(buyer);
|
|
27
38
|
let transaction = new Transaction();
|
|
39
|
+
// Add compute budget limit
|
|
40
|
+
transaction.add(ComputeBudgetProgram.setComputeUnitLimit({
|
|
41
|
+
units: 500000,
|
|
42
|
+
}));
|
|
43
|
+
// Add Jito tip
|
|
44
|
+
transaction.add(tipInstruction(buyer, jitoTip));
|
|
28
45
|
transaction.add(createAssociatedTokenAccountIdempotentInstruction(buyer, associatedUser, buyer, mint, TOKEN_2022_PROGRAM_ID));
|
|
29
46
|
let program = new Program(IDL, provider);
|
|
30
47
|
const BondingCurve = getBondingCurvePDA(mint);
|
|
@@ -61,9 +78,11 @@ export async function buyInstructions(provider, buyer, mint, feeRecipient, amoun
|
|
|
61
78
|
* @param caPrice CA价格
|
|
62
79
|
* @returns
|
|
63
80
|
*/
|
|
64
|
-
export const buySPLInstructions = async (provider, payer, caAddr, buyAmount, // 小数
|
|
81
|
+
export const buySPLInstructions = async (provider, payer, caAddr, buyAmount, // 小数 → lamports
|
|
65
82
|
slippageDecimal, caPrice, creator, tokenAmount, reserveInfo) => {
|
|
66
83
|
let receiveAmount;
|
|
84
|
+
const mint = new PublicKey(caAddr);
|
|
85
|
+
const bondingCurve = getBondingCurvePDA(mint);
|
|
67
86
|
if (tokenAmount) {
|
|
68
87
|
receiveAmount = tokenAmount;
|
|
69
88
|
}
|
|
@@ -82,7 +101,7 @@ slippageDecimal, caPrice, creator, tokenAmount, reserveInfo) => {
|
|
|
82
101
|
}
|
|
83
102
|
const solInWithSlippage = Number(buyAmount) * (1 + slippageDecimal);
|
|
84
103
|
const maxSolCost = new BigNumber(solInWithSlippage).toFixed(0);
|
|
85
|
-
const buyTx = await buyInstructions(provider, payer,
|
|
104
|
+
const buyTx = await buyInstructions(provider, payer, mint, PUMP_FEE_RECEIPENT, BigInt(receiveAmount), BigInt(maxSolCost), creator);
|
|
86
105
|
return [receiveAmount, buyTx];
|
|
87
106
|
};
|
|
88
107
|
export const buySPLFromAmountInstructions = async (provider, payer, caAddr, receiveAmount, maxSolCost, creator, redis) => {
|
|
@@ -133,7 +152,9 @@ export const calcCAPrice = async (connection, token) => {
|
|
|
133
152
|
return solPrice;
|
|
134
153
|
};
|
|
135
154
|
async function getPumpTokenInfo(connection, token) {
|
|
136
|
-
const
|
|
155
|
+
const mint = new PublicKey(token);
|
|
156
|
+
const bondingCurve = getBondingCurvePDA(mint);
|
|
157
|
+
const data = await getPumpCurveState(connection, bondingCurve.toBase58());
|
|
137
158
|
return {
|
|
138
159
|
virtual_sol_reserves: Number(data.virtual_sol_reserves),
|
|
139
160
|
virtual_token_reserves: Number(data.virtual_token_reserves),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buy.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/buy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAuB,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"buy.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/buy.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@ import { Keypair, PublicKey, Transaction } from '@solana/web3.js';
|
|
|
3
3
|
export declare const sellSPLInstructions: (provider: Provider, payer: Keypair, caAddr: string, // 要卖的合约地址
|
|
4
4
|
sellAmount: string, // 要卖的数量 单位6个0
|
|
5
5
|
maxSlippage: number, minSolOutput: string, creator: PublicKey) => Promise<Transaction>;
|
|
6
|
-
export declare function sellInstructions(provider: Provider, seller: Keypair, mint: PublicKey, feeRecipient: PublicKey, amount: bigint, minSolOutput: string, maxSlippage: number, creator: PublicKey): Promise<Transaction>;
|
|
6
|
+
export declare function sellInstructions(provider: Provider, seller: Keypair, mint: PublicKey, feeRecipient: PublicKey, amount: bigint, minSolOutput: string, maxSlippage: number, creator: PublicKey, jitoTip?: number): Promise<Transaction>;
|
|
7
7
|
//# sourceMappingURL=sell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sell.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAc,OAAO,EAAE,SAAS,EAAoB,WAAW,
|
|
1
|
+
{"version":3,"file":"sell.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAc,OAAO,EAAE,SAAS,EAAoB,WAAW,EAAuC,MAAM,iBAAiB,CAAC;AAkCrI,eAAO,MAAM,mBAAmB,GAC9B,UAAU,QAAQ,EAClB,OAAO,OAAO,EACd,QAAQ,MAAM,EAAE,UAAU;AAC1B,YAAY,MAAM,EAAE,cAAc;AAClC,aAAa,MAAa,EAC1B,cAAc,MAAM,EACpB,SAAS,SAAS,KACjB,OAAO,CAAC,WAAW,CAarB,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,SAAS,EACvB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,SAAS,EAClB,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,WAAW,CAAC,CAuDtB"}
|
|
@@ -1,24 +1,42 @@
|
|
|
1
1
|
import { Program } from '@coral-xyz/anchor';
|
|
2
|
-
import { PublicKey, Transaction } from '@solana/web3.js';
|
|
3
|
-
import { getAssociatedTokenAddress, TOKEN_2022_PROGRAM_ID, } from '@solana/spl-token';
|
|
2
|
+
import { PublicKey, LAMPORTS_PER_SOL, Transaction, SystemProgram, ComputeBudgetProgram } from '@solana/web3.js';
|
|
3
|
+
import { getAssociatedTokenAddress, createCloseAccountInstruction, TOKEN_2022_PROGRAM_ID, } from '@solana/spl-token';
|
|
4
4
|
import { PUMP_FEE_RECEIPENT } from '../../../const/index.js';
|
|
5
5
|
import { IDL } from '../../../const/IDL/pump-fun.js';
|
|
6
6
|
import { getBondingCurvePDA, getCreatorVaultPDA } from '../index.js';
|
|
7
7
|
import { BN } from 'bn.js';
|
|
8
8
|
import BigNumber from 'bignumber.js';
|
|
9
|
+
// Jito tip instruction copied from buy
|
|
10
|
+
// jitoTipSol is tip amount in SOL units
|
|
11
|
+
const tipInstruction = (payer, jitoTipSol) => {
|
|
12
|
+
// In real code you'd get random tip account from jito
|
|
13
|
+
// For now we keep it simple, you can extend later
|
|
14
|
+
const jitoTipAccount = new PublicKey("DCzpLmT9oPDcr1pGoZNEQn8cy5WkiVNPfx6f1xzsT9ZQ");
|
|
15
|
+
return SystemProgram.transfer({
|
|
16
|
+
fromPubkey: payer.publicKey,
|
|
17
|
+
toPubkey: jitoTipAccount,
|
|
18
|
+
lamports: jitoTipSol * LAMPORTS_PER_SOL,
|
|
19
|
+
});
|
|
20
|
+
};
|
|
9
21
|
export const sellSPLInstructions = async (provider, payer, caAddr, // 要卖的合约地址
|
|
10
22
|
sellAmount, // 要卖的数量 单位6个0
|
|
11
23
|
maxSlippage = 0.01, minSolOutput, creator) => {
|
|
12
24
|
const sellTx = await sellInstructions(provider, payer, new PublicKey(caAddr), PUMP_FEE_RECEIPENT, BigInt(new BigNumber(sellAmount).toFixed(0)), minSolOutput, maxSlippage, creator);
|
|
13
25
|
return sellTx;
|
|
14
26
|
};
|
|
15
|
-
export async function sellInstructions(provider, seller, mint, feeRecipient, amount, minSolOutput, maxSlippage, creator) {
|
|
27
|
+
export async function sellInstructions(provider, seller, mint, feeRecipient, amount, minSolOutput, maxSlippage, creator, jitoTip = 0.0001) {
|
|
16
28
|
const [associatedBondingCurve, associatedUser] = await Promise.all([
|
|
17
29
|
getAssociatedTokenAddress(mint, getBondingCurvePDA(mint), true, TOKEN_2022_PROGRAM_ID),
|
|
18
30
|
getAssociatedTokenAddress(mint, seller.publicKey, false, TOKEN_2022_PROGRAM_ID),
|
|
19
31
|
]);
|
|
20
32
|
const creatorVault = creator ? getCreatorVaultPDA(creator) : undefined;
|
|
33
|
+
const connection = provider.connection;
|
|
34
|
+
const balance = await connection.getTokenAccountBalance(associatedUser);
|
|
21
35
|
let transaction = new Transaction();
|
|
36
|
+
// Add compute budget limit
|
|
37
|
+
transaction.add(ComputeBudgetProgram.setComputeUnitLimit({
|
|
38
|
+
units: 500000,
|
|
39
|
+
}));
|
|
22
40
|
const minSolOutputWithSlippage = new BigNumber(minSolOutput).times(1 - maxSlippage).toFixed(0);
|
|
23
41
|
let program = new Program(IDL, provider);
|
|
24
42
|
transaction.add(await program.methods
|
|
@@ -34,6 +52,12 @@ export async function sellInstructions(provider, seller, mint, feeRecipient, amo
|
|
|
34
52
|
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
35
53
|
})
|
|
36
54
|
.instruction());
|
|
55
|
+
// Add Jito tip
|
|
56
|
+
transaction.add(tipInstruction(seller, jitoTip));
|
|
57
|
+
// Close ATA if selling all tokens
|
|
58
|
+
if (balance.value && BigInt(balance.value.amount) === amount) {
|
|
59
|
+
transaction.add(createCloseAccountInstruction(associatedUser, seller.publicKey, seller.publicKey, [], TOKEN_2022_PROGRAM_ID));
|
|
60
|
+
}
|
|
37
61
|
return transaction;
|
|
38
62
|
}
|
|
39
63
|
//# sourceMappingURL=sell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sell.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAuB,SAAS,
|
|
1
|
+
{"version":3,"file":"sell.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/sell.ts"],"names":[],"mappings":"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"}
|