Dawn of the Art Legos

In this post, I introduce you to the world's most advanced NFT system, even without smart contracts to power it. This is a world beyond ERC721 or ERC1155. Beyond digital-dust-gathering assets that just sit in your wallet and die, or wait for the next hype cycle.

This post will document some examples of what becomes possible with RMRK 2.0, so you can fully imagine the scope of RMRK's art legos. The use cases described here are not exhaustive.

Current Functionality

The commands we can issue in this system are called interactions. The current interactions are:

  • EMOTE functionality allows NFTs to accept emoticons on-chain. This is useful as a price-discovery method, and also as an additional mechanic when interacting with NFTs (see Kanaria). We used EMOTES for our art contest and they were so popular they broke Kusama (twice).
  • SEND, MINT, and CONSUME (burn) are all fairly standard.
  • LIST allows a user to list an NFT for sale, on-chain, without needing any gated UI or auction house to do a sale and take a commission.
  • BUY buys a listed item, immediately transferring KSM to the seller. A video demo of LIST and BUY is available here.

RMRK 2.0 Functionality

The coming upgrade which is needed for the Kanaria hatching event is dubbed RMRK 2.0. It brings the following new interactions alongside EMOTEs:

  • EQUIP (equip or unequip an NFT owned by another NFT)
  • EQUIPPABLE (define which collections are equippable into a Base's part)
  • LOCK (lock a collection to be limited, if originally minted as unlimited)
  • MINT (now refers to NFTs, not collections)
  • RESADD (add a new resource to an NFT - a different type to render)
  • SETATTRIBUTE (sets the value of a mutable attribute on an NFT)
  • LOGICADD (adds a bit of logic to an NFT)
  • ACCEPT (accepts a pending resource, child NFT, or logic)
  • BASE (creates a Base entity)
  • BUY (can now also "buy into" another address)
  • CHANGEISSUER (changes the issuer of a Collection or Base)
  • BURN (the new CONSUME)
  • CREATE (create a new collection of NFTs)
  • EMOTE (now allows emoting on any entity - RMRK1, RMRK2, or even accounts!)
  • SETPRIORITY (changes the priority of an NFT's resources)
  • THEMEADD (adds a new theme to a base for dynamic changes of parts)

It also introduces a new BASE entity which serves as an "interface" or "class" for composite NFTs.

This makes the following concepts possible.

Nested NFTs

NFTs that can own other NFTs. Think in-game characters and their inventories.

NFTs can be minted and equipped into other NFTs which can then gain alternative renders and functionalities based on what they “own”. This can also be abstracted into user-made collections, where a basket of NFTs can be for sale rather than listing them all one by one.

Conditional Rendering and Reactive NFTs

Conditional rendering is the ability of a certain NFT to display different visuals depending on certain conditions.

If some value exists on-chain, the NFT can react to it by changing its look or functionality. If a switch is flipped in the NFT itself (see Custom Fields below), this can also invoke a different render.

Multi-resource NFTs

An NFT can have multiple resources defined on it, of same or different type. Multiple images, coupled with a 3D model, and maybe a PDF instruction manual. In the case of identical resource types, the user can define which resource is default and can switch this value at will by interacting with the NFT.

As an example, an audio book NFT can be minted with three resources: an audio file, a PDF, and a high resolution cover. The loading of each resource would depend on the context it is loaded in, so if you load the book into Audible, it plays. If you load it into Singular, it opens the built-in PDF reader. If you load it into Opensea to sell it, the high-res cover is shown on the search results and collection pages.

NFT DAOs

NFTs are now interactive and can emit actions, send items, equip them, change state, and more. Some of these might be unique and too expensive for individuals to hold in their entirety.

Each NFT will be breakable into a predetermined number of fungible tokens where these tokens can be used to issue DAO-like commands to the NFT, e.g. the community can vote to EQUIP an item.

To break an NFT into fungible tokens, the owner must stake some $RMRK tokens. This prevents fungible token spam.

Examples

Now let's look at some examples of what becomes possible when we put these new art legos together.

The Multi-resource NFT

A multi-resource NFT is one that has multiple resources equally applicable to it.

An NFT can be a video game that contains JS code that executes when it's loaded in the browser, a high resolution image of the game as cover art, and a PDF manual of how to play the game. If you load this NFT in Opensea, their UI will know to load the high-res image to represent the NFT. If you load it on RMRK's Playground, the marketplace for NFT-based games, the game can also be played. In both cases, the PDF will come attached as a separate resource on the NFT.

An NFT that is a 3D model can have the actual model file, a high res image of it, and a thumbnail. A SERP page will load the thumbnail, a listing page will show the high res photo, or the model if it can support rendering them, and with the RMRK plugin, a tool like 3Ds Max or Maya or Blender can load the model file directly from the UI.

NFT Custom Fields

The NFTs in RMRK2.0 respect the Opensea Metadata standard for attributes, but they also have mutable fields on the NFTs themselves that owners and/or issuers of the collection can set. This is done, predictably, with the SET command.

On minting, an NFT will define the set of its mutable fields:

...
"mutable": ["priority", "resources", "upside_down", "mycustomkey"]
...

or leave it completely open:

...
"mutable": ["*"]
...

or be fully immutable:

...
"mutable": []
...

This allows minters to fully customize their NFT's flags, gaining smart contract functionality without needing smart contracts.

The NFT will inherit the mutable fields of its collection, but each NFT instance can individually override them.

Resource Adding

With multi-resources, there is sometimes a need to add a resource, like a different rendering style, long after the NFT's original minting.

If the resources field is set to be mutable, the issuer of a collection can create an alternative resource for an NFT in that collection, and then suggest it to the owner on-chain (RESADD interaction). The owner has to accept this new resource (RESACCEPT) to prevent the issuer from rug-pulling their art. The owner cannot add new resources to fake the appeal of their NFT willy nilly.

The Multi-resource NFT: Priority Switch

A multi-resource NFT can also have several images. For example, a Vorpal Blade NFT can have a beautiful stylized drawing or a realistic render.

The user can issue the SET command on the NFT, targeting the priority field (if it's mutable), to change the priority of the display. This way, the user picks between two different displays of the same NFT with a switch, and all UIs implementing the standards easily render this, across the board, in any app.

One example where this is in use is in Kanaria's secondary art. Specifically, the Art Contest is for secondary renders of the Kanaria birds where select birds will have art based on randomness and emotes, and guest art.

An additional use case of Multi Resource NFTs is being able to back-up the asset of the NFT on various platforms. These days many NFT projects pick a centralized server to host you artwork, and when the server goes down they can "rug-pull" your art. Things like this can happen:

However, if NFT assets are instead stored on multiple immutable media platforms at once, like Arweave, Crust, Filecoin, and IPFS, through 4 resources, you end up with redundancy that protects your art indefinitely.

Conditional Rendering: Reactive Painting

RMRK 2.0 NFTs use jsonlogic to add conditions into the NFTs that are non-turing-complete, but require no smart contracts.

A user draws a digital painting of a moon. This painting has two resources: an image where it's just a moon, and an image where it's a moonbase on a moon.

The NFT has a logic block like this one:

...
    "logic": [
        {
            ">": ["emotes.🚀", 50],
            "priority": [1, 0] // change prio based on condition == true
        },
...

To the RMRK system, this means "if people have collectively EMOTEd more than 50 🚀 to this painting, switch priority to 1, 0 instead of whatever it is now".

Assuming the moonbase is in the resources list at index 1, and the plain moon at 0, the NFT will display the moonbase by default for as long as the number of rocket emoji on it is above 50.

Nested NFTs

In RMRK 2.0, the owner of an NFT can be an Account on the chain, or it can be another NFT's ID. This means the system supports implied NFT nesting.

In order to mint a bundle of NFTs to sell them all at once, all a user has to do is mint an NFT and send them all to this one. There's no special class or flag to activate.

The NFTs do not have to be of the same type. Wanting to sell an NFT bundle called "Genesis #1s", thus minting an NFT that will contain Kanaria #1, SubstraPunk #1, and Chelobrick #1, as the first three instances of the first three NFT projects on RMRK, this is fine.

Note: There is no depth limit to the child layers, but obviously some clients and implementations will struggle with depth beyond a certain level if trying to render them all at once. Therefore it is our recommendation to implementers to only render the current and neighbor levels at any given point.

Nested NFTs + Composite Rendering

Let's explain the newly added BASE entity.

With RMRK 2.0, we can compose multi-element characters out of stackable SVG or PNG fragments.

An NFT can contain or own other NFTs, as explained above. But this can have more depth than in the above use case.

We can define a BASE for the NFT, which defines parts and slots. A BASE looks like this:

{
    "type": "svg",
    "id": "some-base-id",
    "parts": [
        {
            "bg": {
                "type": "fixed",
                "z": 0,
                "src": "ipfs://ipfs/hash"
            },
            // ...
            "wing_1_back": {
                "type": "fixed",
                "z": 1,
                "src": "ipfs://ipfs/hash"
            },
            "wing_1_front": {
                "type": "fixed",
                "z": 3,
                "src": "ipfs://ipfs/hash2"
            },
            "wing_1_slot": {
                "type": "slot",
                "collections": ["id-of-genesis-legendaries", "id-of-genesis-rares", "id-of-genesis-epics", ...],
                "unequip": "burn",
                "z": 2
            }
        }
    ]
}

This is an SVG type base, which implies it's used to create a composite NFT.

There are fixed parts, like bg, which define the image background at a certain z index (0 means behind everything - the higher the number, the more "above" everything else something is). But notice the three parts at the bottom: two fixed, and one slot. Put together, these mean: "The wing is composed of a front and a back, and slot in between. The slot can EQUIP items from the following collections, and if an NFT is unequipped, it is burned, not put into the inventory".

An NFT can use this base by referencing it as a resource:

// ...
    "resources": [
        {
            "base": "ipfs://ipfs-hash-of-base"
        },

Now let's assume an NFT in the collection id-of-genesis-epics, which is whitelisted in this base, has the following resources set:

// ...
    "resources": [
        {
            {
                "metadata": "hash-of-metadata-containing-guest-bird-art",
                "slot": "some-base-id.wing_1_slot"
            },
            {
                "metadata": "hash-of-metadata-guest-bird-art-with-jetpack"
            }        
        }
    ]

You'll notice it has two resources, each pointing to a static hash. But one also has a slot property that identifies which base and which slot in that base this resource is for.

This makes the NFT equippable into the base's slot of the same name.

If the owner of this NFT sends it into the NFT that uses the required base, then the owner of that NFT can issue an EQUIP command targeting the child NFT ID and the slot name.

Once equipped, the RMRK renderer will show the SVGs stacked, as defined by their Z index, composing a layered image. This is what makes Kanaria birds possible.

Fractional NFTs: NFTs as DAOs

This feature will come with RMRK 2.5

An NFT that is expensive may be out of reach for many people, but they might want to own a part of it. NFTs in RMRK can be fractionalized into fungible tokens, so that the holders of these tokens can not only own a piece of an NFT, but also plutocratically govern its functions (as a Decentralized Autonomous Organization, or DAO).

To fractionalize an NFT, its owner needs to stake (lock up) a certain amount of $RMRK tokens. This prevents fungible token spam.

Once the tokens are distributed, the holders and issue collective commands. For example, issuing a SET command on the priority field to change the priority of the resource rendering is now a plutocratic function of the majority tokenholders.

The Billboard

This is an example from our deck

Assume we have a metaverse with plots of land represented as NFTs.

Assume Bob buys three plots of land.

Assume Bob then finds an NFT on the Singular market which is a billboard with two resources: a 3D render, and a 2D high-res version shown on the marketplace.

Bob sends this billboard to the middle land NFT, the land NFT now has this billboard NFT as its child.

Because the Land NFT's primary resource is a BASE that has a structure slot, and the billboard has a resource matching that base and slot, Bob can tell the land to EQUIP the billboard. The billboard appears in the metaverse.

Assume that people who put on their headset immediately spawn next to this billboard, so corporations take notice that this billboard is getting a lot of views. They contact Bob for ad placement. Bob decides to fractionalize this billboard instead of selling ad space outright, and sell the tokens to the community (see Fractional NFTs, above).

It is now up to the corporations to:

  • mint the advertisement in the dimensions of the billboard
  • send the advertisement to the billboard
  • bribe the token holders to pick their ad, and not their competition's

Putting RMRK 2.0 art lego primitives together in such a way allows for community-governed virtual real estate management, an incredibly powerful metaverse concept.

Mixed Reality

RMRK 2.0 NFTs can be anything, including location-specific entities. Thus, they can overlay on top of the real world based on geo-tagging or even some AR markers.

In the not-so-distant future, we imagine we'll be able to wear AR glasses or lenses that can wipe real-world ads from our view around us. The billboards that currently pester you will be whitespace. Eye-based ad blockers.

But what if we could NFT-ize this whitespace and rent it out to the corporations whose products we're actually interested in, or to ad providers who share profit with us, like Brave?

With an NFT scenario like the Billboard example above, this becomes directly translatable into the real world - along with, for example, plutocratic governance over the massive ads in Times Square. What if the people - everyone - could share in this parallel visual economy? What if we could hijack our visual surroundings back from the ad corporations and replace the content with what we all collectively agree on, at the same time sharing profits?

Collaborative 🎶 Compositions

A user can mint an NFT with a base which has slots defined for musical notes.

Others can mint notes and send them into this NFT. The empty composition can be DAOified, and the composition can be plutocratically composed of multiple tones to result in a community-built decentralized song that is then tradable and playable as an NFT.

It is then possible to apply royalties to this song's purchases and plays, allowing for the communty to share their creativity's profits among one another.

The MMO

The nested NFT concept with equip mechanics lends itself perfectly to games. A character can be an NFT, this NFT can own a backpack NFT, and this NFT can own item NFTs, like potions, food, weapons. Armor from the backpack can be EQUIPped, and curses can be NFTs minted directly onto the character's buff slots, and get "burned" when un-equipped (i.e. cured).

This is something we're exploring as part of Valhello's revival.

The Twitch DAO

With fractional NFTs and the above gaming mechanics, it is not hard to imagine a Twitch streamer distributing tokens for their in-game character and letting the community govern, for example, this character's equipment and skill setup for the next raid.

You now have a direct and decentralized way for the audience to interact with what they're watching online.

Reforestation Game

A real-world parcel of land is bought by a charity, aiming to reforest the land. They need funding.

The tokenize the land into 500 parcels of 5x5 meters. Each tile is an NFT which has two resources: the photo of the land, and a digital representation of the land:

The land NFTs have a dedicated dapp website where they are all rendered via their isometric resource, resembling a game.

The land NFTs can be bought up, funding the charity effort. The ownership is not real, it's symbolic, like in those "Buy a lordship title" deals.

The charity is now funded and can start tiling the land and renewing the ecology.

Once the land is secured and fenced off, protected, regulated, for a second fundraiser the charity organizes the growing of 500 seedlings of trees, different (but compatible) types and breeds.

Users can buy these seedlings as NFTs, send them to the land of their choice, and the owner of the land can equip the seedling on their plot.

With conditional rendering and nested NFTs, the dapp showing the full terrain now also shows the seedlings being virtually planted, but in reality, the charity makes sure to plant those exact seedlings in their exact locations too.

The charity regularly maintains and cares for the seedlings, documenting each parcel's evolution and each tree's growth. These photos are sent into the seedling NFTs as new resources, and new illustrated digital seedling resources are added on top. This lets a digital tree "grow" alongside its real-world counterpart, showing a digital version of this plot of land being reforested in real-time.

Contest

We ran an idea contest based on the concepts above and here are the results.

The discussion place for RMRK.app based NFTs. Official announcements and community discussions.

5 comments

Loading replies...