Output Types and Features
The simplest output is the basic output. At the minimum, you will need to specify an address and amount of tokens. However, you can customize this basic output to include a variety of features and unlock conditions.
An alias output is essentially a UTXO state machine that stores the state second layer smart contract chains and allows for two controllers, which can be rotated and create custom native tokens linked to the alias address.
You can create a foundry output to control the supply of your native tokens.
Unlock conditions have always been present in crypto. The first and clearest example is the recipient address. The stardust upgrade adds new unlock conditions that will allow you to add expirations, timelocks and specify the storage deposits.
The most traditional unlock condition is the address. Addresses can only unlock outputs with their signatures.
Storage Deposit Return
Due to the storage deposit rules, you cannot create transactions smaller than the minimum deposit. However, with the storage deposit return unlock condition, you can specify an amount that will need to be returned once the funds are unlocked. This way, you can send micro-transactions as small as you want. You will only need to send the minimum deposit, which will be returned once the micro-transaction is processed.
In Shimmer, you can define an expiration date and time for an output. This way, if the output isn't consumed by the expiration date, it will be returned to your account. This is particularly useful if you want to cancel a transfer if a deadline isn't met.
The metadata feature allows you to store any piece of data within an output. However, there are size constraints as transactions are limited in size. This is hardly an issue as you can slice data into manageable chunks.
The issuer feature is quite similar to the sender feature, but it is only available when you mint an NFT. Artists can use this feature to add a verified Issuer to the NFT and protect buyers and traders from counterfeits.
The tag feature is similar to the metadata features, but it aims to serve a different purpose. Though both features allow you to store data in an output, tags can be indexed. This means you could map data metadata from a verified sender.
You can find a more detailed description Stardust Ledger in the Stardust Protocol docs.