Understanding DApps: The Future of Decentralized Applications