Skip to content

BEP 7: Bring Non-fungible Tokens(NFTs) to Binance Chain and expand the use cases.#7

Closed
amazingandyyy wants to merge 28 commits intobnb-chain:masterfrom
amazingandyyy:new-proposal
Closed

BEP 7: Bring Non-fungible Tokens(NFTs) to Binance Chain and expand the use cases.#7
amazingandyyy wants to merge 28 commits intobnb-chain:masterfrom
amazingandyyy:new-proposal

Conversation

@amazingandyyy
Copy link
Copy Markdown
Contributor

@amazingandyyy amazingandyyy commented May 23, 2019

bep-7

With Non-fungible Tokens, we can expand the token use cases on Binance Chain to be:

  • Event Ticket
  • VIP Privilege Status
  • Collectibles Assets
  • more ...

Every token is transferrable, tradable, mintable, burnable and most important, non-fungible.

@darren-liu
Copy link
Copy Markdown
Contributor

It reads to me majority of the BEP is the same as the BEP2. It will be more clear and usable to highlight the commons and differences from BEP2, which is more friendly to readers and tells details for implementation and usage.

@amazingandyyy amazingandyyy changed the title BEP 7: Bring Non-fungible Tokens to Binance Chain and expand the use cases. BEP 7: Bring Non-fungible Tokens(NFTs) to Binance Chain and expand the use cases. Jun 12, 2019
@amazingandyyy
Copy link
Copy Markdown
Contributor Author

amazingandyyy commented Jun 18, 2019

@darren-liu I change some contents in the past week, the biggest difference here

  1. introduce the idea of collection which contains a symbol, e.g. NNB-B90, totalSupply, and a []NFT nft token array)

  2. every NFT has it's own incremental id and metadata field which make this NFT highly compatible to other existing NFT tokens, e.g. ERC721, to make it easy to integrate with third-party services as @ProjectOpenSea and then smooth out integration on @trustwallet per @vikmeup's suggestion.

@okwme
Copy link
Copy Markdown

okwme commented Jul 20, 2019

@darren-liu I change some contents in the past week, the biggest difference here

  1. introduce the idea of collection which contains a symbol, e.g. NNB-B90, totalSupply, and a []NFT nft token array)
  2. every NFT has it's own incremental id and metadata field which make this NFT highly compatible to other existing NFT tokens, e.g. ERC721, to make it easy to integrate with third-party services as @ProjectOpenSea and then smooth out integration on @trustwallet per @vikmeup's suggestion.

i'm worried about the requirement of incremental id. In the spec you list ID as a string but incremental IDs make me think you imply to change to int. There are many projects which will need more fine grained control over their ID system. ERC-721 handles this well by allowing tokens to be queried by index while not requiring the token IDs to be incremental.

For example I have a game where I encode some item information into the ID itself, this is a convenient way for me to store information about the NFT without redundant storage costs.

Or another example might be NFTs that represent in-stock items that already have their own alphanumeric id system. It would be redundant to have multiple IDs per item and the app designer would prefer to use the same ID on both systems.

For this reason I'd suggest allowing IDs to be string but create an additional qeuerier that requests information about denomination and the index of the NFT. Furthermore this could be extended into a full pagination with an index and a limit to access multiple NFTs incrementally while still preserving choice of ID.

@okwme
Copy link
Copy Markdown

okwme commented Jul 21, 2019

For reference here is a summary spec of the Cosmos-NFT Module:
https://hackmd.io/@okwme/cosmos-nft

@fedekunze
Copy link
Copy Markdown

For reference here is a summary spec of the Cosmos-NFT Module:
https://hackmd.io/@okwme/cosmos-nft

Moved to cosmos/cosmos-sdk#4766

Copy link
Copy Markdown

@casmirconsensys casmirconsensys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good now...

Copy link
Copy Markdown

@casmirconsensys casmirconsensys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good now!

@amazingandyyy
Copy link
Copy Markdown
Contributor Author

@casmirconsensys I can see one major thing is unclear is about the chianId, may need to have eng from binance come in and give their idea of cross-chain/IBC/cosmos...etc technical details on this.

@okwme
Copy link
Copy Markdown

okwme commented Jul 31, 2019

download (1)

Here's the technical diagram from the call today. This relates to lower level implementation but also brings up some of the Msg Types that a BEP-7 NFT might want to use:

  • NewCollectionMsg - For making new Collections (probably after paying a fee)
  • RemoveCollectionMsg - For removing Collections by some admin that might violate some TOS
  • ChangeExecutorMsg - Updating the execotor role for a collection
  • ChangeTotalSupplyMsg - Updating the totalSupply for a collection
  • FreezeCollectionMsg - Freezing transfers of a collection
  • UnfreezeCollectionMsg - Unfreezing transfers of a collection

