4. BCN-721

BCN-721 is a token standard that describes how to create non-fungible or unique tokens (NFTs) on the BIG5 Chain Network. Most tokens on the BCN are fungible, but BCN-721 tokens are non-fungible. Each NFT is unique and not interchangeable with other tokens. Therefore, BCN-721 tokens can be used to tokenize ownership of data and link unique identifiers.

BCN-20 allows developers to create multiple identical tokens within a single smart contract. However, with BCN-721, each token is assigned a different token ID. These unique IDs can be used to represent collectible, non-fungible items using BCN-721 tokens. Users can trade and transfer these tokens according to their rarity, utility, and market value.

Similar to BCN-20, BCN-721 tokens require BIG5 tokens to pay BIG5 gas. BCN-721 tokens can be created on BCN. BCN-721 contains a list of features that determine how a token interacts with a BCN.

β€’ Name

Defines the name of the BCN-721 token to be identified in other contracts.

β€’ Symbols

Shorter name of token (similar to ticker symbol)

β€’ Balance

Displays the token balance for a particular address.

β€’ Total supply

Defines the total number of generated tokens.

β€’ Default Ownership Feature Set

Some can be included as options. The unique function of NFTs is a metadata function.

β€’ Token metadata

This feature allows you to include metadata in the tokens used to connect to artwork files or other collectible aspects of NFTs.

β€’ Difference between BCN-20 and BCN-721 tokens

The BCN-20 token can be a common token issuance standard that can be traded on exchanges because it supports fungible cryptocurrencies. The meaning of 'fungible' is easy to think of when you think of money. For example, a $1 bill you have now and someone else's $1 bill are both worth the same. The same is true if you give it to someone else. All tokens issued as BCN-20 tokens have this 'fungible' characteristic. In contrast, the BCN-721 token is 'non-fungible'. All tokens issued under BCN-721 have their own value.

A comparison of fungible and non-fungible token

β€’ Applied Technology

BNC-721 implements a standard API for NFTs within smart contracts, which will provide the basic functions for tracking and transferring NFTs. BNC-721 considers the use cases of NFTs and the entrustment of third-party brokers/wallets/auctioneers, NFTs are ownership of digital or physical assets, and NFTs are distinguishable so that ownership can be tracked separately.

β€’ Physical property - houses, unique artwork

β€’ Virtual collectables - unique pictures of kittens, collectable cards

β€’ β€œNegative value” assets - loans, burdens and other responsibilities

β€’ SOLIDITY ISSUE #3412

It includes an explicit mutability guarantee for each function. The mutability guarantees are in order from weak to strong, i.e., PAYABLE, implicit insolvency, VIEW, and PURE. You must implement this interface's variability guarantees, and you can meet stronger guarantees. For example, the PAYABLE function of an interface is implemented in the contract as insolvent.

β€’ SOLIDITY ISSUE #3419

Contracts implemented by BCN-721 METADATA OR BCN-721 enumerable must implement BCN-721.

β€’ SOLIDITY ISSUE #2330

If the function marks this specification as EXTERNAL, then the contract is compliant if it uses public visibility.

NFT Identifier

All NFTs are identified by a unique ID inside the smart contract, which is never changed. While it may be convenient for some BCN-721 smart contracts to start with ID 0 and increase by 1 with each new NFT, recipients should not assume that there is a specific pattern in the ID number and should treat the ID as a black box. In addition, NFTs can be destroyed.

Transfer Mechanism

BCN-721 standardizes safe and unsafe transfer functions.

You can start a transfer by:

β€’ The owner of an NFT

β€’ The approved address of an NFT

β€’ An authorized operator of the current owner of an NFT

Authorized operators can set up an authorized address for the NFT. It provides powerful tools for wallet, broker, and auction applications, and allows you to quickly use a large number of NFTs. The document in the transfer and accept function specifies conditions only when a transaction must occur and excludes failed transactions. In BCN-721, there is no allowance because every NFT is unique and there is only one.

Thus, the benefits of the original design of BCN-20 apply. When an operator sends tokens, it does not act as an operator on behalf of the token holder, but rather as an operator that operates on its own. This is why both the operator, and the previous token holder are important to token recipients.

Gas and Complexity

If your application is upgraded, you won't use a for/while loop in your code. This indicates that the contract cannot be scaled, and that the cost of gas can go up indefinitely over time. If a loop is needed, remove the asset enumeration function and revert the solidity array type in the enumeration function.

Privacy

Wallets, brokers, and auctioneers identified in the Motivation section verify that the owner owns the NFT. You might be interested in considering use cases where NFTs can't be enumerated, such as a registry of property ownership, but an attacker doesn't get privacy because they can simply call owner0f for all possible tokenIDs.

Last updated