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?
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 an SPL token with a metadata struct set to the Metaplex standard (i.e. a URI on-chain pointing 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 require 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 Candy Machine 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.
Related
I have a SOLANA NFT that I mint, can I update 'freezeAuthority' using '#solana/spl-token' or '#metaplex-foundation'?
By default Freeze Authority is transfered to the Master Edition Account PDA, so no one can change it. The good part is that spl-token program has the Approve instruction that allows you to become the FreezeDelegatedAccount and then you will be able to Freeze the NFT using the FreezeDelegatedAccount instruction.
I have been using the spl-token whitelist based approach via the the CLI with Candy Machine V2 up to this point. Sending WL users a token that is registered as the WL token in the Candy Machine config. This route has been ok but I would like to switch to a wallet based approach where wallet addresses are detected automatically without the need to send out tokens. I have been looking online for some documentation / notes on how this can be done but haven't been able to find much (might just be looking for the wrong thing). Is this possible to set up with Candy Machine V2? If possible, does anyone know of some good resources I can check out that could help me get this done? I would need the ability to set up multiple whitelists.
Any help is appreciated!
You can do wallet based whitelisting with candy machine v2 together with gumdrop.
You would have to use claim-integration candy and distribution-method wallets. This will allow the given wallet to claim the wl token and since you are using claim integration candy will directly build the mint transaction, too. Therefore the user will only have to confirm one tx and would only see the wl token if the second transaction fails.
This is closest to what you can get to wallet based whitelisting with cm v2.
Keep in mind though that by default you have to give every user a personal claim link which contains a merkle proof that allows them to claim. Either use a discord bot where they can pull their claim link or modify the frontend to include the proofs and automatically fill it there.
Its not possible to set up a Wallet-based whitelist using the deployed CandyMachineV2 Program. The only way of having this feature is grabbing the CMv2 program and update it to allow Wallet Whitelist instead of SPL-Token whitelist, then deploy your new CMv2 and use that new program ID in ur mint page and ur CLI to create and update the CandyMachine
I minted 30 tokens with candy machine's cli, following the metaplex's github boilerplate project
Uploaded, verified, minted and signed all the NFT's. I can see them on my phantom wallet and it created a cache file on the main directory with the candy machine ID. Now I want to know is theirs a way to call my candy machine on the metaplex storefront so I can sell the minted nfts on there.
I think I did it once but now i can't replicate it. I might have been dreaming ...
Any good tutorials on trying to do what I want?
Thank you.
Soo it works again!!
I think i know why it wasn't working in the first place.
An account address can create many candy machines and when initializing Metaplex's storefront it tries to retrieve all those candy machine instances.
That's why it takes one attribute on the .env file , it gets all the CM's from that one address
After checking Metaplex discord and various forums it seems as Solana's network is the problem. in short the network is slow and unable to function at scale. As of now (March 30, 2022)
My solution is to only use one address per candy machine instance and maybe that'll help the load
I've created some NFTs on the Solana Blockchain and now have them in my Phantom Wallet.
How would I create a website that checks the users' wallet to see which NFTs they have in it, eg to make them available in a web based game I might create?
I can't see any info on this in the Phantom docs but it must be possible since sites like Solsea do this.
Any pointers appreciated!
If you haven't got the user to connect their wallet at this point, I would recommend the anchor wallet library.
Some relevent resources can be found here for actually retrieving solana nft metadata:
Get the list of assets associated to a Solana wallet address
Code sample for parsing metadata for Solana NFT and updating the metadata
#solana/web3.js Is there an API for ERC721 Metadata?
I understand how to create multisig accounts as specified in the below documentation but am not sure how this works in practice. Suppose I have a partner, we both create a new keypair, and we both need to sign a transaction. The point is that I don't know his keypair and he doesnt know mine.
So how do you setup a process where we both sign a transaction from different computers neither knows the other's keypair info?
https://spl.solana.com/token
For a multisig allowing for transaction signatures from unconnected computers, you'll want to check out the Serum multisig example program: https://github.com/project-serum/multisig
As you've noticed, the native multisig functionality in the SPL token program is limited in this domain.
a bit late to this thread but wanted to share our latest solana multisig product here, in case you might find it useful. as Jon C mentioned, serum multisig and SPL token program are both great options and have been well adopted within the ecosystem. SPL token is more suited to DAO governance use case.
Snowflake Safe is gearing towards teams and secure individuals with a little more focus on the UX side.
DAPP : https://safe.snowflake.so
SDK : https://github.com/snowflake-so/snowflake-safe-sdk