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