I'm new to ethereum development and NFTs. I've read https://www.paradigm.xyz/2021/10/a-guide-to-designing-effective-nft-launches/ and the more about the meebits exploit.
Two of the requirements for the NFT contract I'm trying to write is it must be a non-exploitable random, and it should only require one transaction to purchase an NFT. Using VRF is not desirable because of the client thinks it is too costly.
I've been racking my brain to figure out if this is possible, and have come up with a solution that I'm sure has a weakness that I don't know about so I wanted to pitch it here and get the advice of people who have a lot more experience.
When you mint you essentially mint a mystery box and create a "random" number like meebits that is stored:
uint index = uint(keccak256(abi.encodePacked(nonce, msg.sender, block.difficulty, block.timestamp))) % totalSize;
Then, you open the last mystery box that was minted, by rolling another random index like above and combining it with the random number rolled by the that mystery boxes transaction to come up with a new final NFT index.
Now a NFT resolves over two transactions so it can't be exploited like meebits.
Is this possible or am I wasting my time?