You might have heard of Bitcoin which is the hottest cryptocurrency on the block, but certainly not the only cryptocurrency. People are getting all gaga about it. The most exciting thing of bitcoin is not the bitcoin itself but the technology behind it called blockchain.

Blockchain allows you to have consensus on something in a decentralized way without trusting anyone. This has a lot of implications such as that anything that required a trusted intermediary to verify things is not required anymore. This opens a whole new set of applications that we might not have thought of before.

In this post I'm going to briefly describe what ethereum is and provide links to other resources where you can go to understand it better and start developing applications using it.

What

Ethereum is what I consider the next step in the direction of decentralization as it provides a complete turing machine on top of blockchain. I think of ethereum as one big giant computer made of all the nodes in the network and controlled by no one yet it provides a deterministic way of doing things. It's what some consider as Web 3.0, including me (at least from conceptual perspective).

You can imagine an Uber like ethereum application which is not controlled by anyone but the underlying technology of ethereum would allow all the drivers and passengers to agree on that which driver will pick which passenger, how much the driver is paid, what ratings the passenger gave, payments etc. Every device using that app will be doing some processing to make this happen hence contributing to the running of the Uber like decentralized app.

It is still an emerging and infant technology but this gives us the opportunity to shape the future.

Why

Before every how, there is the why.

In our current world of applications like Facebook, Google etc. value is created by data (e.g. earning ad revenue from user data). In this process the company profits but the actual users who create the value don't. In this decentralized world the value will be shared by all the users at varying degrees. Other advantages are transparency, no censorship, privacy etc.

Devcon is the annual Ethereum conference and the second one Devcon1 (yes the numbers start from 0) happened in November. It had a lot of interesting talks. I would recommend seeing Don Tapscott. He discusses how technologies like Ethereum can help us create more prosperity.

Vinay Gupta wrote an interesting blog post on the need of technology like ethereum. He discusses how our world is shaped by limitations of data systems and how there is currently a need to use data across different systems. He goes on tho discuss how ethereum can provide us a protocol of not just sharing data but also sharing the operations performed on that data hence using it across different systems to build a more connected world.

How

Interact with Ethereum network

Ethereum is a protocol (similar to bitcoin) and currently there are few clients written to talk to the protocol e.g. Go-Ethereum, Cpp-Ethereum and PyEthereum.

Like Bitcoin, Ethereum also contains a currency, called Ether and similarly there are user accounts that can receive and send ether. The ether is representative of value, so in the Uber example if you help run the app then you can be rewarded in ether.

I use the go-ethereum a.k.a goeth. The client allows you to communicate with ethereum network to create accounts, commit transactions etc. You can also check the live ethereum network stats from here.

Don't worry, you don't have to buy ether to develop for ethereum, you can spawn up test networks easily to play around with it.

Develop for Ethereum

The Ethereum based apps can be completely decentralized or hybrid with some aspects centralized and some decentralized. The decentralized apps in the ethereum world are also known as Ðapps.

As stated earlier that Ethereum is a turing machine which means you can not only store data in the network but the network can execute some code as well.

Ethereum is made up of ethereum virtual machine which has some set of opcodes, so you can write a program (called contract) and submit it to the chain and it will be executed when a request is made to execute something using your contract.

Contracts are usually written in a high level language such as solidity (inspired from Js) and then compiled into byte code to be uploaded to the blockchain.

Below is a great blog post to help you write your first contract/Ðapp using ethereum. In it the author goes over how to create a conference ticket buying Ðapp where you will ask the ethereum network to buy the ticket, the code will run on a node in the network and then you will have the ownership of the ticket and everybody will agree that you are the owner of the ticket.

Once you go through that tutorial a lot of things will start making sense.

After you are done with it, I recommend you to start watching some videos from the devcon1, currently being uploaded to ethereum youtube channel. This will give you an idea of what people are building with it, what the potential of this technology is and how people are building Ðapps.

I will keep on writing more about Ethereum as I learn. Thanks for reading.