DEV Community

Morgan Metz
Morgan Metz

Posted on

NFTs as first class citizens

The idea

NFTs are a staple of crypto technology, and are still being integrated as an afterthought, even on the most powerful blockchain framework around; cosmos. This plan will make it easy to make NFTs (And developers) first class citizens on cosmos, with a new Cosmos SDK module.

The plan

This will be made possible by building a series of native cosmos SDK modules which will derive the CW721 spec, as well as modules for the native exchange of NFTs on a chain based order-book, similar to Injective's chain order-book and AMM for CW20 tokens.

Modules

There will be 3 modules:

  • CW721 - The core chain module which allows for the storage of data on-chain. This will be primary functions like minting, sending, burning, etc.
  • Exchange - The primary order-book system. This will allow for the buying, selling, and auctioning of NFTs.
  • Registry - an index and global registry of all NFTs. NFTs will be stored with unique identifiers. (more later on)

Core module - CW721

The core module will be a standard implementation of CW721 version 18 (or latest at time of development), or, will implement x/NFT (ADR 43) if it passes. This may, however, become a purely custom module, and will not be implemented in the standard cosmos-sdk.

Exchange

This will likely be a global order-book, which allows for buying, selling, listing, and offering. These will all be native messages. This will allow for seamless UI integration and easy white-labeling. this takes most of the work, as well as the "Who does it best" from the exchange side of things, and allows projects to focus on top-tier UI, better client offerings, etc.

Registry

This will be a global, indexable, registry of all NFTs on chain. This will allow for easy searching of all NFTs on chain by their UUID. This UUID will be a base64 (otherwise TBD) name comprised of the token's contract/classID and TokenID concatenated together like class:token. The registry will store on-chain metadata, the owner of a token, and the URI to the media. This will also allow for an easy integration of domains, which can be indexed via hash-table to get the ID, then indexed by the registry for owner and metadata info.

Tech

The modules will likely function as a smart contract with a native wasm interpreter layer, using the go based wasmvm as its interpreter, this will mean a fork of wasmvm/wasmd and adding either the unbuilt contracts and having a build layer, or a built wasm contract embeded. All repos will be available on the Nebula github org.

Top comments (0)