Extension: Groupable, supply limitable NFT tokens as a derivative of fungible tokens

Jun 16, 19

I recently posted a pull request to the NFT specification for SLP tokens: https://github.com/simpleledger/slp-specifications/pull/10

I'm going to repost here and see if anyone likes it. If you do, chime in and petition to get it merged!


Extension: Groupable, supply limitable NFT tokens as a derivative of fungible tokens

A problem with the "one genesis per token" approach to minting NFT tokens is that one cannot limit the supply for any token class; additionally, passing batons to another minter is also impossible as the tokens are strictly linked by genesis address. Moreover, this approach centralizes minting authority in the hands of a single keypair, and can limit the usefulness of the product as a result. An approach that takes advantage of existing fungible SLP tokens is described below. This approach shall result in NFT tokens with additional flexibilities, and whose metadata still exist entirely onchain just as the fungible tokens.

Deriving NFT tokens from fungible tokens

Create a fungible token using a GENESIS transaction; for optimal NFT quantity management, it is recommended that the fungible token to be created without decimal places. In addition to the usual fields, add "NFT1 " at the beginning of document URL to specify that this token can be used to mint NFT tokens.

To forge an NFT token, first prepare an UTXO with one or more of the NFT-enabled fungible tokens associated with it; then spend that UTXO in a GENESIS transaction that generates a new token with quantity of 1 and decimal places 0, prefixing its document URL with "NFT1_" followed by token hash of the fungible token for quick lookup. This simultaneously generates a new token and burn one fungible token. Wallets that support this scheme can check whether a given NFT token is valid by tracing DAG up to genesis, check if the tx burned any of the fungible token it specified, and check the validity of that back to the genesis of said fungible token. Each NFT token generated this way will have its own secondary "NFT id" from the txid of its genesis, and can remain distinct from each other.

The NFT token need not be absolutely limited in quantity by genesis of the fungible token; just like any other fungible tokens, the "generating" token can have its minting baton passed to the next address, maintaining flexibility if so wished.

Maintaining control over minting

The scheme described above distributes NFT generating capability to any holder of the fungible token; it might be desirable for the minting authority to strictly control the ability to emit NFT tokens, but at the same time preserve guarantees about quantity limitations. To achieve that, simply generate the initial fungible tokens with the "NFT2 " prefix in document URL, and prefix NFT tokens generated with "NFT2_" followed by the fungible token's token id as above. The key difference is that NFT2 tokens can only originate from burning a fungible token held by the address that receives token from the genesis transaction; wallets should interpret a generation from UTXOs associated with any other address as invalid.

An exception to this rule is that if the minting baton is passed, then any address that received fungible tokens emitted by the baton also becomes valid generation addresses.

This is im_uname on honestcash 20190406 signing qrye0g0t2x0u7qkmfe3v0kedtjdhk8d2hvu9kx54ga IKspxN7cVcBVeb6B/tIZee38G3HWm/qPGarvS7hBGTcoJgULiuuqwFDcU48xbJnL3NLbKZXXhge5MHvuDn+eNeQ=


Upvotes (9)

Comments (2)
sort by  /

2 Apr 19 08:35

NFT tokens on BCash!! NFT tokens are like the ones used in ETH gaming Dapps, right? Do we already have such Dapps on Bcash?

0   1  

2 Apr 19 12:47

I need to let you know that unironically say "bcash" is very frowned upon in the community and will generally not net you any serious response no matter what you say.

0   1  

2 Apr 19 03:53

LOL, what! Why is it frowned upon. By Bcash, I meant BitcoinCash. What's wrong in it?

0   1  

3 Apr 19 09:50

People frown on it because when the fork first happened, Bitcoiners used it in a derogatory way. Roger Ver gets very mad about it. Some people want to say the word "Bitcoin" whenever referring to Bitcoin Cash.

To me, it's the Ripple/XRP naming convention of the space. I think it doesn't matter much, but yes, many people get upset about it. I think words are meant to convey meaning.

At the same time, I'd only say "Bcash" if I also normally referred to Bitcoin as "Bcoin."

1   1  

3 Apr 19 10:15

Makes sense. ?I'll avoid using Bcash then.

1   0  

2 Apr 19 04:30

Smashin' the upvote button!

1   0