NXTER.ORG

NFTMagic + NFTMagic

Last time I wrote about NFTMagic was back in January. It’s amazing how time flies. I remember that there was a little change in the format and I wanted to write about it, but then I got absorbed in adding little improvements to the website that I forgot to do that.

I’ll just get it out there, so you know what that was about.

The additional information in the asset description used to identify the “collections” was slightly changed.

<seriesID – 2bytes><seriesSize – 2bytes><seriesName – 28bytes>

The 2 + 2 bytes used for the ID and SIZE of the collection (above I’m using the term “series”, but that’s getting a new meaning. Just see it as the same thing at this point of the post: series = collection) were initially decimal allowing collections being max 100 units big. I then decided to use the base32 format which is able to address more than 1000 combinations with 2 bytes, effectively allowing collections to be 1000 big.

That was soooooo long ago. I struggled to remember that. Sorry for keeping that to myself for so long.

That’s less than 3 months ago but in crypto-time it feels like 3 years ago.

Anyway, the purpose of this blog post is to give an update on where the project is standing and what has happened since that last update mentioned previously.

The first issue was to make the prototype website nftmagic.art more attractive. As I am familiar with wordpress, that was the obvious choice. I also use often the Divi theme for other things therefore I took that (easy) path for me. The reason to use wordpress was also to take advantage of some inbuilt functionalities like for example the media library. WordPress automatically creates resized versions of the uploaded images and resizes very large images to a more reasonable size for normal screens. These image formats are essential as a cached version of the media otherwise fetched from the blockchain and as a way to serve a more reasonable size of media to the users allowing the page to be more “light”. Some might consider wordpress unsafe, but keep in mind that NFTMagic is nothing more than a “gateway” to the blockchain. There is no personal data saved on the site and the current upload form which sends the passphrase to the server is only there for testing. That’s not how it will work in livenet.

Therefore, instead of working on nftmagic.art, I’ve decided to buy the domain nftmagic.io and make that the “new” wordpress version of nftmagic. That would have allowed testers to still play around on the .art site while I was messing up with wordpress on the .io site. 

Around the same time SIGBRO announced that they would start working on the integration of NFTMagic on their platform allowing to upload NFTs using their secure wallet https://wallet.nxter.org/. And that was…

Holy Moly!!! This was no more some little prototype, but this was getting to another level. We were setting up a new format used by more applications.

We therefore decided to use ardor testnet 2.x for the new nftmagic.io site instead of the testnet 3.x. That was allowing us to use more wallets and infrastructure built around the 2.x version of ardor.

At the same time we were struggling with the definition of “stored on the blockchain”. This is a strong claim which was based on the fact that the media uploaded on NFTMagic is stored on the Ardor Data-Cloud. So it is part of the Ardor platform but it’s also prunable data which means that, in theory, this data could go missing if all archive nodes decide to remove that data. This is a one in a million chance, but as we are in the blockchain world we need to stand 10000% behind what we say therefore we started rewording our “stored forever on the blockchain” message with something a bit more “mild”.

On the other hand our community member Tre developed the asset-data utility that had an option to store the data on non-prunable messages making it closer to the “stored forever on the blockchain” claim.

While these things were happening, the website nftmagic.io was getting additional pages and functionalities. Here a few:

– a password-less wallet. Users could now add their Ardor address in the top bar of the site and that would allow them to see their Ignis holding

– an account page. The account in the top bar would show the Ignis holdings and clicking on that would open the account page. It would show which NFTs the user had and the estimated value in Ignis based on the highest bids.

– an artist page. By clicking on the account of the author of the NFT in the single NFT page, a new page would open with all the NFTs created by that same account.

– a collection page. Where the assets belonging to the same collection would be shown in a grid.

And then a storm appeared at the horizon…

During a peaceful day on twitter, while checking the conversations around NFTs, I came across a conversation about NFTs and IPFS and I introduced the idea behind NFTMagic and that’s when the storm started. As I want to put an end to this story, I will not mention names, but the NFTMagic solution was attacked because of the solution itself using Data-Cloud, because the nodes could not be Raspberry Pis due to the low ram, because of the storage cost being practically zero once the data was uploaded, wordpress being un-secure, etc, etc, etc.

Our little NFTMagic project was under a huge magnifying lens. Every single aspect about the messaging, website, underlying tech, etc was being shredded apart and analysed with the microscope. And keep in mind that this website was (and still is) on testnet and still being developed and changed all the time. Also the messaging on the pages was just dropped there without too much attention as we didn’t have yet a finalised product I didn’t put too much work in that as it could have changed at any time.

To summarise. I had a couple of sleepless nights, the conversation on twitter reached an all time low, but there was some good in all this. The community and Jelurida gathered around me and NFTMagic and fought tirelessly for several days. A huge demonstration of the bond that has formed in these years between the people in the NXT/Ardor community. There might be some different points of view now and then, but that bond is there and stronger than ever. I’ll never stop thanking everyone for that.

In those days there was also a bit of confusion between nftmagic.io and nftmagic.art, therefore I redirected nftmagic.art to nftmagic.io which was working fine on testnet 2.x. In that way we didn’t have a mix of NFTs on testnet 3.x and testnet 2.x which don’t share the same blockchain/db.

But let’s be honest. The people on the other side had very high technical competences and had some good points that after a few days, sank in, and we started discussing over those in our NFTMagic group.

The outcome?

Let’s have a look at IPFS and let’s see how we can put together the power of Ardor with the power of IPFS.

NFTMagic.art was therefore taking a different path. The path to Ardor + IPFS.

But what did that mean exactly. In a nutshell, the data of the media would no longer be stored on the Ardor Data-Cloud but on IPFS.

And what about IPFS? What is that?

For crypto enthusiasts, IPFS is at the foundations of Filecoin. For the others, it’s a technology that allows P2P replication of data based on a specific hash of the file called CID, which would always be the same for the same media.

And the replication of the data happens by “pinning” the CID. 

So let’s say that I have an IPFS node on my PC and I upload image1.png. Once uploaded this will generate a CID which is something that looks like this

QmZthE8S98bsNaEMZvrr2FzvmhfX5Png4k8zVBXSkMfVL3

Now you want to replicate this image1.png on your PC which is also running the IPFS software. You would then PIN that CID and that would create a full replica of the file on your PC.

Now when any node around the world wants to access that data all it needs to do is to download that file using IPFS and that CID.

The more PIN the CID, the more replication and therefore redundancy of the data.

At the moment there is no incentive to pin that data, but there might be something coming soon on the Ardor platform. And until that happens I have a couple of VPS and old PCs with lots of disk space that can host that data.

Let’s see if Ardor can become soon an alternative to Filecoin, or at least for this specific use case.

But with IPFS our “all-in-one” Ardor format we defined for NFTMagic had to be redesigned. The usage of the asset description + the data-cloud metadata had to be changed as we were no longer using data-cloud.

So here the solution.

Each NFT is represented by an Asset on Ardor and after uploading a file via NFTMagic this is how the description of that Asset will look:

N4TM|Smartvoting mission|2|1i|Awesome Videos||Qmb71hroYHTJKvk8NJSLqr8DuGEvW83zymJjF5B12xPDNA

As you can see this time I have chosen a “|” separated format as we are not that tight with the space as we were in the previous format and on the other hand we have a chance to keep the size of certain fields flexible when they don’t reach the max size.

So here is what those fields contain, from first to last:

– ID of NFTMagic: to distinguish from other platforms (4 bytes)

– NFT Name: name of NFT (max 40 bytes)

– Collection ID (Optional): The ID when belonging to a collection (max 4 base32 digits which means 1000000 in decimal)

– Collection Size (Optional): The max number of Collection pieces which can form the collection (max 4 base32 digits which means 1000000 in decimal)

– Collection Name (Optional): Name of the collection (max 40 bytes)

– ID in Series (Optional): This is used when a NFT is issued not as a single Asset with more units but as set of singletons (max 4 base32 digits which means 1000000 in decimal)

– IPFS CID: The ID of the IPDS CID (46 bytes)

The total max length of the asset description would be 148 bytes including the separators (“|”) which fits in the 160 max description for the singleton assets.

The additional information is stored into Asset Properties:

– Asset Description: Split in 2 asset properties named description1 and description2 allowing 160+160=320 bytes max length

– categories: comma separated categories (max 160 bytes)

– Collection Description: Split in 2 asset properties named collectionDescription1 and collectionDescription2 allowing 160+160=320 bytes max length

As the asset properties can be deleted or edited, the meta-data stored in that way should be things that don’t affect the unbreakable bound between IPFS, Asset, collection and series which are essential ingredients of the NFTMagic features.

After some testing this solution was working fine too, as the previous one on nftmagic.io, with the benefit this time of releasing Ardor from the task of storing heavy loads of data, as Data-Cloud was not designed for that purpose. IPFS instead is exactly designed for that purpose and of course there are no space considerations to take into account when it comes to data intense media formats like videos.

The only problem to solve is how to incentivise the IPFS nodes to PIN the NFTMagic data and how to make the distribution of that data smart enough so that it doesn’t need to be replicated on every single node but maybe only distributed in subsets where, eg, just 10 (just throwing a number here) nodes hold the same data, while others hold other data.

Now that nftmagic.art was the new thing I’ve continued adding some little features to it. This doesn’t mean that it’s better than nftmagic.io, it’s just the latest one so it’s easier for me to work on it. Any feature added on nftmagic.art can be added in the future also on nftmagic.io.

So here the new things that are available only on nftmagic.art at this stage:

– NFT Series: this has a different meaning compared to the previous blog posts or mentions in other channels. Now Series is more like Sets. It’s used when a user wants to issue a NFT with more copies but not with the same AssetID, but as singleton assets. This would more precisely fit the definition of Non Fungible Token as each asset will not be exchangeable for a unit of the same kind. Each will be unique.

– NFT Series pages: Now when a NFT is issued as a Series, there is a dedicated page that shows all the NFTs belonging to that series with the best bids and asks. They will be shown in a table and the links to the ask/bids in the preview (upper-right part of the page) will be redirected to the best ask. This is to facilitate the buyer to reach the cheapest one.

– Preview pages: now preview pages as “discover” or the artist page will show items only once. So no duplicates of same NFTs will be shown on the same page

– NFT Collection status: when the user’s Ardor address is in the top bar, the Collection Page will show little green dots under each NFT when the user owns it. This makes it easy to see what is missing to complete a collection

And I really enjoy testing with the help of the SIGBRO app. Buying  and selling is super easy thanks to the SIGBRO NRS plugin. It is a perfect companion to NFTMagic. It very much reminds me of TWINT which is one of the most popular payment methods here in Switzerland. Maybe one day everyone will know about SIGBRO, or at least I really hope so!

Hope you enjoyed a bit of news on the project and hope to see as many of you testing both nftmagic.io and nftmagic.art and let us know what you think and how we can improve it before landing on the Ardor mainnet!