Token Models: Fungible vs. Non-Fungible
Fungible tokens are fully exchangeable with each other. Fiat currencies are one example of fungible assets; a US dollar bill has exactly the same value as any other US dollar bills. They are transferred from one owner to another in order to pay for things. However, exchanging one dollar bill for another dollar bill usually does not make sense as they are of exactly the same value.
Fungible tokens are typically used for tracking balances and making payments. An example use case is binding the tokens to an organization’s account balance in a payment account, so that payments can be done with token transfers, and periodical netting and settlement can be done by querying the resulting token balances.
With fungible tokens, each account maintains a balance based on the amount of tokens the account owns. Tokens can be easily transferred to other Ethereum accounts through swap techniques or direct transactions. Just like bank transfers, when a token transfer is executed, the source account is debited the amount of the transfer, while the beneficiary account is credited the same amount. Kaleido supports the ERC20 token specification for fungible tokens.
Non-fungible tokens, which sometimes are represented by the acronym NFT, are unique instances. Each token is given a unique ID to distinguish it from others in the same token smart contract. A token always has an owner, and because each token is treated separately, their values can also be different. Some tokens may represent rare attributes with provable scarcity, and as a result they are likely in demand by more buyers and potentially worth more than those that represent only common attributes.
NFTs support ownership transfer and they can also be traded. Alice who owns a token representing a production batch of Scottish whiskey may trade it for a token representing a case of Bordeaux wine.
Another example use case is assigning a non-fungible token to a real estate property. It can be transferred from the Ethereum account of the bank to another Ethereum account of the house owner once the mortgage is paid off. Kaleido supports the ERC721 token specification for non-fungible tokens.