@amazingandyyy
Copy link
Copy Markdown
Contributor Author

amazingandyyy commented Jul 31, 2019

Summary from zoom call with cosmos & binance team on 7/31 12pm:

  1. cosmos will release BasicNFT keeper(including collection/nft) in a seperated modules repo, and hope binance can build another keeper layer(binance-specific keeper) on top of it
  2. for metadata concern, tokenURI is only properties in the BasicNFT keeper
  3. The scope of this PR(BEP7) is to propose of
    a. define binance-specific keeper(more properties)
    b. define binance-specific handler(more management)

| **Field** | **Type** | **Description** |
| :--------- | :-------- | :------------------------------------------------------------ |
| Denom | string | The symbol of a collection - e.g. NNB-B90 |
| ID | string | The id of a token in the collection |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think the freeze period is necessary? If there is no freeze period, the owners can freeze and unfreeze their assets at anytime, thus the freeze operation will have no limitation for owners.

Copy link
Copy Markdown

@casmirconsensys casmirconsensys Aug 27, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm I think this may be a layover from BEP2... Agree let's toss it if it's not relevant to BEP7

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@casmirconsensys why, I think freeze is a good feature.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@HaoyangLiu Freeze period is a good suggestion, have any idea of what time unit it should be? (blocktime, block height...etc)

| **Field** | **Type** | **Description** |
| :--------- | :-------- | :---------------------------- |
| Denom | string | The symbol of the collection |
| Amount | int64 | The amount is positive and can have a maximum of 8 digits of decimal and is boosted by 1e8 in order to store as int64. |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it necessary to have decimals for non-fungible tokens?

Copy link
Copy Markdown

@casmirconsensys casmirconsensys Aug 27, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm... unless its a composable ERC998 or an NFT like ERC1155 that can mint multiple ERC20 & NFT from the same type of contract if say for instance we needed to represent that in a Wallet perhaps maybe @coinfork from Enjin can chime in on how representation in a Wallet like Trust Wallet with Binance BEP2 could be a potential use case..? From what I understand some ERC1155 can have ERC20 like properties as well no? @coinfork

//ERC1155 Metadata JSON Schema
Assets made on the Enjin Platform may contain metadata that is based on the ERC721 Metadata JSON Schema. We are adding an optional formatting standard to this schema to increase efficiency for games that need to manage metadata for thousands of items.//

JSON Format
Example:

{
"name": "Asset Name",
"description": "Lorem ipsum...",
"image": "https://s3.amazonaws.com/your-bucket/images/{id}.png",
"properties": {
"simple_property": "example value",
"rich_property": {
"name": "Name",
"value": "123",
"display_value": "123 Example Value",
"class": "emphasis",
"css": {
"color": "#ffffff",
"font-weight": "bold",
"text-decoration": "underline"
}
},
"array_property": {
"name": "Name",
"value": [1, 2, 3, 4],
"class": "emphasis"
}
}
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@HaoyangLiu yea, I am thinking just use uint

Copy link
Copy Markdown

@casmirconsensys casmirconsensys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks ready to merge!

Copy link
Copy Markdown

@casmirconsensys casmirconsensys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this requesting for approval from @amazingandyyy?

@amazingandyyy
Copy link
Copy Markdown
Contributor Author

yes, @casmirconsensys it will be great if this can get merged and the community can move forward to help

@casmirconsensys
Copy link
Copy Markdown

@amazingandyyy Let's Do This!! Who else is on board to approve this thing? @okwme @zmanian

@casmirconsensys
Copy link
Copy Markdown

@casmirconsensys I can see one major thing is unclear is about the chianId, may need to have eng from binance come in and give their idea of cross-chain/IBC/cosmos...etc technical details on this.

What have we heard from Binance Eng about this so far? @amazingandyyy

@okwme
Copy link
Copy Markdown

okwme commented May 14, 2020

confused why my comments are marked as "pending" still...
Screen Shot 2020-05-14 at 11 18 16
Screen Shot 2020-05-14 at 11 18 23

Copy link
Copy Markdown
Contributor Author

@amazingandyyy amazingandyyy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@okwme thanks for the screenshot, I updated it on line 150 accordingly.

For pending comments, you need to click the right top green button (finish your review)

Screen Shot 2020-05-16 at 19 49 20

Copy link
Copy Markdown

@casmirconsensys casmirconsensys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice to have some XML-JSX-TSX Metadata Schemas added.

@brilliant-lx
Copy link
Copy Markdown
Contributor

outdate, archive it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants