Types of decentralized applications