What is the difference between minting NFT's on Solana and Ethereum?

I am a little confused about the workflow of NFT's on the Solana blockchain. I come from Ethereum and everything there is very clear. There is a smart contract that is executed on the blockchain which requires a specific amount of Ether to accept and you send the transaction out to the mempool to be picked up by a miner.

On Solana from what I've gathered is, the NFT creator creates a token using SPL that gives them an ID. Then someone else can create an account under one of their wallets to accept that specific type of token that was created. Then that person can use that account to mint the NFT using the ID we got earlier. Is that all correct?

If someone could please clear up the some of the things below it would be greatly appreciated.

Where does Candy Machine come into play here? What's the difference between the Mint Authority and the Update Authority? Does a collection need to run the spl create-token command for every single token?


Solution 1:

The candy machine by Metaplex (https://github.com/metaplex-foundation/metaplex) is the standard smart contract (actually known as programs in solana) being used at the moment for minting NFTs in the solana ecosystem.

It abstracts away from all the details you have described so people can simply clone and deploy the repo more or less rather than write your own contracts as in Eth.

An NFT in solana is a SPL token with a metadata struct set to the metaplex standard (ie. a URI on-chain point to more metadata off-chain). This is the current agreed upon standard for NFTs on solana.

You are also right in saying solana SPL tokens requires an account to be created to "receive" NFTs or mint them as well. A new account will be created for each NFT. This is handled by the candymachine as well as the SPL token program built into solana itself so normally you don't have to deal with this unless writing your own contracts possibly. Check solana docs/anchor framework docs for more info on programming on solana.