# Polygon NFT minting guide

By [xedra](https://paragraph.com/@xedra) · 2022-02-04

---

Introduction
------------

This is a practical guide to create your own music NFT collection on Polygon network for less than 1 USD. You don’t even need an email address to tokenize your music.

### Basics

A **ERC-721** or **ERC-1155 token** is a simple smart contract app that has an [ethereum address](https://info.etherscan.com/what-is-an-ethereum-address/), and these represent NFT **collections**, where items correspond to a **numerical ID** from that contract, usually starting with zero and incrementing by one. For instance, you can search any NFT on a popular marketplace and you will find both their address and their ID at the bottom or on the URL.

![NFT details on https://zora.co/collections/zora/6722](https://storage.googleapis.com/papyrus_images/f16f500978a03dfc5fb5aa2115883eaca67b78357e5147e94f3b458619fbaedc.png)

NFT details on https://zora.co/collections/zora/6722

### Metadata

At this moment, most of the actual content of NFTs isn’t stored _on the blockchain_, this is because of [blockspace demand](https://research.paradigm.xyz/ethereum-blockspace). Generally, a blob of **metadata** is uploaded to another network for storage, and only its _unique identifier_ or _content hash_ is then added on the token. Unlike regular URLs, content hashes query information via distributed file system, not a single physical location. They allow us to keep the content available even if original host goes offline.

[Cryptomedia](https://cryptomedia.wtf) is **meant** to be shared p2p, this is why OpenSea’s Polygon collections, “shared storefront” or “lazy minting” collections solely host the metadata themselves, and indeed don’t show up correctly on other interfaces. Stick to [Arweave](https://www.arweave.org/) or [IPFS](https://ipfs.io) when uploading your music files, image, and metadata.

![OpenSea Shared Storefront NFT](https://storage.googleapis.com/papyrus_images/ecc24e93695300042c510cfc5a6fe6371401ba328bf93a2efb371c50ba04410f.png)

OpenSea Shared Storefront NFT

I highly encourage people to run their own IPFS nodes and host their content themselves, not only relying on pinning services like [pinata.cloud](https://pinata.cloud) or [nft.storage](https://nft.storage), which are great to spread content on the internet so it stays widely available.

### Why Polygon?

From all different networks you could use for this, I suggest Polygon because I come from an Ethereum experience. This is the closest you will get to access major DeFi protocols like [Aave](https://aave.com) and [Uniswap](https://uniswap.org), while also being able to create and trade NFTs on OpenSea with negligible costs. Every public blockchain that prioritizes transaction cost or speed also tends to sacrifice some level of decentralization and security. For instance, [80K ETH were recently exploited from a Solana bridge](https://techcrunch.com/2022/02/03/blockchain-bridge-wormhole-confirms-that-exploiter-stole-320-million-worth-of-crypto-assets/).

You should always research what are the security assumptions when using bridged assets anywhere. For me, Polygon is good just to get started, because you can eventually transfer your assets back to Ethereum and keep the same address and experience across web3-enabled apps. Polygon also uses proof-of-stake.

Polygon is still the most accessible Ethereum-like experience at the moment, it reminds me of early 2020.

### Price floor

Owning your collection contract allows open front-ends and marketplaces (even the ones that don’t exist yet) to display it individually, with its own statistics, such as volume and floor price. It prevents your items from getting diluted in a large public collection which often display low or null floor price values, as more people are minting on them constantly. This is particularly important if you intent your media to have a market, to monetize your work with consistency.

![Rarible's public collection on the Ethereum network.](https://storage.googleapis.com/papyrus_images/1d5c7e07c669c8f02246b0a0abe01ad1d328beb600930eeaba89d51f41d4ea13.png)

Rarible's public collection on the Ethereum network.

and by the way, Mint Songs is no different! I personally would not buy multiple-edition NFTs from a shared contract.

![Mint Songs public collection on the Polygon network.](https://storage.googleapis.com/papyrus_images/ff137d67b7429c7491f8145bee25d34d9330388f9dd46a8d2543dbf31b2e2bec.png)

Mint Songs public collection on the Polygon network.

Tutorial
--------

For sake of keeping this guide short, I will assume you have a Web3 wallet or [Metamask account](https://metamask.io/download) on your browser.

### Add Polygon to your wallet.

By default, Metamask is connected to Ethereum (mainnet) and alternative networks do not show up. You can visit [chainlist.org](https://chainlist.org), connect your wallet, search Polygon, and add it to your wallet. Make sure you switch the network on the top right within Metamask UI.

![chainlist.org - ChainID 137 stands for Polygon](https://storage.googleapis.com/papyrus_images/8eca678335764b64a62fb985f89fade195560c1a15a0a90dbbf222c3b57a5008.png)

chainlist.org - ChainID 137 stands for Polygon

### Get some funds

Just like Ether (ETH) is the native currency of Ethereum, Matic (MATIC) is the native currency of Polygon. That does not mean you can’t use ETH on Polygon, or MATIC on Ethereum; they exist on both networks. If you already have some ETH on Ethereum, you can swap it for Matic tokens and bridge them through [wallet.polygon.network](https://.polygon.technology/bridge/) or [app.hop.exchange](https://app.hop.exchange).

If you don’t own any, you can look up for a crypto exchange that withdraws MATIC natively into Polygon network, so you avoid Ethereum gas fees altogether.

Alternatively, reach out to me, I will send you some tokens to get you started. Transaction fees are practically negligible on this network.

![One of my addresses used for this demo.](https://storage.googleapis.com/papyrus_images/75a197e998b95d8c232f6178314a4f63dde975bb03e3e1ed37e8a3935b3102bd.png)

One of my addresses used for this demo.

### Deploy your collection

One experimental tool that works for both Ethereum and Polygon to deploy your own ERC-721 contract is [wemint.art](https://wemint.art). You just need to connect your wallet, assign a ticker and a contract name. The ticker is usually displayed as the asset identifier, and the contract name is often the same as the collection name.

![Using some test name example and ticker on wemint.art](https://storage.googleapis.com/papyrus_images/39f5e4b28b6fb100bf49eaac461c4b61016518fb36a3e4e213f56ec049156c24.png)

Using some test name example and ticker on wemint.art

A transaction signature screen will pop-up on your Metamask and only asks to pay fees. In this case, the cost to deploy is around $0.01 USD in MATIC.

![](https://storage.googleapis.com/papyrus_images/ed40df3dffe3d093f2224ad01ca912d520e866edf11d8037b366ed2aea18bf3e.png)

Once the transaction is sent, it can hardly be prevented from getting added to the Polygon chain, so make sure everything was intended. We just have to wait for a confirmation. Save the returned contract address for later.

![Deployment successful message (wemint.art). ](https://storage.googleapis.com/papyrus_images/6f24179b213c73c210b50a185bfe717d015d3d782fb718033df5b9c97fdcf488.png)

Deployment successful message (wemint.art).

This site defaults its messages to Ethereum, this is why you might not find anything when you click on “_etherscan.io_” - check your token address on _polygonscan.com/token/(contract address)._

### Upload music file, cover image, and metadata on IPFS

Within the [wemint.art](https://wemint.art) website, there’s a _How To_ tab that give you instructions to upload metadata to IPFS using [pinata.cloud](https://pinata.cloud). These are some steps to do it by yourself:

*   Download, install, and run IPFS Desktop from [ipfs.io](https://ipfs.io).
    
*   Install [IPFS companion browser extension](https://docs.ipfs.io/install/ipfs-companion/). If you are using Brave, you can enable it on settings.
    
*   While running, visit the Web interface for IPFS (otherwise, the Desktop UI) by clicking the IPFS icon and then “My node”.
    

![IPFS Companion extension: allows your browser to add and retrieve content from IPFS.](https://storage.googleapis.com/papyrus_images/a16bd7499dbdfef88db9e06c282f636206ce84e1914d2d91a6031c74b4cd4175.png)

IPFS Companion extension: allows your browser to add and retrieve content from IPFS.

*   Go to _Files_ tab, then click on + _Import_
    

![IPFS User Interface / Files](https://storage.googleapis.com/papyrus_images/be669794e4beb3cc22aa5d19434b3ebb92ca1fb2425d636b6c608d6414a173a9.png)

IPFS User Interface / Files

*   Import a your music file (usually .mp3 or .wav) and your image file (usually .jpg or .gif) and once imported, you might want to _pin_ them (publicly host them to be retrieved from the internet).
    

![](https://storage.googleapis.com/papyrus_images/e0deac7438a5678eae01b8aef25993a63a174a5ff6db8d3d39e9037f093115f0.png)

### Formatting metadata

This is still an on-going discussion, [people are working on music NFT metadata standards](https://anett.mirror.xyz/QQ1mwaxYQ8OEVQshvouDcxP4nKHS9-dQkavxS6FncpI) to make them better, keep an eye for the [latest proposals](https://www.notion.so/Music-NFT-Metadata-Proposal-98871dbe2d934890a36322c638b7b6cc) so your NFTs are compatible with new interfaces. Metadata usually comes as a JSON blob, this is one basic formatting that at least displays your token on OpenSea:

    {
      "name": "",
      "description": "",
      "image": "",
      "animation_url": "",
      "external_url": "",
      "attributes": {
            "artist" : "",
                    "license": "",
                    "label":""
        }
    }
    

Pick any text editor, copy this format, fill in the blanks: **_image_**, **_animation\_url_**, and **_external\_url_** should contain links to the content: cover art image, music file, and your website (or social media link) respectively.

You could use regular URLs for the first two, but it is always preferable you use content hashes, which you copy from the IPFS application and add **_ipfs://_** prefix on the JSON file.

![Content hashes (Qm...) are below the file name, but you can also copy them from the menu.](https://storage.googleapis.com/papyrus_images/bfa3b765c70ea89cacbfaed7e783c010cea215273f573f469022eaeb75938629.png)

Content hashes (Qm...) are below the file name, but you can also copy them from the menu.

To avoid errors, [check that your JSON file is valid](https://jsonchecker.com/). The end result should look something like this:

    {
      "name": "XEDRA - demo track 0",
      "description": "an instrumntal demo track by xedra.eth",
      "image": "ipfs://QmTNcVWy5rbq9QxKkqAUktGQkJJeZgi5B8nGSH4HGyAbGy",
      "animation_url": "ipfs://QmNihHRz3tY5gbcPPxiCMyGXWfsH87FUC7bBZLLUGeKx98",
      "external_url": "https://twitter.com/xedraism",
      "attributes": {
            "artist" : "XEDRA",
                    "license": "CC0",
                    "label":"DEMOTRAX"
        }
    }
    

Proceed to save this document as a .JSON file and then add it (pin it) to your IPFS node.

![metadata.json file added to IPFS node](https://storage.googleapis.com/papyrus_images/7bfd94b8f6214dbacf3fddb53b8c71dc6d1555a02a2a9c1e93e81a886b35fcb5.png)

metadata.json file added to IPFS node

### Press your record!

We are coming to the last steps. Go back to [wemint.art](https://wemint.art) and go to the _Mint_ tab, take the contract address that was created before, and hit _Load._ You should see a similar screen:

![You guessed it, that's where the metadata.json content hash goes.](https://storage.googleapis.com/papyrus_images/bc4d0e072dd83973acb8983742d535b4e6ceb0878000e85b7a2c680f30be006d.png)

You guessed it, that's where the metadata.json content hash goes.

Before rushing into mint, don’t forget to add the **_ipfs://_** prefix just like the URLs of your music and image files in the JSON file. Once you mint there is no way of deleting this content from the blockchain, and remember IPFS is a public network. Make sure everything is as intended.

Royalty share can be set up, this is how much revenue from a secondary sale goes back to your address. I personally like to keep this number low.

![Minting here costs a cent!](https://storage.googleapis.com/papyrus_images/bbf9fefd7ccb26fe80b3b588acb27769f8f35247b3f23e363f36c8963bf0ca3f.png)

Minting here costs a cent!

Hit confirm and wait for the transaction to get added on Polygon. It might take some time for OpenSea to show up your NFT even after it gets minted, be patient!

![Again, this screen says etherscan.io when it should be polygonscan.com](https://storage.googleapis.com/papyrus_images/f496473889511c05a5317de992585e03ada210de566b5d9c19e7bdffdce959cb.png)

Again, this screen says etherscan.io when it should be polygonscan.com

### Find and list your token.

If everything went correctly, you can search for it on the top bar, it is your contract collection name that will show up, initially with 0 items.

Alternatively, find it on **_opensea.io/assets/matic/(contract address)/0_** where the last 0 is the token ID. The next NFT you mint on this contract address will have token ID 1, and so on incrementally.

It might take some time for front-ends to display the actual content, partially because you might be the only person hosting it. Use [pinata.cloud](https://pinata.cloud) or [nft.storage](https://nft.storage) to pin your content with better bandwidth. Once you do that, hit the refresh metadata 🔃 button at the top right.

![title, description and attributed loaded correctly but there's no music or artwork yet.](https://storage.googleapis.com/papyrus_images/64a550e18195ab6cfe935bc51d624e20609a959c6b455a32753d367a8a5bc8b9.png)

title, description and attributed loaded correctly but there's no music or artwork yet.

I waited 15 minutes after seeding the metadata on different places, hit the refresh button several times, and then [everything showed up correctly](https://opensea.io/assets/matic/0xe46d2d8f59a2b6bc7cceac05915ac217427b2b69/0)!

![Go listen to this demo, I actually really like it lol](https://storage.googleapis.com/papyrus_images/5da4e613b5011f977b1c331a586241f226169c88cab4137414041895a89bd145.png)

Go listen to this demo, I actually really like it lol

If you log in to OpenSea with the same address you created this NFT, you will see that you own it, and you can list it on sale.

![Listing screen after clicking "Sell" once you log in with the owner account.](https://storage.googleapis.com/papyrus_images/05597ff81d6b2cf897c4edeaf52bcdd1cde717bc74c4609da99eee208d053db9.png)

Listing screen after clicking "Sell" once you log in with the owner account.

Conclusion
----------

Some things to consider:

*   **You are responsible for keeping your content available**. Try to seed it by yourself and other places so it doesn’t take a lot for people to listen to it.
    
*   **Polygon is filled with spam.** This is a problem every low-cost blockchain faces right now. Make sure you present your NFTs in a legitimate manner over social media, keep up with the metadata standards, make your work meaningful to stand out.
    
*   **Polygon lacks** **traction**. I’m presenting this guide in hopes more people give it a try, as creators, collectors, and developers. Many don’t have access to mint something on mainnet but this technology is parallel and still works to distribute resources no matter how big or small.
    

### A middle ground between the art market and “Bandcamp friday”.

You might still be skeptical around this whole NFT thing, especially with things being so costly, but think about it just like any other option to publish and monetize your work. One that is much more frictionless and borderless. Since this is a low-cost blockchain (where we don’t make margins for transaction costs) you might just sell your NFTs for the same amount of money you would get on a Bandcamp Friday.

There’s no need for Bandcamp Friday anyways because you can tip artists to directly. Polygon is just as fine as Ethereum to trade NFTs and more. Participate (or create) digital organizations, take advantage of financial protocols, generally just toy around it like I did when Ethereum was affordable.

### If you followed this guide to create your music token, share it with me!

---

*Originally published on [xedra](https://paragraph.com/@xedra/polygon-nft-minting-guide)*
