Vara Non-Fungible Token (VNFT)
ERC-721 Analogue
The Vara Non-Fungible Token (VNFT) standard is the equivalent of Ethereum's ERC-721 on the Vara Network.
The Vara Non-Fungible Token (VNFT) Standard provides a unified API for programs to implement non-fungible token (NFT) functionalities. It encompasses critical operations like token transfer and approvals for third-party spending on the blockchain. Below is a detailed look at the state of the program, its interface, and key methods to facilitate these operations.
Framework Information
The project code is built using the Sails framework, which simplifies program development on Gear Protocol.
Functions
Approve(approved, token_id)
Transfer(to, token_id)
TransferFrom(from, to, token_id)
BalanceOf(owner)
OwnerOf(token_id)
GetApproved(token_id)
Name()
Symbol()Events
Approval(owner, approved, token_id);
Transfer(from, to, token_id);Key methods
Approve
pub fn approve(&mut self, approved: ActorId, token_id: TokenId)This function allows a designated address (approved) to transfer a specific token (token_id) on behalf of the token owner. It authorizes the approved address to handle the given token once. Upon successful execution, it triggers the Approval event.
Upon successful execution, triggers the event:
Approval {
owner: ActorId,
approved: ActorId,
token_id: TokenId,
}Transfer
pub fn transfer(&mut self, to: ActorId, token_id: TokenId)Transfers the specified token_id to the designated account to. This method checks the caller’s ownership before executing the transfer.
Upon successful execution, triggers the event:
Transfer {
from: ActorId,
to: ActorId,
token_id: TokenId,
}TransferFrom
pub fn transfer_from(&mut self, from: ActorId, to: ActorId, token_id: TokenId)Transfers a specified token_id from one account (from) to another (to), using the approval mechanism. This function ensures that the caller is authorized to make the transfer either as the owner or as an approved address.
Upon successful execution, triggers the event:
Transfer {
from: ActorId,
to: ActorId,
token_id: TokenId,
}Query methods
name
Returns the name of the token collection.
pub fn name(&self) -> &'static strsymbol
Returns the symbol of the token collection.
pub fn symbol(&self) -> &'static strbalance_of
Returns the number of tokens owned by a given owner address.
pub fn balance_of(&self, owner: ActorId) -> U256owner_of
Returns the owner of the specified token_id.
pub fn owner_of(&self, token_id: TokenId) -> ActorIdget_approved
Returns the address approved for a specific token_id.
pub fn get_approved(&self, token_id: TokenId) -> ActorIdConclusion
The provided service is a foundational base for creating your own token, rather than a complete application. It can be extended and inherited to add additional functionality, allowing developers to build upon this framework. The code for this service is available on GitHub.
By adhering to this standard, programs ensure interoperability and a consistent user experience across platforms and applications within the blockchain ecosystem. dApp developers can also ensure that their in-app tokens, built on this standard, will be natively displayed in user wallets without additional integration efforts, as long as wallet applications support this standard.