How to change metadata for solana nft collection on phantom wallet for candy machine - metadata

i recently uploaded my collection to mainnet
its called Not Crypto Punks
and in phantom wallet it says collection nft

It sounds like your using a Candymachine and it has minted a default Collection NFT for you which has the default name of 'Collection NFT'.
If you look at one of your NFT mints on https://solscan.io/ and head over to the metadata section, within the metadata there will be a collection address which you need to copy.
If you take the collection address and head over to https://sol-tools.tonyboyle.io then put your collection Address into the update NFT section of the site it will allow you to update this NFT with all the details of your collection such as name, image, and description etc... You do not need to worry about attributes or anything else.
This can also be updated anytime at a later date.
You'll need to have the wallet used to create the candymachine in Phantom (or other supported wallet) to be able to update the NFT though.
Make sure it is the collection NFT you are editing and not a normal minted NFT from your collection as well.
If you are unsure of this process feel free to drop into the Metaplex Discord server and we can help you there too :)
A bit about the collection NFT
The Collection NFT is just a normal NFT which is used as the album cover/art peiece of your collection. You do not sell or give this NFT to anyone else as it represents your NFT's on the Solana blockchain and to markets such as Magic Eden and OpenSea, and to wallets such as Phantom and SolFlare.
Each NFT minted from your candymachine will point to this NFT and be used as a way to group everything together.
Editing the collection NFT will change the image, name, and description places such as ME and OS, and other places like wallets view you collection.

Related

Cloud Firestore - Encryption So Admin Can't See Plain Text in Database

I am going to use cloud firestore within my flutter app to store data from a questionnaire. Although the questionnaire itself DOES NOT ask for personal information, such as name, phone, email or passwords etc, it DOES ask several questions and produce data that I would not want an admin of cloud firestore to see. During a meeting it was identified that risk to data security was that an admins account could be compromised and people would be able to view/export plain text data. I have looked at end to end encryption for this, however, a designated person from within my company will need to process the data and thus will need to de-encrypt the data later on.
How should I encrypt the data on cloud firestore so that
Admins do not see plain text
A designated person can de-encrypt the data when needed to produce a report
Just from googling my thoughts are that I should perhaps make a public key available on the device side for encryption onto the database. I should keep a private key safe so only the person processing the data will be able to de-encrypt later on.
Is there a workflow that people use for this?
Sorry if this is a basic question!
What you're describing is pretty much how to do this: encrypt the data client-side before sending it to Firestore, then again decrypt it in your dashboards and anywhere else you need to display it. That's the only way to ensure that collaborators on the project won't be able to see the data.
Alternatively, you can consider not giving anyone access to the Firestore panel in the Firebase console for the project that you use for production data. So in that case developers can see everything unencrypted in the development project, but nothing in the production project.

addSnapshotListener swift firestore behaviour

