Oh yeah, rug pull seems to be working...
This commit is contained in:
parent
ccc51ffc84
commit
8916935b22
|
@ -22,6 +22,7 @@ import {
|
|||
} from './helpers/accounts';
|
||||
import { chunks, getMultipleAccounts, sleep } from './helpers/various';
|
||||
import { createAssociatedTokenAccountInstruction } from './helpers/instructions';
|
||||
import { sendTransactionWithRetryWithKeypair } from './helpers/transactions';
|
||||
program.version('0.0.1');
|
||||
|
||||
if (!fs.existsSync(CACHE_PATH)) {
|
||||
|
@ -761,6 +762,27 @@ program
|
|||
'Punching ticket for buyer',
|
||||
ticket.model.buyer.toBase58(),
|
||||
);
|
||||
const diff =
|
||||
ticket.model.amount.toNumber() -
|
||||
//@ts-ignore
|
||||
fairLaunchObj.currentMedian.toNumber();
|
||||
if (diff > 0) {
|
||||
console.log(
|
||||
'Refunding first',
|
||||
diff,
|
||||
'to buyer before punching',
|
||||
);
|
||||
await adjustTicket({
|
||||
//@ts-ignore
|
||||
amountNumber: fairLaunchObj.currentMedian.toNumber,
|
||||
fairLaunchObj,
|
||||
adjuster: ticket.model.buyer,
|
||||
fairLaunch,
|
||||
fairLaunchTicket: ticket.key,
|
||||
fairLaunchLotteryBitmap,
|
||||
anchorProgram,
|
||||
});
|
||||
}
|
||||
const buyerTokenAccount = await punchTicket({
|
||||
payer: walletKeyPair,
|
||||
puncher: ticket.model.buyer,
|
||||
|
@ -880,6 +902,29 @@ program
|
|||
await getFairLaunchLotteryBitmap(fairLaunchObj.tokenMint)
|
||||
)[0];
|
||||
|
||||
const ticket = await anchorProgram.account.fairLaunchTicket.fetch(
|
||||
fairLaunchTicket,
|
||||
);
|
||||
|
||||
const diff =
|
||||
//@ts-ignore
|
||||
ticket.amount.toNumber() -
|
||||
//@ts-ignore
|
||||
fairLaunchObj.currentMedian.toNumber();
|
||||
if (diff > 0) {
|
||||
console.log('Refunding first', diff, 'to buyer before punching');
|
||||
await adjustTicket({
|
||||
//@ts-ignore
|
||||
amountNumber: fairLaunchObj.currentMedian.toNumber,
|
||||
fairLaunchObj,
|
||||
//@ts-ignore
|
||||
adjuster: ticket.buyer,
|
||||
fairLaunch,
|
||||
fairLaunchTicket,
|
||||
fairLaunchLotteryBitmap,
|
||||
anchorProgram,
|
||||
});
|
||||
}
|
||||
const buyerTokenAccount = await punchTicket({
|
||||
puncher: walletKeyPair.publicKey,
|
||||
payer: walletKeyPair,
|
||||
|
@ -895,6 +940,65 @@ program
|
|||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('burn_fair_launch_tokens_warning_irreversible')
|
||||
.option(
|
||||
'-e, --env <string>',
|
||||
'Solana cluster env name',
|
||||
'devnet', //mainnet-beta, testnet, devnet
|
||||
)
|
||||
.option(
|
||||
'-k, --keypair <path>',
|
||||
`Solana wallet location`,
|
||||
'--keypair not provided',
|
||||
)
|
||||
.option('-f, --fair-launch <string>', 'fair launch id')
|
||||
.option('-n, --number <string>', 'number to burn')
|
||||
.action(async (_, cmd) => {
|
||||
const { env, keypair, fairLaunch, number } = cmd.opts();
|
||||
|
||||
const actual = parseInt(number);
|
||||
const walletKeyPair = loadWalletKey(keypair);
|
||||
const anchorProgram = await loadFairLaunchProgram(walletKeyPair, env);
|
||||
|
||||
const fairLaunchKey = new anchor.web3.PublicKey(fairLaunch);
|
||||
const fairLaunchObj = await anchorProgram.account.fairLaunch.fetch(
|
||||
fairLaunchKey,
|
||||
);
|
||||
|
||||
const myTokenAccount = (
|
||||
await getAtaForMint(
|
||||
//@ts-ignore
|
||||
fairLaunchObj.tokenMint,
|
||||
walletKeyPair.publicKey,
|
||||
)
|
||||
)[0];
|
||||
|
||||
const instructions = [
|
||||
Token.createBurnInstruction(
|
||||
TOKEN_PROGRAM_ID,
|
||||
//@ts-ignore
|
||||
fairLaunchObj.tokenMint,
|
||||
myTokenAccount,
|
||||
walletKeyPair.publicKey,
|
||||
[],
|
||||
actual,
|
||||
),
|
||||
];
|
||||
|
||||
await sendTransactionWithRetryWithKeypair(
|
||||
anchorProgram.provider.connection,
|
||||
walletKeyPair,
|
||||
instructions,
|
||||
[],
|
||||
'single',
|
||||
);
|
||||
|
||||
console.log(
|
||||
`Burned ${actual} tokens in account ${myTokenAccount.toBase58()}.`,
|
||||
);
|
||||
});
|
||||
|
||||
program
|
||||
.command('start_phase_three')
|
||||
.option(
|
||||
|
|
|
@ -600,6 +600,10 @@ pub mod fair_launch {
|
|||
return Err(ErrorCode::CannotPunchTicketUntilPhaseThree.into());
|
||||
}
|
||||
|
||||
if fair_launch_ticket.amount != fair_launch.current_median {
|
||||
return Err(ErrorCode::CannotPunchTicketUntilEqualized.into());
|
||||
}
|
||||
|
||||
let (mask, index) = get_mask_and_index_for_seq(fair_launch_ticket.seq)?;
|
||||
|
||||
let is_winner = fair_launch_lottery_bitmap.to_account_info().data.borrow()
|
||||
|
@ -1331,4 +1335,6 @@ pub enum ErrorCode {
|
|||
InvalidAntiRugTokenRequirement,
|
||||
#[msg("Cannot punch ticket until phase three")]
|
||||
CannotPunchTicketUntilPhaseThree,
|
||||
#[msg("Cannot punch ticket until you have refunded the difference between your given price and the median.")]
|
||||
CannotPunchTicketUntilEqualized,
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue