This is part one of the “Developers Corner” series intended for KRBE Digital Assets Group newsletter.
In this “Developers Corner” series we are going to discuss decentralized applications (dApps). Web 3.0 is here! Lets talk about the history of the web and network systems. Lets talk about Web 3.0 and the introduction of dApps. The features that make a decentralized application and more!
Brief History of a Centralized Web
The world wide web started off decentralized. Everyone who wanted a website bought their own server and hosted their own data, but after the Dot-Com bubble, data started to become centralized. Data is being stored on a server and monetized. So now we have a world wide web made of up of large centralized data services. These centralized services among others are Amazon, Facebook ,Google, Twitter and Instagram. All data is routed through these centralized services.
These centralized services provide great value to our lives, but this centralization of data is bad in a couple ways:
- It’s shrinking the economy. In a good economy we monetize more and more, in a bad economy we monetize less and less. It creates less opportunities for individuals to generate capital.
- Too much concentrated power/data. Knowledge is power, when you give the data back to the people, you give the power back.
- We have no voice in how our data is used.
Centralized systems directly control the operation of the individual units and flow of information. Individuals are directly dependent on the central power to send and receive information. This is pretty much how all the web works right now
- Single server.
- Easy to publish.
- Difficult to scale.
- Single point of failure.
Distributed systems spread computation across multiple nodes instead of just one.
Decentralized systems are systems where no one node is telling any other node what to do. All nodes are equal in their authority. Bitcoin is both distributed and decentralized because its timestamped on a public ledger, the blockchain, resides on multiple computers and decentralized because if one node goes down the network is still able to operate.
- Multiple servers.
- Demand and failures better handled.
- No central point of authority.
Introducing Web 3.0
The invention of new technologies like BitTorrent which increased bandwidth, Bitcoin which allowed for decentralized consensus and others, we are now able to make Decentralized Applications. The mission of many developers right now is to re-decentralize the web with Web 3.0.
“dApps connect users and providers directly.” ~ Coindesk
Required Features of a dApp
- Open source
- Uses cryptocurrency
- Decentralized Consensus
- No Central Point of Failure
dApps are Open Source. Open source applications are built on trust. A web 3.0 technology stack to build a decentralized app will look like this:
- Scalable computation – Ethereum, Truebit
- File storage – IPFS/Filecoin, Storj
- External data – Oracles (Augur)
- Payments – Bitcoin, Ethereum
- Use of cryptocurrency
dApps use cryptocurrency. The cryptocurrency way of monetization:
- Allocate “scarce resources” in the network using a scarce token.
- Users need this appcoin to use the network. (Supply and Demand)
- Owners of “scarce resources” get paid in appcoins. (Ex: Getting paid for Tweets or Images Uploads)
dApps have decentralized consensus. Steemit, is the poster child of dApps. Steemit is a social media platform where everyone gets paid for creating and curating content. Users get paid for their “scarce resources” which are posts. The most valuable posts are the most paid posts. Steemit is a great example of a decentralized application. Requirements of decentralized consensus are:
- The use of a proof algorithm to maintain consensus (like proof of work).
- Distributed Hash Table to store data.
- Blockchain for app level constructs (usernames, emails timestamps).
- DHT + Blockchain, give it security.
- Smart Contracts (cryptoeconomically secured code), in a centralized app you trust your server to leave your code unmodified in a decentralized app you push your code to the blockchain traditionallty the Ethereum blockchain because they have a “Turing-complete” blockchain. Cryptoeconomically secured code means that once it’s on the blockchain the code is immutable (cannot be changed).
dApps have no central point of failure. An application that has no central point of failure cannot be destroyed by a third party. Traditionally developers use the IPFS (Interplanetary File System) stack for data storage. IPFS is meant to be a replaced more Http (Hyptertext Transfer Protocol) which is the normal way we access websites on the internet.
- Uses SFS (Self-certifying File System).
- Uses Merkledag all data is linked together.
- Uses P2P tech, data shards live across multiple nodes.
- No central origin.
- Utilizes content addressing.
- DDoS impossible.
“Web 3.0 is going to be an ecosystem of more autonomous applications that moderate themselves independent of their creators.”
Development Resources for Building dApps
We did the research so you don’t have to, here are three courses for beginners on Ethereum development.
- Coursetro – Developing Ethereum Smart Contracts for Beginners
- B9Labs Ethereum Developer Basics Course
- B21 Block Courses – Udemy Instructor