Create NFT canisters that allow you to mint, buy and sell, NFTs directly!🔥 💦🧊

ICME Dev Team
March 7, 2022

The ICME dev team has been very busy the last few months building our user-deployable NFT minting canister: ICMint. VERY, very soon, you will be able to spin up your own ICMint canister. We are doing internal-audits and then wallet integration testing. After audits are completed you can start using ICMint from your ICME account page.

With ICMint you can mint new NFTs in various file types. You can sell these NFTs directly from the canister accepting ICP; no marketplace needed. ICMint allows you to have full control of your entire NFT campaign on the IC! Deploy your minter and build your NFT store completely on-chain 😊

This is an overview and small reference guide to ICMint.

The Basics

First add some ICP tokens to your account from the 'Settings' page and convert those ICP into Cycles. This will make it possible for you to deploy sites and canisters.

From the Modules page (soon to be released) you can spin-up an ICMint canister. Just name it and press "Create Minter." In the background, a few new canisters will be created and supplied with an initial balance of Cycles. This process may take 90 seconds as a lot is going on in the background.

NFT Minter

You will then need to visit your newly created minter and sign-in. This will claim the minter as your own and allow you to mint, accept bids and more.

How to sign into ICMint

What is happening in those 90 seconds?

Three new canisters are being created on the IC and are being given to your ICME account.

The Storage Canister: This is where your NFT's assets are stored on chain. Assets are your images, audio, PDFs or any other file associated with your NFT. Every time you mint, your asset data is saved in your storage canister. You can show this data in any web2 browser via traditional HTTP requests.

Assets shown from the storage canister will allow you to whitelist specific IPs, websites, or domains where your NFT can be used. For example, someone can pay to use your NFT for one year. After that, they would need to renew or their domain will be removed from the whitelist; resulting in a 404 error. When all images on the web were stored this way, a new economy of peer to peer sharing will emerge, rather than the rampant property theft that is common on web2 today. The files and data that you produce on web3 is yours. If you want to rent, trade, or sell them to third parties, it should be your choice and you should benefit from that directly.

Why is this not possible on web2?

Whitelists and blacklists are common procedures for protecting content on web2. However, these are all controlled centrally. So the first issue is: how do you benefit from uploading your image or music to big techs' data stores? Well, you don't if the gatekeepers say you don't. 😢

With ICME's solution, your data is stored on chain with a fixed set of programmatic rules. These rules allow you to rent, sell, or transfer rights to your file. You can also setup royalties if you want to benefit from usage of those files into the future. High gas-fees and programmatic limitations have prevented this type of model from becoming a reality. With reverse gas-fees and smart contracts that act as full application logic and data stores (canisters), this model of data economy has recently become possible. ICME allows everyone to tap into this brave new world of potential via our no-code tools.

Even if you do not plan on having an NFT campaign, it may be worth uploading your images and files to your own ICMint canister to reap the benefits of web3 file storage.

But what if someone visits the asset link and copies my NFT data?

Technically this is still possible 😔 but made better by web3 😃. ICME adds a digital watermark with current block-height so any person can verify if the NFT is authentic by checking the current block to the digital watermark. If it is static, you know it is a fake! Moreover, you can check that it is being served from the storage canister rather than a web2 cloud server. These are two easy ways to know that your NFT is the real deal.

ICME has plans to allow you to add licensing within your NFTs. With this you could allow open-permissions or have more restrictions. Any user can look at the NFT metadata and know the licensing details; but more on that in a different post!

The minting canister: This is where token access is controlled. All transfers, minting, buying and selling is done here.

ICMint canisters have built-in marketplace features. Anyone with an Internet Computer Account ID (such as from setting up an Internet Identity) can make a bid on your NFT. If you have 'Auto-accept' turned on the bid is accepted for the price that you have set. If not, you will receive a list of bids and be able to accept the one that you want.

