π³Launch NFT

Enter the Launch interface, where you need to fill in the following key information.

Below, we will detail two critical parameters: Initial Price and Base URI.
Initial Price
Initial Price serves as the base pricing for the NFT. Flip implements an innovative dynamic pricing mechanism (bonding curve), where the NFT price automatically adjusts based on the minted quantity. The specific pricing formula is:

Where:
initialPrice: The base price you set for the NFT
supply: The current number of minted NFTs
maxSupply: The maximum total supply of NFTs
Price Curve Characteristics:
Follows a parabolic trajectory
Early minting stage: Lower price with a fast growth rate
Later minting stage: Higher price with a slower growth rate
From the above curve consensus, we can conclude: when supply equals maxSupply, the price reaches its maximum, which is 2001 Γ initialPrice.
For example, when initialPrice = 0.001 ETH and maxSupply = 10,000, the price ceiling approaches 2 ETH.
Base URI
Base URI defines the root path for accessing NFT metadata, determining how information for each NFT is retrieved. Flip is fully compatible with OpenSeaβs metadata standards and supports contract-level metadata.
In the smart contract, the Base URI is used to concatenate suffixes to retrieve information for individual NFTs and NFT collections. The implementation is as follows:
function _baseURI() internal view override returns (string memory) {
return baseURI;
}
// Retrieve the metadata URL for a single NFT
// Use baseURI as the base path, appending tokenId and filename
function tokenURI(uint256 tokenId) public view override virtual returns (string memory) {
_requireOwned(tokenId);
return bytes(baseURI).length > 0 ? string.concat(baseURI, "/", tokenId.toString(), ".json") : "";
}
// Retrieve the metadata URL for collection information
// Use baseURI as the base path, appending the collection metadata filename
function contractURI() public view returns (string memory) {
return bytes(baseURI).length > 0 ? string.concat(baseURI, "/collection.json") : "";
}
Thus, the rules for accessing NFT metadata are:
For a single NFT: Access via https://baseURI/[tokenId].json to retrieve its information (where tokenId starts from 1).
For the NFT collection: Access via https://baseURI/collection.json to retrieve its information.
Single NFT Metadata describes the attributes of an individual NFT, such as name, description, image, etc. The file must follow the ERC-721 standard, with a basic format as follows:
{
"name": "FLIP #1", // NFT name, recommended to include token ID
"description": "FLIP NFT is an NFT standard constructed using the Bonding Curve algorithm",
"image": "https://ipfs.io/ipfs/bafkreicxcqiu6xur2sqp5vnpbaq5ksy43pbe3i3ymldkqogmtg5erq4nje"
}
Collection Metadata describes the attributes of the collection, such as name, symbol, description, image, banner image, etc. The file must follow the standard format, as shown below:
{
"name": "FLIP TEST",
"symbol": "FLIP",
"description": "FLIP NFT is an NFT standard constructed using the Bonding Curve algorithm",
"image": "https://ipfs.io/ipfs/bafkreicxcqiu6xur2sqp5vnpbaq5ksy43pbe3i3ymldkqogmtg5erq4nje",
"banner_image": "https://ipfs.io/ipfs/bafkreigqflltl7xwqv6wmp2yxgnosdlmlr2d5y36ne2zm2vtmiapgozawa"
}
Once all parameters are defined, store the content in a publicly accessible link, such as decentralized storage like IPFS. The recommended storage structure is:
Project/
βββ Metadata/
β βββ collection.json # Collection metadata
β βββ 1.json # NFT #1 metadata
β βββ 2.json # NFT #2 metadata
β βββ ... # Other NFT metadata
βββ Images/
βββ 1.png # NFT #1 image
βββ 2.png # NFT #2 image
βββ ... # Other NFT images
Note: When storing on decentralized storage like IPFS, first upload the images in the Images folder, then replace the image URLs in the metadata with the corresponding CIDs before uploading the Metadata folder.
Last updated