Ethereum is a system for decentralized applications that uses blockchains, but in a completely different manner than how they are used in bitcoin.
The Basic Framework
Ethereum has at its core a way to apply arbitrary rules for ownership, transaction formats and state transition functions — taking both the state of a blockchain and a transaction for that chain, and then outputting a new state as its result. It does this by way of an internal scripting language that is aware of a system’s state while being Turing-complete, which means it can encode any computation that may be performed by the system.
The state is made of objects called accounts, which have a 20-byte address and state transitions that exist between accounts. Accounts have four fields: a nonce, so each transaction is processed only once; a balance of ether, or the internal numbers used to pay fees; a contract code that may be empty; and storage, which may also be empty.
Types of Ethereum Accounts
There are two kinds of Ethereum accounts: externally owned and contract accounts. Externally owned accounts are controlled by private keys and contain no code. Sending messages from an externally owned account is done by creating and signing a transaction.
Contract accounts are controlled by their contract code. Every time the contract account receives a message, its code activates, allowing it to read and write to internal storage, send other messages or create contracts in turn.
It must be understood that contract here does not mean a legal arrangement: It is instead an agent inside the framework that executes code when it is stimulated by a message or transaction. It also has control over its own ether balance as well as other internal variables.
Other words have special meanings here. Gas isn’t gasoline, but the cost of one computation step. The value may be higher or lower, depending on the difficulty of the computation. Each transaction sets a limit on how many computational steps it can use by using Gas to specify the upper bound. Thus, Gas is the fuel powering computation; when you run out of Gas, execution stops.
Code inside of contracts is written in Ethereum virtual machine (EVM) code, a series of bytes each representing an operation. It is much like assembly code in concept. Serpent is a higher-level language that compiles to EVM.
What Does This Mean for the IoT?
Blockchains are at their heart a time-stamped (or other unique identifier) ledger of transactions. It’s the transactions involved in the Internet of Things (IoT) ecosystem where the system will shine: Because one can trigger computation or other code action with an Ethereum account message, an IoT device can be controlled if it is connected to an Ethereum-based network.
Work has already begun to develop a comprehensive system of IoT control using Ethereum as a component, according to the IBM report “Device Democracy: Saving the Future of the Internet of Things.” As this paper puts it, “The greatest challenge, however, is not in simply building a decentralized IoT, but one that can scale universally while maintaining private, secure and trustless transactions. In other words, the IoT represents a case of billions of players, not all of which can be trusted — some even malicious — with a need for some form of validation and consensus. And for this, the ‘blockchain’ offers a very elegant solution.”
Ethereum is a more full-featured way to use blockchain technology than bitcoin, which was designed only for financial purposes. By including the ability to use internal executable code, far more can be done with it. And that is what the IoT will require.
At this point, the framework is in its Frontier release. That means it is best suited for developers or other early adopters. That also means that it is a wide-open field in terms of competition and usage. For the strong of heart, opportunities abound to either succeed or fail.
The Time Has Come
Major players have finally come to see the opportunities and disruptions that blockchain technology can cause for their operational and financial assumptions. While they are now aware of alternatives, nothing has yet been set in stone.
While this framework could implement a cryptocurrency, it can do much more than that. It is generalized, not specialized. The practical limits of what it can do are yet to be determined.
Now is the time when developers have the maximum opportunity: What they come up with in these early stages can be considered by those who will implement it outside of a closed environment. Ethereum is up on Github for all to use. Making a useful product from it will not be easy and will require learning an unfamiliar environment. Better start now.