An ERC721 base contract that mints tokens in a pseudo-random order. Because the token is revealed in the same transaction as the mint itself, this contract creates a fun but not fully secure experience.
Move to Solady base ERC721 instead of implementing all the ERC721 stuff ourselves. Simplifies the code, more performant, and gives us token- and address-level data hitchhiking. Downside is we no longer support balances > max(uint32).
Use part of the address-level hitchhiking to implement public numberMinted(address). Implement _setExtraAddressData(uint192) and _getExtraAddressData(address) to let inheriting contracts add additional data without disturbing numberMinted.
Use Solady LibPRNG to simplify PRNG.
Use fewer PRNG seed inputs.
No longer implement stub tokenURI(). Inheriting contracts will need to implement, which was already the norm.
numberMinted(address)
. Implement_setExtraAddressData(uint192)
and_getExtraAddressData(address)
to let inheriting contracts add additional data without disturbing numberMinted.tokenURI()
. Inheriting contracts will need to implement, which was already the norm.Todo: update README