The native assets feature is an innovative way to separate token issuers from token owners and leave core operations to the protocol. Handling native assets is cheaper and safer but at the cost of lower programmability. Let's compare the approaches to tokens by the Cardano and Ethereum platforms.
Cardano is a so-called multi-asset ledger. An accounting infrastructure that is defined in the ledger model has been extended to be able to handle tokens in the same way as with ADA coins. The Cardano ledger supports tracking transfer and ownership of different types of assets on its ledger.
Cardano can mint, store and transfer tokens in a so-called native way, i.e. it does not need smart contracts like Ethereum. Native scripts are only used for minting (and burning) tokens.
Native transfer of tokens from address to address means that this functionality is provided by the Cardano protocol. The same part of the protocol source code used for the transfer of ADA coins is used for token transfer. All necessary functionality for handling tokens is implemented only once and is exactly the same for all tokens.
Simply put, the ledger and the protocol can handle tokens without the need for a third party (token issuer) to supply source code (smart contract) with additional rules and functions for basic operations.
Control over tokens
A user who wants to mint tokens must define a minting policy. This user is called an asset controller. The minting policy is a set of rules that defines, among other things, who and under what conditions will have control over the supply of tokens, i.e. over minting and burning. This user is called a token issuer. Asset controller and token issuer can be one entity.
Adherence to the minting policy is checked by the node always when a transaction is processed. There is almost no room for any exploit.
In the image below you can see who has control over the tokens during their life cycle. The minting and burning of tokens are controlled by the token issuer. He needs to interact with the Cardano node. Once the issuer sends the tokens to the user addresses, they are the only ones in control of the tokens via their own wallets. In other words, the transfer and ownership of tokens are not dependent on native scripts.
Cardano ledger is responsible for storing tokens and the protocol is responsible for their transferring. Token holders use a regular Cardano wallet to construct and submit a transaction to the network to spend tokens.
Users can use the tokens in third-party applications. Note that the scripts for minting and burning tokens are separate from the applications. Applications (executed in the Plutus platform) interact with Cardano to manipulate tokens.
In the blue boxes are the processes that are provided by Cardano and whose functionality cannot be defined or limited by the token issuer. In the red boxes are the processes defined by the token issuer. In the yellow boxes is the execution environment (platform) allowing to process user scripts (programs).
Once users own tokens, the token issuer has absolutely no control over them. Users can send tokens to each other and only need the Cardano protocol and ledger. The token issuer can only gain control over the tokens (and possibly burn them) if users send them to its address. Users can use any smart contract completely without restrictions or the need to request the permission of the token issuer.
Below is a similar image for Ethereum so you can compare both platforms.
Advantages and disadvantages of native assets
One of the biggest advantages of native assets is that they can be sent through regular transactions much like ADA coins. The fees are lower, as the demands on computer resources for their transfer are lower than if a smart contract had to be used. If it were necessary to use a smart contract, the fee would depend on the complexity of the smart contract (on the amount of consumed resources).
Being independent of smart contracts makes it easy to send multiple tokens in a single transaction. It is even possible to define multiple recipients in a transaction. The verification of such a transaction is straightforward and, as said, the same for all tokens.
Storing tokens in the ledger and transferring them through the Cardano protocol is more secure, as it is not dependent on the functionality implemented by a third party in the smart contract. This way tokens cannot be lost due to a bug in the contract code. It is not necessary to copy/paste some other existing contract or invent something new.
The inability to customize the rules for transferring tokens has a disadvantage if the token issuer wanted to define them himself for some reason. If the token issuer would like to retain control over the transfer of tokens due to the need to comply with regulations, this is not possible in the case of Cardano. For example, issuing stablecoins in a certain jurisdiction may require the ability to implement blacklists, censor transactions, or freeze accounts.
Notice that native tokens have the same (or very similar) properties as ADA coins. It is not possible to prevent someone from using tokens, implement transaction censorship, or freeze an address with tokens.
It is very easy to audit tokens as they are transparently stored in the ledger. Just look up the minting policy and the auditor has all the necessary information at hand.
Comparison of Cardano and Ethereum
When minting tokens on Cardano, it is possible to define only the basic properties of tokens such as name, quantity, and the entity that can mint and burn tokens. Functionality can be defined only for minting and burning. For example, it is possible to specify a time after which further minting or burning of coins is prevented.
When minting tokens on Ethereum, it is necessary to write an entire smart contract in which the functions are defined, i.e. the specific behavior of each operation with tokens. In addition to the name and number of tokens, it is necessary to define functionality for minting, burning, token transfer, and other things. For example, an approval function can guarantee accounts the ability to spend a certain amount of tokens on behalf of the sender. Furthermore, allowing a function that allows querying the amount of tokens that an account is allowed to spend on behalf of another account.
Ethereum allows higher programmability of tokens. The token issuer has much more control over not only minting and burning tokens but can define who can spend the tokens and under what conditions.
The image below describes the functionality that is controlled by the smart contract and protocol.
In the red boxes are all the processes that must be defined by the token issuer. The smart contract defines the functions and events that govern the creation, transfer, and balance of the tokens. The smart contract also maintains a mapping of each account’s token balance in its storage. The Ethereum protocol only provides the execution environment (platform) for deploying and executing the smart contract.
The Ethereum protocol does not have any knowledge or control over minted tokens. It only executes the smart contract code according to its rules and records its state changes on the ledger.
The Cardano protocol knows about minted tokens and controls their transfer through transactions and storage in the ledger.
The different approach of both platforms is reflected in how tokens can be used by third-party applications.
Applications in the Cardano ecosystem can arbitrarily work with all existing tokens through native transactions. The teams building the DEX have full control over all functionality. They can define the conditions under which tokens can be spent. Token issuers have no control over the use of tokens in third-party applications. In other words, teams define the functionality that allows them to receive tokens from users (usually in exchange for other tokens). Furthermore, they themselves define the functionality of liquidity pools and token swaps. Each DEX can perform significantly differently.
In the case of Ethereum, multiple smart contracts must interact with each other together. The team building the DEX must create a smart contract that interacts with the smart contracts that were used to mint the tokens. If you want to swap tokens on Uniswap, 4 smart contracts interact. Smart contract for token X, contract for token Y, smart contract for liquidity pool with tokens X and Y, and the so-called router contract, that facilitates the interaction between the user and the pair contract. Teams building DEXs are somewhat limited by the operations defined in smart contracts for token minting. Fortunately, standard interfaces are used, so interaction is relatively easy.
Tokens in the Cardano blockchain are UTxOs like ADA coins. It is possible to process transactions and validate scripts in parallel. Notice that sending tokens is completely independent of the Plutus platform. The Plutus platform can be used to define more advanced behavior.
Tokens in Ethereum are balances that are stored and adjusted by smart contracts. Parallel processing is impossible because only one transaction can be executed at a time by each node in the network. This is because Ethereum uses a sequential execution model and token handling (including transferring of tokens) is dependent on the execution environment (EVM).
Minting tokens on Cardano is simple and relatively safe, as the token issuer only defines the basic characteristics of the tokens and the right for minting and burning. Basic operations with tokens are provided by the Cardano node, more complex operations can be programmed in Plutus scripts. This makes sending tokens very cheap as it consumes a minimal amount of computer resources.
Ethereum requires the token issuer to define (program) all important functions for operations with tokens, including transfer. Greater control over tokens by the token issuer is useful in some cases but at the cost of higher demands on the consumption of computer resources.
The difference in both approaches is probably most visible in the possibility to issue stablecoins that must comply with regulatory requirements. On Ethereum, it is possible to restrict users from spending tokens (censor transactions, freeze accounts), while Cardano does not allow this at all.
The higher programmability of Ethereum can of course also be used for other positive functionality, not only for restricting the rights of users regarding the spending of tokens. Cardano lacks functionality similar to the ERC-20 standard that would allow the token issuer to have more control over the tokens. At the moment, it is technologically impossible to have regulatory-compliant stablecoins on Cardano. On the other hand, perhaps it would be better if regulators allowed the existence of stablecoins over which only the owners have control.