Skip to content

Instantly share code, notes, and snippets.

@fabdarice
Created October 17, 2021 03:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fabdarice/06498b3a5bdc93f920116b8091096900 to your computer and use it in GitHub Desktop.
Save fabdarice/06498b3a5bdc93f920116b8091096900 to your computer and use it in GitHub Desktop.
NFT Drop - Best Practices
##NFT Drop - Best Practices
Every successful NFT projects start with a great idea, great artists, an amazing team, and a dedicated, enthused community.
But one aspect that most NFT projects tend to neglect is the minting process.
As someone participating in a dozen drops weekly, I often witness NFT drops that end up with the majority of the faithful community members wasting hundreds of dollars (or thousands) on gas, being front-run by bots (like mine), and with a distribution of the supply being lower than 30% ownership.
If you have 50K discord members, and a 10K supply, even team should aim for a distribution as close to 100% ownership as possible.
Building a successful NFT drop is difficult; You have to think like those bots, think one or two steps ahead and lay traps for them.
A successful NFT drop can essentially be summarized by four aspects:
1) no gas wasted for users who are not eligible to mint
2) prevent contract access or repeated identical wallets to mint
3) making it as difficult as possible for bots to detect when the minting process starts
4) Enforcing the mint through a website (opposed to be able to mint via the contract directly)
There's more than one way to skin a cat, but here's a handful of best practices and techniques to optimize your contract for the above:
- using signatures, both free for the users, and very gas-efficient for the admins (this techniques can also be used by admins over whitelisting addresses, which can save you ten of thousands of dollars)
- combining signatures with on-chain verifiable randomness for the raffle
- limiting number of mint per address opposed to per transaction
- preventing contracts from minting
- combining minting with a random value (nonce) provided via strict access to the website
- recaptcha or SSO via twitter or discord on the website to minimize the ability to script
- not revealing the contract address or the minting process until the mint day
- using flashbots for sending the transaction for activating the mint
- changing the owner of the contract right before activating the mint
- changing the price of the mint (by 1 Wei) right before activating the contract
Building a successful NFT drops shouldn't be a 2nd priority, and is equally as important to maintain a faithful community.
Feel free to reach out to me @ https://twitter.com/fabdarice if you ever need help on that front.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment