Ethereum brought smart contracts to blockchain.
Ethereum started in 2014. As Vitalik Buterin, creator of Ethereum, explained, the goal was to “use the Bitcoin blockchain for more than just money”.
Bitcoin has its own scripting language, but its capabilities are very limited. Instead, Ethereum utilizes Solidity, Turing-complete programming language, which allows to write and execute programs just like applications on computers and smartphones.
Another difference lies in the way Ethereum uses to store wallet balances. Bitcoin uses UTXO-model, where each wallet contains unspent outputs, or coins, that he can send individually. Ethereum uses an account-model where each wallet has net balance and doesn’t track individual coins.
In Ethereum, the possible applications are much bigger than just an exchange of goods. The possibilities are truly endless. It can be used as a game currency, a collectible item, or a tradable security. There are already working projects that achieve that, and more will arise.
The main idea behind Ethereum is a concept of smart contracts. A smart contract is a like a box with buttons. A user can put something in that box, or get something from that box. The user can also press the buttons, and content of that box will change. The content of the box is unique to each user, and no user can access the content of another user.
There are two types of transactions. The first one is the “send” transaction. It is used to transfer value from one address to another one. The second one is the “execute” transaction. It is used to execute, or call one of the smart contract’s methods. Each method is a short program that executes upon receiving funds.
Each transaction requires some amount of gas to prevent spam. Amount of required gas is proportional to the number of computations required to make a transaction. To prevent from losing too much money as a fee from an error in contract or an error in a method call, each transaction includes a maximum amount of gas a transaction can consume in the form of gas limit. If that limit is spent and the transaction is not complete, it stops with an error and is canceled. Users can set the gas price, like Bitcoin users can set a transaction fee per byte of a transaction.
Ethereum introduced the concept of on-chain tokens. These tokens live inside Ethereum blockchain, and users can interact with different tokens. This opens a possibility to create tokens for specific use cases, like gambling.
Ethereum has a much lower block time than Bitcoin, meaning that much more blocks are created in the same period of time. Networks with low block time have issues with block propagation. Sometimes miner finds a new block after another miner found it but before he received it from that miner, leading to stale blocks. This creates two problems: security loss and mining reward centralization. Security loss happens as stale blocks do not contribute to the network security and end up wasting hash rate. Mining reward centralization happens as smaller mining pools have much bigger chance to mine a stale block and receive nothing for their efforts.
Ethereum solves both problems by using an improved version of the ”Greedy Heaviest Observed Subtree” (GHOST) protocol. The idea is to include stale blocks in the blockchain and reward miners for mining them. The only requirement for that blocks is to have a valid block header. The block itself may be valid or not, as the transactions included in stale (or “uncle”) block does not change the network state. The miner that included an uncle block of another miner receives part of the reward for publishing that block.
Ethereum uses PoW algorithm called Ethash. It allows to mine blocks on GPUs. Aside from mining hashes and validating block headers, each node also computes all smart contract transactions. In future, Ethereum plans to switch first to the hybrid algorithm and then to PoS.
Patricia Trie is an improvement of Radix Tree, which offers fast lookup of key-value pairs. Merkle Patricia Trie provides the “immutability” feature of Merkle Trees for Patricia Tries: changing only one node in Trie will change the root hash. Ethereum uses Merkle Patricia Trie to store blockchain state, contracts storage, and transactions of each block.
- December 23, 2013: Initial commit on Gtihub github.com
- January 23, 2014: Thread on Bitcointalk bitcointalk.org
- July 25, 2014—September 5, 2014: Ethereum Crowdsale blog.ethereum.org
- July 30, 2015: Release of the “Frontier” — first public Ethereum release on mainnet blog.ethereum.org
- March 30, 2016: First onchain crowdsale on Ethereum, DigixGlobal. DigixGlobal collected $5.5m in 12 hours twitter.com
- June 17, 2016: One of the popular smart contract, TheDAO, had a critical error in its code. Attacker seized that error to steal Ether stored in TheDAO smart contract. blog.ethereum.org
- June 24, 2016: Ethereum proposed a soft fork to freeze TheDAO balance from draining by an attacker. blog.ethereum.org
- July 20, 2016: Ethereum completed a hard fork to freeze TheDAO balance and created a smart contract to withdraw locked funds. blog.ethereum.org