Fix for when median is not divisible by tick
This commit is contained in:
parent
dc167a92bb
commit
1c6c46400e
|
@ -110,9 +110,8 @@ export const getFairLaunchState = async (
|
|||
console.log('No ticket');
|
||||
}
|
||||
|
||||
const fairLaunchLotteryBitmap = ( //@ts-ignore
|
||||
await getFairLaunchLotteryBitmap(state.tokenMint)
|
||||
)[0];
|
||||
const fairLaunchLotteryBitmap = //@ts-ignore
|
||||
(await getFairLaunchLotteryBitmap(state.tokenMint))[0];
|
||||
|
||||
return {
|
||||
id: fairLaunchId,
|
||||
|
@ -142,9 +141,8 @@ export const punchTicket = async (
|
|||
)
|
||||
)[0];
|
||||
|
||||
const fairLaunchLotteryBitmap = ( //@ts-ignore
|
||||
await getFairLaunchLotteryBitmap(fairLaunch.state.tokenMint)
|
||||
)[0];
|
||||
const fairLaunchLotteryBitmap = //@ts-ignore
|
||||
(await getFairLaunchLotteryBitmap(fairLaunch.state.tokenMint))[0];
|
||||
|
||||
const buyerTokenAccount = (
|
||||
await getAtaForMint(
|
||||
|
@ -155,7 +153,11 @@ export const punchTicket = async (
|
|||
)[0];
|
||||
|
||||
if (ticket.amount.toNumber() > fairLaunch.state.currentMedian.toNumber()) {
|
||||
console.log('Adjusting down...');
|
||||
console.log(
|
||||
'Adjusting down...',
|
||||
ticket.amount.toNumber(),
|
||||
fairLaunch.state.currentMedian.toNumber(),
|
||||
);
|
||||
const { remainingAccounts, instructions, signers } =
|
||||
await getSetupForTicketing(
|
||||
fairLaunch.program,
|
||||
|
@ -390,8 +392,9 @@ export const purchaseTicket = async (
|
|||
);
|
||||
|
||||
if (ticket) {
|
||||
const fairLaunchLotteryBitmap = //@ts-ignore
|
||||
(await getFairLaunchLotteryBitmap(fairLaunch.state.tokenMint))[0];
|
||||
const fairLaunchLotteryBitmap = ( //@ts-ignore
|
||||
await getFairLaunchLotteryBitmap(fairLaunch.state.tokenMint)
|
||||
)[0];
|
||||
console.log(
|
||||
'Anchor wallet',
|
||||
anchorWallet.publicKey.toBase58(),
|
||||
|
|
|
@ -269,7 +269,7 @@ pub mod fair_launch {
|
|||
return Err(ErrorCode::CannotBuyTicketsOutsidePhaseOne.into());
|
||||
}
|
||||
|
||||
assert_valid_amount(&fair_launch.data, amount)?;
|
||||
assert_valid_amount(&fair_launch, amount)?;
|
||||
|
||||
fair_launch_ticket.fair_launch = fair_launch.key();
|
||||
fair_launch_ticket.buyer = *buyer.key;
|
||||
|
@ -465,7 +465,7 @@ pub mod fair_launch {
|
|||
}
|
||||
|
||||
if amount != 0 {
|
||||
assert_valid_amount(&fair_launch.data, amount)?;
|
||||
assert_valid_amount(&fair_launch, amount)?;
|
||||
} else {
|
||||
// going from not zero to zero
|
||||
fair_launch.number_tickets_dropped = fair_launch
|
||||
|
|
|
@ -352,13 +352,13 @@ pub fn get_expected_capital_alotment_size(
|
|||
Ok(divided as u64)
|
||||
}
|
||||
|
||||
pub fn assert_valid_amount(data: &FairLaunchData, amount: u64) -> ProgramResult {
|
||||
if amount < data.price_range_start || amount > data.price_range_end {
|
||||
pub fn assert_valid_amount(fair_launch: &FairLaunch, amount: u64) -> ProgramResult {
|
||||
if amount < fair_launch.data.price_range_start || amount > fair_launch.data.price_range_end {
|
||||
return Err(ErrorCode::InvalidPurchaseAmount.into());
|
||||
}
|
||||
|
||||
if let Some(val) = amount.checked_rem(data.tick_size) {
|
||||
if val > 0 {
|
||||
if let Some(val) = amount.checked_rem(fair_launch.data.tick_size) {
|
||||
if val > 0 && amount != fair_launch.current_median {
|
||||
return Err(ErrorCode::InvalidPurchaseAmount.into());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue