I have been learning about Ethereum blockchain platform for some time and the more I learn, the more exciting it looks. There are lots of resources (articles, videos, platform documentation) about Ethereum, it’s easy to get overwhelmed. But, many of them are outdated understandably because the platform is still evolving at a rapid pace. It took me some time to piece together and get a complete picture of what Ethereum is and how it works. Talking to developers in meetup groups and other online communities, it feels like there are many people who would like to get their hands dirty with this new technology but have the same issue. This article is my attempt at explaining Ethereum from a web developer’s point of view.
If you are a web developer, you know how a webapp with it’s client server architecture works at a very high level.
You have your web application hosted on a hosting provider like AWS, Heroku or a VPS. All the clients interact with this one central application. Clients can be a browser, another api consuming your service etc. When a client makes a request to the server, the server does it’s magic, talks to the database and/or cache, reads/writes/updates the database and serves the client.
This architecture works very well most of the times. However, there are certain applications where it would be really helpful if that database was publicly and securely accessible by everyone and you don’t have to rely on this webapp owner for your data.
For example, let’s look at eBay. If you are a power seller who has earned hundreds of good reviews and for some reason eBay suspends your account. That would be very bad and could severely impact your business. What would be really nice is the ability for you take all your reviews and ratings and move to another platform (say eBay Competitor). eBay does provide a service by being the trusted third party between buyers and sellers. But then, they also take a commission off each sale. What if there was a way to eliminate eBay altogether from the transaction between buyer and seller so you save on commission and also you have access to all your data? This is where decentralized applications come in to picture. Ethereum makes it very easy to build Dapps (decentralized applications).
This is how an Ethereum Dapp looks at a high level:
If you notice, every client (browser) communicates with it’s own instance of the application. There is no central server to which all clients connect to. This means, every person who wants to interact with a dapp (Decentralized Application) will need a full copy of the blockchain running on their computer/phone etc. That means, before you can use an application, you have to download the entire blockchain and then start using the application. This might sound ridiculous at first but it has the advantage of not relying on a single central server which might disappear tomorrow.
In reality, you don’t need to spend lot of your hard disk and RAM downloading the entire blockchain. There are a few workarounds/optimizations to keep the application decentralized yet make the interaction quick and easy.
Source/More: Ethereum for web developers – Mahesh Murthy – Medium