This is something I've had on my mind for quite a while, and after finishing up my entry for SBC I decided to wrap this thing up.
If you've happened to miss the CryptoKitties craze, NFTs are a way of representing classes of uniquely distinguishable items, like, uhmmm, cryptographic collectible cards w/ kittens.
Other examples could be land titles, cars, houses, in-game assets, etc...
stellar-nft
uses Stellar accounts to represent its tokens.
The metadata that uniquely defines a token is digitally signed by the issuer before being stored as an IPFS object.
The IPFS multi-hash, in turn, is used as the secret key for the account corresponding to a token.
An account uses its homedomain as a means of specifying its token class, and as a way to lookup the public key used to verify its authenticity, and (optionally) as a way of finding the multi-hash of the IPFS object that houses its metadata.
Ownership of a token is represented by signing rights.
NB: Because tokens are implemented as accounts, they are not tradable on the Stellar DEX.
Since stellar-nft
tokens are implemented using Stellar accounts, they fall under the same minimum account balance requirements as regular accounts.
- 2 base reserves fees - the account itself
- 1 base reserve fee - the additional signer representing the owner
- 1 base reserve fee - as a buffer for one extra signer when transferring ownership (new signer has to be added before old signer is removed)
Currently that amounts to 2.0 XLM.
An extra base reserve fee would be added if/when a data entry is used instead of reverse federation.
Issuing NFTs:
https://github.com/future-tense/stellar-nft-issuer
Interacting with NFTs:
https://github.com/future-tense/stellar-nft