I have a document in Cloud firestore to which I listen for updates. It has 2 fields, it has a field description and a field for a picture. The picture is approximately 0.2 mb and description is a few words. I wanted to know what would happen if I made changes to the description in the document, I wanted to know if addSnapshotListener actually downloads a fresh new copy of the document or just the field that has been changed.
I indeed see, by looking at how much data is being downloaded in Xcode, a new fresh copy of the document is downloaded.
This is not efficient at all, since the picture field is rarely changed, only the description might change in my application.
Is there a way to optimize this?
Is there a way to optimize this?
Yes! Don't do that.
Firestore (and the realtime database) is not intended to store images or large datasets per field.
You should explore Storage and keep a reference (url) to the item stored in storage in your Firebase.
Cloud Storage is built for app developers who need to store and serve
user-generated content, such as photos or videos.
By leveraging storage if you need to update or change a field in Firestore, you're only working with a small amount of data instead of an entire image worth.
To answer the question; if you read a document from Firebase, it does read the Document and it's child data.
Here's a link to the Storage Docs which shows how to capture a reference to the item uploaded to storage.
https://firebase.google.com/docs/storage/ios/upload-files
If you want to automatically sync the images to all clients and have them available offline, just put them in a separate document.
// Store your small, frequently changing text here:
db.collection('users').doc(userId).set({email: vince#example.com})
// Store your image here:
db.collection('user_profile_pic').doc(userId).set({data: <imagedata>})

Connected Storage and enumerating GameSaveContainer

I have been looking through the Xbox Live Extensions SDK API Reference and cannot seem to find how to get an existing container by enumeration or by name. The GameSaveContainerInfo is what I can get from a CreateContainerInfoQuery, but that is informational metadata only. In order to load a game, I am assuming that I would need an existing container and query for the blobs on that one. I just cannot seem to find how to get the container.
I don't think CreateContainer is what I need because this creates a fresh one, but I could be wrong.
I am creating it under the Creators program, and checked the table which includes Title storage as well as Connected storage as available, but there is little to no information, much less for C#.
Can anyone help?
You do need to use the GameSaveProvider.CreateContainer(string name) function to access a previously made container. Putting in the same name you used to create the container initially will allow you to pull down that same container.
Take a look at the SaveData() and LoadData() functions in this Xbox Live Sample code to get an idea of how to save and retrieve data from Connected Storage.

magento2 customer online grid - missed field: IP, Last URL, etc

How I can return in Magento 2 (version 2.0.0) some fields for customer online grid such as IP, Last URL, etc. ?
There are only 6 columns available in the columns menu:
In Magento 2 beta version this fields were available:
The simple answer:
No, you cant, and you should not even try. The standard solution as of today is to use a 3th party service/software like google analytics or piwik.
more explanation:
The internal module responsible for this was removed, as it was not used in most cases, but had a big impact on performance.
Especially the "last url" is a very expensive feature, which requires a database write on each and every request of a customer. This are expensive, add 100-300ms to every request of the user, and use IO resources which are important for the order process and can in a worst case scenario slow the whole order process down, if you have a lot of customers online at the same time.
The last IP is maybe still possible to get from the last login entry. But I am not sure what magento stores related to this.
Also notable, there are countries where you are not allowed to store the full IP of users.

Keeping things RESTful

New to rest and not having even known what REST was, I began watching a few videos and picked up a book to help guide me towards the correct approach. Unfortunately, my first version is completely botched to hell and I'm likely going to have to break any customers using that implementation shortly. To ensure that I don't need to do this again, I need your assistance!
I have a few DB tables that I'm concerned with here:
'PrimaryBuyer' & 'AllBuyers'
They share a majority of fields, but AllBuyers has a few things Primary does not and vice versa. Each primary buyer is given a unique 'CaseNumber' when entered into the system. This in addition to a 'SequenceNumber' is then used to identify 'AllBuyers'. This CaseNumber is returned to the user of the web service to store for future use. The sequence numbers however are implied based on their location within the XML / JSON.
To specify these tables -> For example, if I were to buy a car I would be the primary buyer and would thusly be entered into BOTH Primary and AllBuyers tables. However, if my credit was bad I could have my spouse cosign on the loan. This would make her a secondary buyer, and she would be entered exclusively into 'AllBuyers' table.
I currently have one REST URI set up as '/buyers/' which mandates that all information for all buyers is entered at once. Similarly if I were to do an update on this URI, the Primary is updated in both tables and any Secondary buyers in the payload would replace previously existing ones.
Ultimately, there is no way to directly access tables 'PrimaryBuyer' and 'AllBuyers'
I've been trying to think of a solution around this problem, but have been unable to think of anything that's necessarily RESTful or not a pain for customers. Is it ridiculous to think that the user should (say on an add) POST to /primarybuyer/, take the returned casenumber, and then POST the same information and then some to /allbuyers/? That seems like it would be a little silly on bandwidth among other things. Should things be left in their current state?
Hopefully that's not too much information to answer such a seemingly simple question.
Is it ridiculous to think that the user should (say on an add) POST to
/primarybuyer/, take the returned casenumber, and then POST the same
information and then some to /allbuyers/?
When you talk about "user" do you mean the person or the system (browser) that uses your service ?
Using a REST service is normally made by a system, today that means a lot browser+Javascript. To do the job for the user person is done at a web facade, and in back is running all your (Javascript) code to make the appropiated REST calls.
Why not post the buyer's information as a serialized object to the rest server? You could do this via the parameters section of the request. When the request got to the server, you could deserialize the object, and implement the logic of updating the database.
Kind of like how amazon does it? http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_AddInstanceGroups.html
If the client application does POST /PrimaryBuyer there is no reason that the server cannot also copy that case information into the /AllBuyers resource and vice versa.