Optional: Manually deploying a SeaDrop-compatible contract

Custom Functionality for your smart contract

Our ERC721SeaDrop contract provides the latest in terms of standard NFT smart contract implementations, including:

  • Extending ERC721A to make minting multiple tokens in a single transaction gas-efficient;
  • Support for a public sale and pre-sales using Merkle Tree or server-signed allowlists; and
  • The functionality needed to integrate with OpenSea’s Drops program using SeaDrop

Many creators find that they require some special functionality on their smart contracts for their drops. Our SeaDrop repository has extensions for implementations of a burnable contract and a random offset contract. If you require functionality that is not available in our pre-made contracts, feel free to extend the ERC721SeaDrop contract and add additional functionality. To ensure users have a seamless experience minting your drop on OpenSea, please don’t modify any of the minting functionality.

Deploying a SeaDrop-compatible contract

To deploy a SeaDrop-compatible custom contract, start with ERC721SeaDrop. Clone the repository and install Foundry with the instructions in the ReadMe. To deploy the contract, run

forge create --rpc-url $RPC_URL --private-key $PRIV_KEY --constructor-args "ExampleToken" "ExTkn" \\[0x00005EA00Ac477B1030CE78506496e8C2dE24bf5]

If you don’t need to make any customizations, deploy ERC721SeaDrop as-is with the constructor argument of allowedSeaDrop of 0x00005EA00Ac477B1030CE78506496e8C2dE24bf5. This will allow the SeaDrop contract to have permission to mint on your token contract. If you've already deployed your contract without setting the allowedSeaDrop in the constructor, you can call updateAllowedSeaDrop, available on the token contract interface.

You can customize ERC721SeaDrop by inheriting it and extending it with your own contract functionality. To help ensure users have a seamless experience minting your drop on OpenSea, don't modify any of the minting functionality.

If you have or would like to deploy an upgradeable contract, see the readme in src-upgradeable for more details. For technical questions related to the SeaDrop minting experience and capabilities, you can reference our SeaDrop Developer FAQ.