Lesson

The Ethereum Blockchain Pt 1

Ether is currently the second most valued cryptocurrency today but the Ethereum Blockchain is much more than just a cryptocurrency. It is a revolutionary way of utilizing blockchain technology to deliver programming functionality. One of the key concepts of Ethereum and many other blockchain technologies is the concept of decentralization. Decentralized means there’s no central agency or central server through which anyone has to go to access data or functionality. In fact, with something like the Ethereum Network, every node that’s running has a copy of everything that’s on every other node, meaning I can talk to any node and get the information from there.

It’s not critical that I go to one node or the other. Like Bitcoin, Ethereum is a blockchain technology. Where as Bitcoin was designed to essentially be a store of value, Ethereum was conceived to handle programming and to store data for programming. Bitcoin does have some programming functionality, but it’s not nearly as deep nor as simple as it is in the Ethereum network. Ethereum offers a full Turing complete programming environment.

There are some slight differences in implementation. One main difference is Bitcoin uses a Merkle Tree structure and this is essentially a way of compiling each of the transaction blocks and then including those blocks as you move up into a tree of blocks and encrypting a hash key for each one. Ethereum has a similar type of encryption key, however it uses what’s called a Patricia Tree, which includes not just the transaction, but also state information and receipt information.

Bitcoin doesn’t have any general state information. Essentially it’s missing some key information that you might need for programming, things like timestamps that could be critical in some types of applications like an auction. Ethereum however, includes the current state, which means we can get information other than just transactions. So overall, looking at the Ethereum network, it handles state management, not just transactions. We have greater access because of that to things like timestamps that can help us when we’re writing applications.

And overall, we have more programmatic ability because we have a deeper programming environment and a more simplified programming language. Ethereum has some key elements to their philosophy when developing their protocol. One of the key design philosophies is that the Ethereum protocol should be as simple as possible. The main goal is that an average programmer should be able to learn Ethereum and be able to program in this environment. It should be accessible so that anyone could program in this environment and write apps for this new protocol.

Other core philosophy is universality and this means that Ethereum isn’t going to have features, it’s going to be a Turing complete scripting language, which anyone can use to develop anything, but it’s not going to have specific apps built into it, that’s up to the programmer. Insofar as possible, they will make it so that anyone can use this to do anything, but they’re not going to focus on developing domain specific application. Ethereum is built to be modular.

The idea is that you can utilize different elements of the Ethereum network as needed. In addition, when they create new parts of Ethereum network, they’re usually built as plugins, as separate, feature complete libraries. The idea is that the Ethereum development environment should always be maximized to develop the whole ecosystem. Ethereum is designed and planned to be agile. The main thinking is that nothing is set in stone and that anyone should be able to question and change things as time evolves and as usage of the platform evolves.

And finally, there’s a strong policy of non-discrimination and non-censorship. There shouldn’t be any way to prevent people from doing specific types of thing using the Ethereum network. It should be open to anyone.

Course Discussion