rename denom as type -- first batch
To avoid confusion with coin denom in `x/bank` metadata
This commit is contained in:
parent
9d60dfdfeb
commit
0dbfbdbda3
|
@ -10,7 +10,7 @@ DRAFT
|
||||||
|
|
||||||
## Abstract
|
## Abstract
|
||||||
|
|
||||||
This ADR defines the `x/nft` module which as a generic implementation of the NFT standard API, with some enhancements.
|
This ADR defines the `x/nft` module which as a generic implementation of the NFT API, roughly "compatible" with ERC721.
|
||||||
|
|
||||||
## Context
|
## Context
|
||||||
|
|
||||||
|
@ -44,30 +44,30 @@ We will create a module `x/nft`, which contains the following functionality:
|
||||||
|
|
||||||
#### Metadata
|
#### Metadata
|
||||||
|
|
||||||
We define a general `Metadata` model for `denom`, it is same as an erc721 contract on Ethereum, which manages all nfts in the contract, and is more like a set of nfts.
|
We define a `Metadata` model for `NFT Type`, which is comparable to an ERC721 contract on Ethereum, under which a collection of `NFT`s can be created and managed.
|
||||||
|
|
||||||
```protobuf
|
```protobuf
|
||||||
message Metadata {
|
message Metadata {
|
||||||
string denom = 1; // Required, unique key
|
string type = 1; // Required, unique key, alphanumeric
|
||||||
string symbol = 2; // An abbreviated name for NFTs
|
string name = 2;
|
||||||
string name = 3; // A descriptive name for a collection of NFTs
|
string symbol = 3;
|
||||||
string description = 4; // Description of NFTs
|
string description = 4;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
- The `denom` is the name of the same type of nft, just like the address of an erc721 contract on Ethereum.
|
- The `type` is the identifier of the NFT type/class.
|
||||||
- The `symbol` is an abbreviated name for NFTs in this denom.
|
- The `name` is a descriptive name of this NFT type.
|
||||||
- The `name` is a descriptive name for a collection of NFTs in this denom.
|
- The `symbol` is the symbol usually shown on exchanges for this NFT type.
|
||||||
- The `description` is a detailed description of denom, which extends the function of erc721.
|
- The `description` is a detailed description of this NFT type.
|
||||||
|
|
||||||
#### NFT
|
#### NFT
|
||||||
|
|
||||||
We define a general NFT model and `x/nft` module only stores NFTs by id.
|
We define a general model for `NFT` as follows.
|
||||||
|
|
||||||
```protobuf
|
```protobuf
|
||||||
message NFT {
|
message NFT {
|
||||||
string denom = 1;
|
string type = 1; // The type of this NFT
|
||||||
string id = 2;
|
string id = 2; // The identifier of this NFT
|
||||||
string uri = 3;
|
string uri = 3;
|
||||||
google.protobuf.Any data = 4;
|
google.protobuf.Any data = 4;
|
||||||
}
|
}
|
||||||
|
@ -75,15 +75,15 @@ message NFT {
|
||||||
|
|
||||||
The NFT conforms to the following specifications:
|
The NFT conforms to the following specifications:
|
||||||
|
|
||||||
- The `id` is an immutable field used as a unique identifier in the same denom, It is generated by the system and may be expanded to DID in the future. NFT identifiers don't currently have a naming convention but can be used in association with existing Hub attributes, e.g., defining an NFT's identifier as an immutable Hub address allows its integration into existing Hub account management modules.
|
- The `id` is an immutable field used as a unique identifier within the scope of an NFT type. It is specified by the creator of the NFT and may be expanded to use DID in the future. NFT identifiers don't currently have a naming convention but can be used in association with existing Hub attributes, e.g., defining an NFT's identifier as an immutable Hub address allows its integration into existing Hub account management modules.
|
||||||
We envision that identifiers can accommodate mint and transfer actions.
|
We envision that identifiers can accommodate mint and transfer actions.
|
||||||
The Id is also the primary index for storing NFTs.
|
The `id` is also the primary index for storing NFTs.
|
||||||
|
|
||||||
```
|
```
|
||||||
{denom}/{id} --> NFT (bytes)
|
{type}/{id} --> NFT (bytes)
|
||||||
```
|
```
|
||||||
|
|
||||||
- The `uri` is the off-chain storage address of nft attribute `data`, such as ipfs, etc.
|
- The `uri` points to an immutable off-chain resource containing more attributes about his NFT.
|
||||||
|
|
||||||
- The `data` is mutable field and allows attaching special information to the NFT, for example:
|
- The `data` is mutable field and allows attaching special information to the NFT, for example:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue