Introduction

Several months ago I read about a group claiming to be developing the next version of the web. With a tagline like that I couldn’t leave it to chance that someone else might be the first to point out how ridiculous this idea was and so, I had to read up on it to properly form the best roast! Long story short, I have become a believer and I will be talking about why, how, and where to get started learning and using Ethereum yourself.

Ethereum is usually categorized as a cryptocurrency. Since cryptocurrencies are new and somewhat mysterious to many people (other than the constant news about Bitcoins value…), let’s start there. Cryptocurrency creates a unit of value which can be traded between parties, converted to Fiat (cash) on an exchange, or held as an investment.

You might be wondering what a new kind of currency has to do with the next version of the web. Well, it isn’t exactly money, it’s much more, and that is the part that actually opens up some very interesting functionality / possibilities. Here is a breakdown of the basic features that make up the Ethereum cryptocurrency:

  1. Distributed Work Trust – Transactions are validated through a system of Distributed “Miners” that create a linked chain of parent child relationships leveraging consensus and Entropy of scale to build in protections against Fraud and Forgery.
  2. Transactional Integrity – Transactions are signed in such a way as to make them quickly verifiable both in internal integrity to each block, as well as each blocks’ place in the chain to create an immutable sequence and protect against Fraud and Forgery.
  3. An Immutable Data Store – Referred to as a “Distributed Ledger,” values can be added to the signed and verified transaction chain becoming part of the distributed, and immutable record.
  4. Distributed Logic Processing – Ethereum provides the benefit of executing functions in a Turing complete language across the distributed node and mining network. These functions (commonly referred to as contracts) are added to the chain (or Ledger) as Libraries which will exist so long as the chain does. For reference, “Contracts” are also available in Bitcoin though under a non-Turing complete implementation. This is one of the big advantages of Ethereum.

In summary, this list of features inherent to this cryptocurrency provide a means of creating a trustworthy set of stored data and functional libraries that are distributed across a worldwide working (processing) group. Which means….you can store data and code in this distributed ledger. (Cloud would be a good description but the term is Overloaded.)

Let that sink in.

Solving Disappearing Code

Meanwhile, do you remember the day when a single developer decided to take his code down from the NPM repository and numerous projects imploded?

Tools like Git are designed to prevent this kind of disaster by ensuring there are copies stored locally on many machines. But you still run into the problem of having to go find those copies, and figure out which one is current, valid, and trusted (see not malicious replacement). Then you have to promote and tell everybody to get all the broken projects working again. Egads.

Disappearing code is one of the problems with the net today that can be solved by Ethereum. Creating “contracts” of code and storing them in the distributed ledger means they will always be available (which isn’t the same as runnable). So we can always look up the code, which is a good start….

But wait, there’s more! Not only can you look up these libraries on any accessible Ethereum Node, so long as the code has not been “suicided” (which you can check for easily), you can use Ethereum to actually perform logic, encryption, value transfer, data transfer, and data storage in complex structures. There are 2 core methods for using the contracts in the ledger.

  1. If you are just reading them, or reading the ledger, or calling processing but not storage, there generally is no or low cost associated.
  2. If you wish to store data, or variables in the Distributed Ledger, or execute computation, there is a fee which is called “gas” in Ethereum. Gas is another term for Ether when being used in a contract. The fee is variable, and there are tools which can help you identify how much a contract will cost to run.

Mining for Rewards

Let me back up just a bit to talk about rewards (where gas / Ether comes from). All those machines out there that are happily storing your code, or your family recipes, or creating new ways for you to transfer money such as requiring 2 people to sign for a withdrawal… those machines are not providing this service entirely out of the goodness of their hearts.

Every time a transaction is processed and gas (Ether) is consumed they collect a fee. These miners, that are the heart of the processing system today, also cryptographically sign the record for each transaction ensuring the immutability of the record.

The mining system operates on a means of luck which provides a sum of newly generated Ether to the miner that generated the first correctly processed, signed, and agreed upon (by consensus) block. I could talk about this system for hours as it is very interesting, but it is a different subject than what I want to convey so I’ll close this section with one thing for you to take away. There is a system of incentives for people to store data and process transactions all across the world that enables this incredible functionality… and they get rewarded for their effort with Ether.

