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.

β’ 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