How to find the owner Solana NFT in the past timestamp? - solana

Understanding that it is pretty straightforward to fetch the current owner of a NFT on Solana (get holder of solana nft using python), how could we get the owner at certain timestamp in the past?
One way I could think of is to get all the transfer transactions of a particular NFTs and sort all the from address by time. Just wondering if there are better ways.

Your pitched approach is the only possible one currently: Going through all transactions and filter them.
You could for example check how the solana explorer is doing it in the Token Transfer Tab: github

Related

Setting up a WL wallet based approach with Candy Machine V2

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

Phantom wallet: Solana transactions debug

I need to know which instuctions list is used for a transaction in order to use it in my application.
For example:
There is an unknown NFT marketplace, I can buy NFT through the "Buy" button in the browser.
I want to buy these nft programmatically, not through the browser.
To do this, I need to know all the instructions and transactions.
And in general, can I buy NFTs if the marketplace does not use CandyMachine, MagicEden, etc.?
Each marketplace/platform has a different way of managing transactions.
If you are interested in how transactions are put together and want to start building an understanding of the ecosystem, you have two options:
pick an open source repo (on Metaplex on you have auction house / storefront / fixed price listing / candy machine at least ). Some of these will have template UIs as well that you can customise to suit your needs. They come with several examples of transactions so that you can learn to build them from ground up.
Pick a proprietary framework (like Magic Eden), and interact with them via their API. You will not be building the transactions yourself in this case. In the case of Magic Eden, they build the transaction instructions serverside and serve them over their instructions API. You will not know (nor would you necessarily need to know) how the transactions are put together, as they've handled the abstractions for you.
Some examples of different NFT frameworks in the solana space:
Metaplex Auction Manager (open source) + Storefront UI. Useful for learning about how transactions are created, but probably unwise to start building a long-term solution on top this. Also Storefront UI is in places quite complex but as long as you just focus on the transactions and how they are generated, it's a useful pedagogical tool.
Metaplex Auction House (open source) is intended as a replacement for Auction Manager framework. Like the Auction Manager, Auction House is open source and there are multiple examples of how to use it in metaplex repos.
Metaplex Fixed Price (open source) is another listing framework with its own set of contracts. Again repos are available on metaplex github.
Magic Eden (proprietary) expose their transactions via an API, which gives you serialized transaction. You can use the transactions generated by their API in your application, but because ME is not open source, you will not be able to generate the transactions from scratch.
The above are just examples. However, the one thing they all share is that they use Metaplex standard for expressing their mint metadata. The way ownership is expressed via TokenAccounts is also standard across all, which means that as long as you hold NFts in your wallet, you will be able to list them in any of the above.
In addition to the above, Metaplex discord is also a useful source of information with a friendly community, but please check the growing SO knowledge base first.

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?
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.

How to see what NFTs a website visitor has in their Phantom Wallet

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?

Create Tickets through Square Connect API?

My company (which does Tutoring services) recently transitioned to Square for their Appointments and POS and I am trying to automate certain tasks. I wanted to know if there was a way to create "Open Tickets" for transactions through the Connect API.
I went through the documentation and couldn't find anything that refers to "tickets". I checked the seller community but wasn't satisfied with the answer from Square since they seemed to not understand what "Tickets" meant. I have provided more details at the end of this post in case someone wasn't sure about "Tickets" here as well.
I believe currently Tickets are only available through the Square POS app (Android/iOS) and not on the Web Dashboard. I would like to be pointed in the right direction in terms of what I might need to look at in order to get access to automatic ticket creation.
For more details, please read on.
In order to clarify what I mean by "tickets", here is Square's page regarding "Open Tickets". They are basically a way to create and save transaction info ahead of time so customers can be charged quicker. The way we use "Open Tickets" is we create tickets for Tutoring sessions every day in the morning and when a customer shows up, all they have to do is look up their ticket and pay. We do this since we expect a lot of traffic every day and we want to streamline the process as much as possible.
Therefore, our admin staff ends up creating 80-100 tickets manually every day! I wanted to know if there was a way to automate this. I already have a running Google Sheets with all appointments data that would be needed in order to create a ticket. I just need to find a way to communicate with ticket creation.
I apologize if this is a long post. I tried to be concise but thorough. Please let me know if there is any detail that I missed. I appreciate any help!
Unfortunately, Open Tickets isn’t currently available for Square’s API. Square's API is only able to track completed transactions at this time.
We are constantly improving the product based on feedback like this, so I’ll be sure to share your thoughts with the API team.

Resources