.. This file is part of the OpenDSA eTextbook project. See
.. http://opendsa.org for more details.
.. Copyright (c) 2012-2020 by the OpenDSA Project Contributors, and
.. distributed under an MIT open source license.

.. avmetadata::
    :author: Arib Ali and Cliff Shaffer

Ethereum
========

Introduction
------------

Ethereum is an open-source public service that utilizes blockchain
technology to enable smart contracts and cryptocurrency trading
without the involvement of a middleman.
Regarded as the second most popular crypto currency after Bitcoin, it
is home to digital money, global payments, and applications.
It is a decentralized blockchain network powered by the Ether token
that enables users to make transactions, earn interest on their
holdings through staking, use and store non fungible tokens (NFTs),
trade cryptocurrencies, play games, and use social media.
It is meant to be more than just a cryptocurrency, providing an
ecosystem for blockchain applications, and a sophisticated Smart
Contracts virtual machine.

Like all cryptocurrencies, Ethereum works on the basis of a blockchain
network. Let's understand what a blockchain network is. A blockchain network
is a technical infrastructure that provides ledger and smart contract
(chaincode) services to applications. Smart contracts are used mainly
to generate transactions which are subsequently distributed to every peer node
in the network. This is where they are immutably recorded on their copy of the ledger.
The users of applications might be end users using client applications or blockchain network
administrators. Ethereum hosts a notable amount of functionality for developers building
solutions on Ethereum as a base. For example, in order for a software application to interact with
the Ethereum blockchain, it must connect to an Ethereum node. If someone wants to utilize certain
programming language to connect with an Ethereum node, there are many convenience libraries
within the ecosystem that make this much easier. With these libraries, developers can write
intuitive, one-line methods to initialize JSON-RPC requests (under the hood) that interact with Ethereum.
Moreover, Ethereum has a native coin that is known as Ether (ETH), which is used
to pay for activity on the Ethereum blockchain.
The coin also trades on crypto exchanges and fluctuates in
value. Separate from its use within the
community to motivate community activities, it is also a
cryptocurrency in the normal way.
The Ethereum ecosystem is written in the Solidity programming
language. Solidity is an object-oriented, high-level programming language
used to create smart contracts that automate transactions on the blockchain. It
was developed by contributors to the Ethereum project. 
This language is primarily used to create smart contracts on the Ethereum blockchain
and create smart contracts on other blockchains.
It’s currently a proof-of-work (PoW) blockchain, but is making the
move to proof-of-stake (PoS) with Ethereum 2.0 by 2022.


Problems to Solve
-----------------

Bitcoin as a cryptocurrency has a major problem.
It is based on Proof of Work as the heart of its consensus algorithm.
This has the unfortunate consequence of causing miners to waste a lot
of electricity simply to add blocks to a blockchain.
This is unnecessary... at least in theory.
The problem is that coming up with a reliable and secure consensus
algorithm for a public, distributed ledger is quite difficult.
Bitcoin was such a revolution for both blockchain technology and
cryptocurrency technology because it was the first proposed solution
to managing a secure public distributed ledger.
Finding alternatives to the Proof of Work consensus algorithm has
proved to be difficult.

[What are other motivations for creating Ethereum as compared to
Bitcoin or other cryptocurrencies?]


History of Ethereum
-------------------

Vitalik Buterin is considered the creator of Ethereum,
as he published the original Ethereum concept whitepaper.
Buterin presented his concepts at a Bitcoin conference in Florida in
early 2014.
Following his initial work, others joined to help bring the project to
fruition.
His project raised capital through initial coin offering later the
same year, selling millions of dollars worth of ETH coins in exchange
for funds to use for the development of the project.
Ethereum went live officially in July 2015 even though ETH coins were
purchasable the year before.
Buyers had to wait for its launch before they were able
to move between accounts or use their ETH.

The first iteration of the Ethereum blockchain was called the
Frontier, and it hosted smart contracts and used a proof of work
consensus algorithm.
This provided opportunities for people to set up
their mining apparatuses since Ethereum was originally Proof of
Work and start building on the network.
After the initial launch, Ethereum saw many other updates such as
Byzantium, Constantinople, and the Beacon Chain, where each of the updates
changed certain aspects of the blockchain.
Beacon Chain provided a shift from a proof-of-work to a proof-of-stake
consensus mechanism. One of the most substantial change to the Ethereum blockchain
is the transitioning over to PoS initiated to scale the blockchain. Many projects
have built applications on the Ethereum blockchain over the years. Still, the network
struggled when traffic notably increased. During the years 2020 and 2021, decentralized
finance projects built on Ethereum gained substantial attention, which brought Ethereum’s
scalability issues to the forefront as high network fees plagued participants. 
Ethereum’s transition to Eth2 and PoS aims to bring scalability to the blockchain,
although the shift took place in various stages.


Key Differences Between Bitcoin and Ethereum
--------------------------------------------

Bitcoin and Ethereum networks are based on the concept of distributed ledgers and encryption; 
however, there are differences in terms of technical specifications. To illustrate, Bitcoin 
is seen as a digital equivalent of gold used to store value. Contrastingly, Ether is used to 
power the Ethereum network and its applications. Also, Bitcoin serves as a credible alternative 
to traditional fiat currencies, whereas Ethereum is a platform to run programmatic contracts
and applications via Ether. Another one of the key differences is that Bitcoin transactions
are monetary, but they can have notes and messages attached to them by encoding them into data
fields in the transactions. On the other hand, Ethereum transactions encompass executable code
to create smart contracts or interact with self-executing contracts and applications built using them.
Furthermore, Bitcoin utilizes a Proof-of-Work consensus algorithm, whereas Ethereum is transitioning to
Proof-of-Stake. Another one of the key differences between the two networks is in their Hashing Algorithms,
which are essentially how these systems maintain their privacy and ensure security. Bitcoin utilizes a hashing
algorithm called SHA-256, whereas Ethereum uses Keccak-256 algorithm. Other differences include the time for new
blocks of data to be added, which determines the time it takes to confirm transactions. The average block time on
the Bitcoin network is 10 minutes, while the time is 10 to 15 seconds for Ethereum.


Sources:
--------

https://cointelegraph.com/ethereum-for-beginners/history-of-eth-the-rise-of-the-ethereum-blockchain

https://cointelegraph.com/ethereum-for-beginners/what-is-ethereum-a-beginners-guide-to-eth-cryptocurrency

https://cointelegraph.com/ethereum-for-beginners/bitcoin-vs-ethereum-key-differences-between-btc-and-eth

https://medium.com/nearprotocol/detailed-overview-of-ethereum-2-0-shard-chains-committees-proposers-and-attesters-a9992d2fd103