To mint an NFT, set all of the fields that you want here and press "Mint NFT." This will create a new NFT that your Account ID owns and uploads the file to the before mentioned asset canister.

The UI Canister: This is the user interface that allows you to interact with your NFTs in your browser. It also allows others to bid on your NFTs and manage the ones that they have purchased. It is the public face of all three canisters that have been deployed.

During those 90 seconds a boatload 🚤 of power is being revved up for your use in the form of three "smart contract" canisters.

I have my canisters and have minted an NFT. Now what?

Well, a first step would be to design a storefront in ICME. This will allow you to create a completely custom marketplace for your NFT campaign. (ICME uses Tailwind.css, so anything that works with Tailwind should be useable within ICME as a component.)

You could also sell from a UI canister directly. A user would come to you NFT's page, place their Account ID and make a bid. The 'Account ID' can be found in Plug under 'Deposit' or Stoic as 'Address'. You can also make your own using Dfinity's console-based DFX tool.

Rule #1 of ICMint for NFT buyers: You will want access to the private keys of your wallet. This is what will allow you to interact with your NFT in case your wallet does not yet support the NFT minter.

Rule #2 of ICMint for NFT buyers: You will want access to the private keys of your wallet. Without this you will not be able to control, resell, or transfer your purchased NFTs.

Now, that we have that out of the way and you have an image of Brad Pitt in your head 😂.. or don't because of culturally specific inside jokes.

As the owner of the minter canister you will want to apply to DAB so that your NFTs are displayed in wallets. If accepted, your NFT will be discoverable in IC based wallet systems. We will do another post about this process. Or if there is a way to auto-apply in the future we will do this for all of our users in their stead. @psychedelicDAO 🙏

Here's how a buyer adds their Account ID and then makes a bid. 👇

Sell nft 2

As shown above, after a bid is made a unique Transfer ID is generated for the buyer. When they transfer an amount of ICP into this address a bid will be created. If "Auto-accept" is turned on, the NFT will automatically become theirs, and auto-accept will be turned off to avoid accidental auto-resells.

If "Auto-accept" is off, their bid will be added to a list for review. The owner of the NFT will need to revoke all other bids before accepting one. If a bid is revoked, the ICP is returned to the sender (minus network fees). If a bid is accepted, the NFT ownership is transferred.

Accept a bid

The last step is to convert your Earnings into ICP tokens. This is done in "Claim Earnings."

Claim earnings 1
Claim earnings 2

After pressing 'Accept', balances will be given to your ICME account, including any royalty fees that you may have set. 3% will also be given to ICME as a usage fee. You can transfer your Earnings balance from ICME into any IC address or wallet.

The new owner of the NFT will be able to revisit the NFT UI and confirm that they now have ownership. (If they hold the private keys of the Account ID that they used to purchase it, they can control the NFT directly to make transfers or accept new bids. This is accomplished by using DFX and your command line.) Moreover, ICME has plans to allow you to use the UI canister that you purchased the NFT from to manage the NFT directly. This makes three possible ways to manage a purchased NFT.

1. Directly using private keys and DFX.

2. When wallet integration is completed, the NFT owner will also be able to view and transfer their NFT directly from their wallets.

3. Forthcoming: Enable buyers to control the NFTs in the UI canister that they purchased from. Or alternatively, have a global ICMint register UI. For ICMint v1.1

What's next?

We are spending a little extra time making sure everything is working as planned, and has no unforeseen edge cases. We are also working on testing ICMint with Plug. After these are complete we plan on a public launch for the full community.

A web2 based API for ICMint is also in the works. This will allow web2 services to mint 'reverse-gas fee' NFTs directly onto the IC without worrying about any technical details of that minting process. This will be useful for corporate customers and automations with web2 tooling.

Our mission is to accelerate the expansion of web3 technologies by allowing non-technical and efficient development. Wish us luck🍀!!

About The Author

The ICME Dev team are the people building
cool things in the background 😊