Submitted by OMEN, also found by p0wd3r, KupiaSec, gesha17, and kutugu
The mintWithBudget function uses a dynamic pricing mechanism without implementing slippage protection. Given the specific pricing parameters, this can lead to users paying more than anticipated for their NFTs, especially for larger mints or mints occurring later in a generation. Specific impacts include:
The current implementation calculates the mint price for each NFT individually within the minting loop:
Consider the following scenario:
User calculates that they can mint 100 NFTs with a budget of 12.75 ETH when 5000 NFTs have been minted in the current generation.
They can now only mint 99 NFTs (12.75 / 0.128725  99.04).
Actual outcome:
This scenario demonstrates how the lack of slippage protection in the dynamic pricing mechanism can lead to users receiving fewer NFTs than they anticipated or paying more per NFT than expected, due to price increases caused by other users minting activities between the time of calculation and the transaction being processed.
Add slippage protection.
Context
