Our twitter: https://twitter.com/FTMTeam1
The Aptos NFT Mint project is designed to let users make a mint contract and website ultra fast on Aptos.
An onchain contract which let user to create mint contract fast.
- Set start and finish time for everyone.
- Won't accept your funds if they're out of NFTs to sell.
- Wallet based white list
- Royalties for your NFT
- Asset upload on IPFS
- Integrated with all the marketplace and wallets on Aptos
- Simple website with wallet integrated and monitor your candy machine status
git clone https://github.com/FTM-Labs/AptosNFTMint.git
Thre are a bunch of solutions to generate NFT art and metadata. We recommend to use HashLips. Its simple and flexble.
Basically, you need layered art and use hashlips the generate images and metadata.
The metadata format we need is super simple. (the metadata format you generated from hashlips will work, we will just ignore the other attributes)
{
"attributes": [
{ "trait_type": "Background", "value": "Black" },
{ "trait_type": "Eyeball", "value": "Red" },
{ "trait_type": "Eye color", "value": "Yellow" },
{ "trait_type": "Iris", "value": "Small" },
{ "trait_type": "Shine", "value": "Shapes" },
{ "trait_type": "Bottom lid", "value": "Low" },
{ "trait_type": "Top lid", "value": "Middle" }
]
}
After generated the metadata, put it in a folder with your images. The folder needs to be created like below:
Assets/
├─ Images/
| |- cover.png
│ ├─ 1.png
│ ├─ 2.png
│ ├─ 3.png
│ ├─ ...
├─ metadata/
│ ├─ 1.json
│ ├─ 2.json
│ ├─ ...
where the cover.png
is the cover image for the collection.
The metadata and corresponding image should have the same name, eg: 1.png and 1.json
You need python version 3.9 and above
cd script/third_party
pip3 install -r requirements.txt
Open config.json under src folder (using VS code or other IDE).
"collection": {
"assetDir": "the Assets folder path you created above, eg: /User/ftm/Assets",
"metadataDir": "the metadata folder path you created above, eg: /User/ftm/Assets",
"collectionName": "your collection name, eg: TestCollection",
"collectionDescription": "eg: Follow us on twitter https://twitter.com/FTMTeam1",
"collectionCover": "this is will be updated autmatically",
"collectionSize": "e.g:10000",
"mintFee": "need to be diveded by 1000, eg: if you want 1 aptos as mint, type 1000",
"presaleMintTime": "Unix timestamp, go to https://www.unixtimestamp.com/, covert your desired time to unix time, eg: 1661257636",
"publicMintTime": "Unix timestamp, go to https://www.unixtimestamp.com/, covert your desired time to unix time, eg: 1661257636",
"whitelistDir": "the folder path that contains whitelist.txt."
}
We will be using Pinata to batch upload your images and metadata to ipfs. Pinata is the most used service for upload NFT images and metadata to ipfs.
Register an account -> click the icon on top right -> click API key -> New Key -> enable pinFileToIPFS -> copy your public key and private key.
Open config.json under src folder (using VS code or other IDE).
Set Pinata keys.
"pinata" :{
"pinataApi": "https://api.pinata.cloud/pinning/pinFileToIPFS",
"pinataPublicKey" : "your pinata public key"
"pinataSecretKey" : "your pinata secret key"
}
under src folder, run
python3 cli.py
Choose "Create candy machine"
Create a txt file with you white list info
0x6c4e890a882b013f82a65db9b917a6d285caa892e46f2d93808b56f2aab2dd92 2
0x9d40f83eee59912bed7488d49becd5274ec21c66c40931c9db95a501e03ecee2 3
0x6c4e890a882b013f82a65db9b917a6d285caa892e46f2d93808b56f2aab2dd92 2
each line must have a wallet address and how many can this wallet mint in white list phase
Open config.json under src folder (using VS code or other IDE).
change whitelistDir
"collection": {
"whitelistDir": "the folder path that contains whitelist.txt."
}
under src folder, run
python3 cli.py
Choose "Update WL for existing collection"
Update WL will override the past WL configuration. If you want to add some more wl spots, just add below the previous file and upload it.
You need to have npm installed, we are using nextJS to build this simple website open mint-site folder, run
npm install next react react-dom
then run
npm run dev