How to create an SLP NFT that displays artwork properly on both SLP Explorer and juungle.net!
UPDATE - This article is somewhat deprecated if you know Typescript. The good folks at Juungle have been working on their own built-in NFT maker, but while you wait for them to finish that up, they've provided a tool to help you make your NFTs: The Fungal Spore Exploder. I'm told it can help you make them quicker, but I personally haven't had a chance to give it a thorough look.
Special thanks and shout-outs:
JT Freeman for walking me through the process, and for developing the technology that made it all possible!
u/Sir_Shibes for pointing me in the right direction.
CeriCat for aiding in my research and for helping me keep my head on my shoulders for countless years now.
Software that you will need:
Electron Cash SLP - Keep in mind that this is currently a desktop-only solution. You will not be able to fully follow this tutorial on a mobile device.
Your favorite image editor. Gimp is a free and powerful solution.
GitHub Desktop, or if you are already familiar with command-line GitHub and have it installed, you can use that. This is for if you wish to host your artwork on GitHub Pages, and also for the purpose of verifying your NFT. You can still use your own hosting if you already have it, but you still need GitHub for the verification process. Make sure you have a GitHub account and some form of GitHub installed before proceeding with this tutorial. This tutorial will only cover usage of GitHub Desktop, but if you're using command-line GitHub you probably know how to follow along anyways.
I, like most people, first followed this tutorial on my first attempt at creating an NFT. It is a great tutorial, but if you follow it like I did, you'll realize that when you're done, SLP Explorer doesn't display your beautiful artwork, and even worse, neither does the premier NFT marketplace, juungle.net! This became quite the headache for me, but I didn't give up.
During my research, I examined a few of the Waifu tokens on SLP Explorer. The reason for this is they are currently the most prominent NFT available for sale on juungle, and even more importantly, their images display properly on both SLP Explorer and juungle! I noticed a few key differences between the Waifu tokens and my NFT token that I minted while following the tutorial mentioned previously:
My NFT was a Parent/Group token, while the Waifu tokens were all Child tokens of the WGRP Parent/Group token. The Waifu tokens all display their respective artwork, while the WGRP token does not display any artwork, as it doesn't represent only one piece of artwork, but rather all of the Waifu tokens as a group.
Following the tutorial, I had set the document URL of my NFT to the IPFS link that hosted the artwork for my NFT. However, all of the Waifu tokens had the same document URL: waifufaucet.com.
I had burned the minting baton during creation of my NFT because of my intent for it to be one-of-a-kind (and because the tutorial tells you to choose "Fixed Supply"), however, the WGRP tokens still have a live minting baton, which means more tokens can be minted if/when needed.
So my next step in research was to figure out how to create a Parent/Group token with child tokens. I found this page with all the technical details of the process, but to tell the truth I didn't understand it much at all. I had trouble wrapping my head around the concept of creating tokens and burning them to create NFT. I was still pretty lost. u/Sir_Shibes on reddit had hooked me up with JT Freeman's contact info earlier, and this is when I decided to contact them. It turns out that JT Freeman is the dev responsible for SLP Explorer AND juungle, and is the creator of the Waifu tokens! I should have contacted them so much sooner! JT Freeman graciously walked me through the process, so finally, it is time for me to pay it forward and do the same for you.
Step 1. Mint the Parent/Group token for your NFT
Open Electron Cash SLP.
If you don't already have a wallet created, go ahead and do so by choosing File-->New/Restore. You can also import an existing wallet with your 12-word mnemonic by choosing "Standard wallet" and then "I already have a seed". If you import an existing wallet, it will ask for a derivation path and will provide you with examples of derivation paths for BTC, BCH, and SLP. You will need to find the derivation path for the original wallet that you are attempting to import from. I can tell you that as of this writing, Bitcoin.com and signup.cash wallets both use the BTC derivation path. This may change in the future, but if you get it wrong the first time, don't panic. You can always delete the newly-imported wallet from Electron Cash SLP and re-import it with the correct derivation path. Pro-tip: If you accidentally send your NFT to an incompatible wallet, such as the Bitcoin.com wallet, importing it into Electron Cash SLP this way is one way to save your NFT from entering the abyss!
Fund your wallet with some Bitcoin Cash (BCH) if you haven't already. Keep in mind that whenever you mint a token of any kind, you will need a little under $0.01 worth of BCH for mining fees. If you have a dollar's worth of BCH, I'd recommend dropping it into your wallet. You won't need anywhere near a full dollar to complete the process, but having more than you need will prevent you from having to worry about frequently funding your wallet. You can always send whatever you don't use back to your wallet of choice.
Click on the Tokens tab.
Click on Create New Token.
Name your Parent/Group token. Keep in mind that because this is the Parent/Group token and not one of the Child tokens, you won't be linking any specific NFT to this token alone. So name it accordingly. For example, the WGRP token mentioned earlier is named "Waifu Faucet". In my case, I am minting tokens for my brother, photoyshop on Instagram, so I named the Parent/Group token "PHOTOYSHOP". Choose a name that will represent all of your NFT tokens. This can be your name, your handle, or anything else that represents your artwork.
Give your Parent/Group token a Ticker Symbol. As mentioned earlier, the Parent/Group token for the Waifu tokens is called "WGRP", which I can only assume means "Waifu Group". I kept mine simple and also called the Ticker Symbol for my Parent/Group token "PHOTOYSHOP". Keep in mind this is the first thing people will see when they look this token up in SLP Explorer, so choose wisely.
Provide a Document URL. In the previous tutorial, we were told to provide the IPFS link in this textbox. However, because you will be hosting your own artwork, you can put whatever you want here. This is why the Waifu tokens have "waifufaucet.com" in this spot. For my NFT, I put a link to my brother's Instagram, which is where his online presence resides. I recommend putting something that represents either your artwork, or at least yourself, like a personal web page, gallery, or portfolio. But at the end of the day, this one's up to you!
Keep the Decimal Places set to 0. This ensures the actual creation of NFT.
Choose an initial quantity of tokens to mint. So the way this works is for every time you mint a Child token of this Parent/Group token, a minted token will be burned to create the Child NFT. Think of it like evolving a Pokemon. You lose something but gain something else that is an evolved version of what you lost. For my brother's NFT, I chose a number of tokens more-than-double the amount of artwork he has produced. So for example, he has produced more than 800 pieces of toy photography, so I minted 2000 tokens. This should be more than enough for him to double his output over a long period of time. Don't worry too much about this for now. Just know that the more you mint now, the less you will have to mint later (and the less BCH you will spend on doing so).
Do not change the Token Receiver Address. Electron Cash SLP will automatically populate the Token Receiver Address with your wallet address. I highly recommend that you do not change this address as you will be working within your Electron Cash SLP wallet during the course of this tutorial.
Uncheck Fixed Supply. Contrary to the other tutorial, you don't want to burn the minting baton for your Parent/Group token. By not limiting yourself to a fixed supply, you can mint as many NFT as you need to in the future. If at the end of the day you retire from producing art or worse, any unused tokens and the minting baton can be burned to represent this. But for now, we're just getting started. Keep your options open.
Check "Is NFT Parent?". This is very important. By checking this box, you're indicating that you want to produce a Child NFT from this Parent/Group token.
Double and triple-check your work! As they say, measure three times and cut once. Making sure all of your input is correct is a crucial step in ensuring that you produce a desired result.
Click Create New Token. This is the final step in minting your Parent/Group token. If your wallet is encrypted, you will be prompted to enter your password. When the process is complete, your wallet will be charged a very small mining fee (usually less than $0.01 in BCH), and your wallet will be funded with the tokens that you minted.
Step 2: Mint your first Child NFT
Make sure you are on the Tokens tab in Electron Cash SLP.
Right-click on your newly-minted Parent/Group token.
Click on Create New NFT.
Click on Prepare Group Parent - This splits the parent so that you can create Child tokens from it.
Give your new NFT a unique name. Keep in mind that this is the actual NFT that will be forever linked to your artwork that (hopefully) people will want to buy. Make sure that it has a name that stands out from the rest. For example the Waifu tokens are all named after the actual waifu character that they represent.
Set the Ticker Symbol for your new NFT. For example, the Ticker Symbol for the Waifu tokens is "WAIFU". In the case of my NFT, I just put "PHOTOYSHOP" again. Like the Parent/Group token, the Ticker Symbol is the first thing people see when they view your NFT on SLP Explorer. Again, choose wisely.
Enter the Document URL. Again you can put whatever you want here, but I recommend using the same Document URL that you used for the Parent/Group token. For example, I used my brother's Instagram for the NFT just like I did for its Parent/Group token.
Don't change the Token Receiver Address. Same as before.
Click Create NFT. Again you will be prompted for your password and then charged a mining fee to mint your NFT. One of your already-minted tokens from before will also be burned during creation of the NFT.
Step 3: Prepare and host the artwork for your NFT
On your hosting server, create the following file and folder structure:
Using your favorite image editing software, convert your artwork to a PNG file, and for its name, give it the Token ID of your NFT. You can obtain the Token ID by right-clicking the NFT in the Tokens tab in Electron Cash SLP, clicking View Token Details, and then copying the Token ID.
Save your PNG in the "original" folder. For example, for my brother's first NFT, I named the file "7c1ee88d3eb9d89372734087bcb2ca2aa66ff06cb79bbe6f0034a43b2ae37293.png" and placed it in the "original" folder.
Using your favorite image editor, create a square version of your artwork. Depending on the art, you might have to crop the art to do this. So if you do have to do that, try to crop out the most representative portion of the art. Save this square version somewhere outside of the hosting service, but also somewhere that is easily accessible for you.
Using the square version of your art, create scaled-down versions in the following sizes: 128x128, 64x64, and 32x32. Make sure to place them in their respective folders. For example, the 128x128 version will go into the "128" folder, and so on and so forth. Make sure all of these files share the exact same name and file type as the file you saved in the "original" folder! That means each image will be referenced first by its size and then by the Token ID.
Edit the README.md file with a text editor to say whatever you want. Here is an example of what I put in mine:
By now, each folder should have one PNG in them each, all sharing the same name. They should all be hosted on your favorite hosting service, whether it be GitHub Pages or something else, and available on the internet. Now you are ready to verify your tokens!
Step 4: Verify your tokens
Open up GitHub Desktop and make sure you are logged in.
Navigate to the SLP Explorer GitHub Page.
Click on Code and then Open with GitHub Desktop.
If your browser prompts you, go ahead and allow it to open GitHub Desktop. You should already have it opened by now so this should speed up the loading time for you.
Allow GitHub Desktop to clone the repository.
Navigate to your local GitHub folder and find the SLP Explorer folder "slp-explorer". Inside the SLP Explorer folder, enter the "public" folder. Inside the "public" folder, right-click on "group_icon_repos.json" and open it in either a text editor or a code editor. I recommend a code editor like VS Code, but Notepad should also do the trick.
Remember when you copied the Token ID of the NFT? You're now going to want to do the same thing, but only this time for the original Parent/Group token that you first minted before minting the NFT. It's the same process: Right click on the Parent/Group token, click View Token Details, and then copy the Token ID.
Back to the group_icon_repos JSON file, you want to add an additional entry. First, add a comma (,) to the end of the last entry and then press Enter for a new line. On that new line, in double-quotes, you want to paste the Parent/Group Token ID that you just copied in the last step. After the closing set of double-quotes, input a colon (:). Add a space, and then again in double quotes, type or copy & paste the URL of the artwork server you set up before. Save the file.
GitHub Desktop should automatically detect the change that you made to the file. Give the commit a header and a description, and then click on Commit to master.
In GitHub Desktop, click on Branch at the top menu, and then click Create pull request.
GitHub Desktop will then ask if you wish to Push the commit. Go ahead and Push the commit.
It will then ask if you wish to fork the repository because you don't have write access. Go ahead and fork the repository.
Next it will ask you how you wish to use the fork. Choose "To contribute to the parent project" and click Continue.
Click on Branch again and Create Pull Request again. It will ask you if you wish to Push again. Go ahead and push. This should open up a browser window detailing your pull request.
In the browser window, click the big, green Create Pull Request button.
On the next page, click the next Create pull request button.
The last step in the verification process is to wait for the owner of the SLP Explorer GitHub page to accept or deny your pull request. I recommend monitoring the page daily to see whether or not they accepted it.
Once the owner of the SLP Explorer GitHub page accepts your pull request, your images should be cached on SLP Explorer.
IMPORTANT: Do NOT submit your NFT to juungle before your pull request is accepted! If you do so, your artwork will not show up on juungle. Make sure SLP Explorer has cached your artwork BEFORE trying to sell your NFT.
ALSO IMPORTANT: Although you will no longer have to go through the verification process anymore as long as you consistently use the same hosting for your artwork, if you mint any more NFTs from the Parent/Group NFT, make sure you prepare and host the artwork variations AND double-check that SLP Explorer has cached the artwork before submitting it to juungle. Once it's on juungle, if the artwork isn't showing up, it won't ever show up, so it is CRUCIAL that you keep these steps in mind.
LAST IMPORTANT THING:
If your images are cached with SLP Explorer but not showing up on juungle, this means that juungle's webmaster needs to refresh/update the marketplace. Please contact juungle using their preferred methods found at the bottom of the web page. Please be patient, as they might not be able to refresh/update the marketplace right away, but they are very diligent in keeping the marketplace running smoothly and if you let them know there is an issue, they will keep that in mind before they complete their next update.
I know this was a long read, but if you got this far, CONGRATULATIONS! This task may seem daunting now, but like anything else, do it enough times and it will become muscle memory. I hope this was helpful to you, and I hope this article helps level the playing field in the new SLP NFT marketplace for sellers around the world. Please share it with anyone you know is interested in creating their own SLP NFT. Have a great rest of your day!
ERRATA:
Added fourth sub-step in Step 2: Mint your first Child NFT. Without this step you won't be able to progress.
Added 15th and 16th sub-steps in Step 4: Verify your tokens. If you don't click the big green buttons, the owner of SLP Explorer won't be notified of your pull request.
Added LAST IMPORTANT THING section before the conclusion of this article.
Please let me know if you find any more errors in the article. I strive to keep this accurate and helpful. Thank you!
Added update about the Fungal Spore Exploder at the beginning of the article.
Oh boy, am gonna have to bookmark this so I can try and mint some art to sell on Juungle soon.