Decentralized Applications (DApps) are applications built on top of blockchain technology. Ethereum is the second cryptocurrency at the moment by market cap. Apart from being a cryptocurrency, it is also a platform for developing DApps. Ethereum developers first introduced smart contracts, which are basically computer programs built on top of the Ethereum blockchain. A smart contract is similar to normal contracts; however, it is an immutable and public DApp. Immutable means that once something has been published on the blockchain and consensus has been reached, it cannot be changed. Public means that all the parties involved in the smart contract can publicly see the conditions on the blockchain.
ICO stands for Initial Coin Offerings and is basically a way to raise public funds for new companies like IPOs in the stock market. ICOs can raise money for their startup by developing DApps in the form of a smart contract. The vast majority of ICOs build their DApps on top of the Ethereum blockchain platform. This is why Ethereum became so popular during 2017. Building a smart contract on the Ethereum platform requires studying a new programming language called Solidity. Also, in order to publish your application on the platform, you’ll need to spend some Gas. Gas is the internal fee for running your DApp. But there are already other competing platforms in this space like NEO, Lisk, and even Bitcoin community developing such a platform. These platforms come with innovative solutions, programming languages, and useful tools for developers to build decentralized applications. For example, the NEO platform promises the possibility for developers to write apps in more common programming languages like Java, Python, or Go. Ethereum community is working on solutions for non-technical people to deploy DApps on the blockchain.
Even though there are already working solutions and platforms for building DApps this technology is in the nascent phases of its development. Developers of these platforms still have a lot of work to do to solve the transaction speed of the blockchain network. If we want DApps to be adopted by the masses, we need to find a solution for improving the computational speed of the transactions and reducing internal fees. Another challenge is the security of the DApps. Because Dapps are public applications anybody can access them and try to find vulnerabilities and this fact makes them very attractive for malicious activity. To solve the security problem the platforms are developing new programming languages, like Solidity in the case of Ethereum, new tools for checking and debugging the DApp before publishing it to the blockchain, as well as instructing specialists on best practices during the development process.
Nonetheless, this technology is evolving because this is the future where applications will run in a decentralized way without the need of a middleman in the interaction of two parties who want to collaborate.