A decentralized application(dApp) is a software application that connects smart contracts with UI. They’re backend codes deployed to the blockchain networks. Frontend hosted in decentralized storage like Filecoin, IPFS among others.
the characteristics of dApps: decentralized, deterministic, turning complete, and isolated. The dApp backend communicates with the Ethereum blockchain and can't be changed.
Why dApp Development
Benefits of Dapps development
- Zero-downtime: once deployed on blockchain the network as a whole is able to serve clients looking to interact with the contract
- privacy: you don’t need to provide real-world identity to deploy/interact with dApp
- resistance to censorship: no single entity on the network can block users from submitting transactions
- complete data integrity: Data stored on the blockchain is immutable & indisputable thanks to cryptographic primitives
- trustless computation/verifiable behavior: smart contracts can be analyzed & are guaranteed to execute in predictable ways without the need to trust a central authority
Drawbacks of dApps
- maintenance
- performance overhead: scalability
- network congestion: nodes are interrelated if one has an issue it will affect the other plus difficult computations
- user-experience: low adoption of web3 due to bad user experience...you can’t interact with a smart contract without frontend
- centralization: networks are not fully decentralized
Types of Decentralized Applications
Decentralized Finance(DeFi)
Development Environment Setup Options
Ethereum IDEs
writing a smart contract
- solidity documentation
- declare the license (identify the owner/standard) - use any license i.e MIT. without it, it will plug an error...have a license
- declare solidity version of code: pragma ^0.8.11 (use the latest version). Highly dependant on contracts you’re using some could have been declared absolute for older versions
- state contract: the contract is like a class in other program languages. declare the name of contract: voting system have a ballot.
- struct is like a user-defined variable(state & local variable - global). Struct is like a custom variable that has a data type of an address. uint. Within a struct, we have other data types.
- constructor input value before deployment: top priority functions should be inside a constructor's
Thank you for reading through my article on this series. I will be dropping more articles linked to my 100DaysofWeb3 journey. You can leave a comment or suggestion. We can also connect more on Twitter or LinkedIn