Studio 721 is a free tool for configuring, compiling, deploying, and verifying custom ERC 721 NFT smart contracts. Studio 721 doesn't host your assets or metadata; use your favorite hosting service and link it to your NFT via "Token URI". Not sure where to start? There's a video walkthrough!Created by @dvnabbott
Preview of Token
Name
Abbreviation
Supply
Price
Royalties
Token URI
Contract URI

Minting Options

Preset
Reduce deployment costs
Multimint
Minting limit per wallet
Mint specific ids
Require access token
Only the owner can mint
Enumerable
Minting starts active
Approval Proxy
Set token URIs individually

Token Parameters

Payout

Share
Recipient Address

Allowlist

Amount
Allowed Address

Contract Verification

Etherscan API Key
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract TestToken is ERC721, ReentrancyGuard, Ownable {
using Counters for Counters.Counter;
constructor(string memory customBaseURI_) ERC721("TestToken", "TTKN") {
customBaseURI = customBaseURI_;
}
/** MINTING **/
uint256 public constant MAX_SUPPLY = 2000;
Counters.Counter private supplyCounter;
function mint() public nonReentrant {
require(saleIsActive, "Sale not active");
require(totalSupply() < MAX_SUPPLY, "Exceeds max supply");
_mint(msg.sender, totalSupply());
supplyCounter.increment();
}
function totalSupply() public view returns (uint256) {
return supplyCounter.current();
}
/** ACTIVATION **/
bool public saleIsActive = false;
function setSaleIsActive(bool saleIsActive_) external onlyOwner {
saleIsActive = saleIsActive_;
}
/** URI HANDLING **/
string private customBaseURI;
function setBaseURI(string memory customBaseURI_) external onlyOwner {
customBaseURI = customBaseURI_;
}
function _baseURI() internal view virtual override returns (string memory) {
return customBaseURI;
}
}
// Contract created with Studio 721 v1.5.0
// https://721.so