Where’s the Value?

Knowing Ether comes from processing transactions (or purchasing existing Ether directly), it becomes apparent why Ether has value. If I want to have my code run it must have sufficient gas (Ether) before the execution of the contract which has to come from me, or another party as defined by the contract logic. This represents a whole new way of managing the ongoing operation costs of the network and ensuring data and code is permanently around.

The list of projects based on Smart Contracts and the Distributed Ledger processing system known as Ethereum grows everyday. Projects using contracts in production are commonly referred to as “Dapps” and many can be found at: https://www.stateofthedapps.com.

Some examples found at this site utilize functionality like buying and selling event tickets, games, building a lottery, creating a custom cryptocurrency (see the SEC regulations about ICO’s before doing this), create a new system of DNS, a peer review system, a secure waitlist, a secure voting system, affiliate programs, and many many more. These all include libraries that are forever etched in the blockchain, some reusable.  

Not only are there really amazing libraries being generated in this new distributed web, but these represent a new way of managing distributed transfer of value that isn’t a thing now. Think about what it might be like if you could require an arbitrator to sign one way or the other in a sale of eBay goods. You wouldn’t have to rely solely on the system of feedback, you would have a third party that could sway the transaction one way or the other if there is a disagreement between the parties. The same for voting and numerous other interactions.

Hopefully it’s clear how this system is directly relevant to or as the next generation web. This is a new means of providing “cloud” computing, on a global, secure, and potentially infinite scale. The features that enable a far more advanced version of currency enables this new web of functionality. Very cool.

Getting Started with Ethereum

I’d guess your next question might be “where do I get started?” I would suggest understanding how you can utilize and create / execute the code and resources. Here are 4 key areas you can begin with:

  1. Ethereum Wallet – This is most people’s primary link to the Ethereum Universe. It not only stores and secures the cryptocurrency Ether, as well as write, deploy and use smart contracts. You can find the download here: https://github.com/ethereum/mist/releases/latest
  2. Ethereum Node – Geth is the program to instantiate a full node. The full node contains the entirety of the blockchain and synchronizes with the rest of the nodes in the network. The full node also is the basis for creating test or custom blockchains, and using the Mist Ethereum browser. Geth is a tool used to set up an internally accessible RPC server for web passthroughs.
  3. EVM – The Ethereum Virtual Machine is the Turing complete VM which will execute and perform operations on your Smart Contracts.
  4. Solidity – Solidity is JavaScript or C-like language for writing smart contracts. There are others, and you can even directly program OP codes if you feel like really working in a low level language. There are extensions for ATOM as well as the incredibly useful solidity compiler here.

Solidity contracts are interpreted into real OP codes for the EVM (Ethereum Virtual Machine). The EVM is Turing complete (to greatly oversimplify) which means the language is capable of repetitive loop behaviors like while loops not just linear execution stacks, and significant algorithmic complexity.

This might bring to mind the idea of a bunch of computers running a broken while loop! A massive worldwide race condition! Which is why the system is designed to consume gas as it executes. This safeguard protects the network if there is a poorly written loop or other runaway attack. Once all the gas is exhausted it will stop execution. Pretty clever right?

Getting into the core programming of Solidity is beyond the focus of this article, but here are some resources for learning more about it:

There are at least 2 other languages which utilize the EVM and OpCodes including Serpent, which is a Python style language, LLL. Solidity is styled after Javascript and by far the most popular. Solidity can be easily imported to work in web and server side applications. Essentially anything that can consume the web3.js library.

Other languages need not feel left out either, here are libraries for Python, Haskell, and Java in these respective locations:

Ethereum also provides a “test net” which is a separate network intended to allow rapid mining, or processing of transactions and generation of testnet eth. This is a good way to get started as you should keep in mind, Libraries like Diamonds are forever!

Last I would add there are a number of really marvelous tutorials both on YouTube and linked from Reddit that provide a great getting started compendium. Here are some of my favorites: