After Satoshi released Bitcoin to the world in 2008, a community of blockchain developers and researchers started to take shape around it. Many developers contributed to the open source development of Bitcoin several magazines and online blogs, also started to appear writing about interesting projects and new ideas in the space.
One of the members of this community was a Canadian teenager named Vitalik Buterin, who worked as a writer for a publication called Bitcoin magazine. As he was watching the ecosystem take shape, he noticed a common problem among projects, that many of them needed to start their own blockchain. This got Vitalik wondering wouldn’t it be nice to have one single blockchain, that everyone could build their applications on, just like we have one single intranet that everyone can build their websites on instead of figuring out how to start.
A blockchain developers would then be able to focus on building their own applications, so in late 2013 Vitalik published the etherium white paper, which built on many concepts from Bitcoin. The white paper is available today on the etherium github page. In the white paper he outlined the limitations of the Bitcoin blockchain and proposed a new general-purpose blockchain, that could be used as a decentralized application platform.
Ethereum would be able to do everything Bitcoin could like, sending transactions between accounts and a whole lot more. The main issue with Bitcoin was the lack of a general-purpose programming language, that would allow you to create any sort of application on top of its blockchain. Bitcoin scripts are not turing-complete meaning you can’t write simple structures like loops and they’re also limited in capability.
Because they can’t store state these scripts are also referred to as simple versions of smart contracts. The etherium white paper described its own native currency called ether and a new runtime environment for smart contracts called the ethereum. Virtual machine or EVM a subsequent yellow paper was released in mid-2014 by collaborator Gavin wood, that would define the technical specification of the EVM and how it would work.
The yellow paper was used to create several open-source implementations in different languages. The most popular one being the Go language client also known as Geth. Second most popular implementation was written in the Rust language and is called the Parity client. Anyone running a client is a node in the Ethereum network which currently has over 25,000 nodes around the world.
Can contain some data as well, as code that manipulates that data you can think of a smart contract like a class that has fields and methods. Anyone can use solidity to write a smart contract and deploy it to the Ethereum blockchain using a simple transaction. You would do this by compiling your solidity smart contract down to EVM byte code and then sending the byte code as part of a transaction to the ethereum network.
Once the transaction gets mined, the smart contract is deployed to the blockchain and given a public address. Anyone can then interact with the smart contract by sending transactions to its address and specifying which method they want to invoke. The result of the method call is written to the blockchain after the transaction is mined. There is also a cost associated with invoking a smart contract method called Gas Gas is just a unit of measurement, that determines how much computation and EVM opcode requires.
The price of one unit of gas is set in ether and is known as the gas price. The gas price is used to calculate the total transaction fee for invoking a method call based on how much gas the method requires and it must be paid by the sender of the transaction. An interesting thing to note is that any transaction that invokes a smart contract method gets executed on every single Ethereum node.
This means, that in order to mine a transaction into a block, you have to invoke any smart contract methods for it as well in this sense. Ethereum can be thought of as a decentralized world computer where you pay for computation using ether Ethereum, uses a similar mining algorithm to Bitcoin which is based on proof of work, but is slightly modified. The reward for mining an Ethereum block is given to the miner in ether and the current block reward is three ether.
A block is mined on the network about every 15 seconds. The issuance model for ether is different from Bitcoin, whereas Bitcoin is capped at 21 million coins forever. Ethereum has no such limit, instead Ethereum has an annual cap such that only 18 million ether can be created in one year. Both of these issuance models are experiments and it is yet to be seen how they play out in the future.
One of the motivations for modifying the mining algorithm from Bitcoin was to make it ASIC resistant, as pointed out in the Ethereum white paper. The Bitcoin mining algorithm can be exploited by using specialized mining hardware called Asics, giving some miners an unfair advantage over others. This has led to centralization of Bitcoin mining, because very few people can afford to get such specialized hardware.
To prevent this type of mining centralization in Ethereum the algorithm was modified to be geared towards GPUs, which are more commonly available and thus less likely, to be centralized a rapidly growing interest in. Ethereum has revealed some of its limitations the maximum transaction throughput on the network is currently less than 16 transactions per figuring out.
How to scale the Ethereum blockchain to allow everyone’s applications to run smoothly is a very difficult challenge during peak Network loads. The time between blocks can increase and transaction fees can go up. There are several scaling solutions being researched and developed including sharding proof of stake and state channels. The breakneck pace of development in the ecosystem can also be challenging for developers to navigate as libraries are continuously being updated.
For the most up-to-date libraries make sure, you always refer to the project’s github page or a website the pace of development in the community has also encouraged the creation of standards to foster interoperability. Dome example standards today are ERC 20 for defining a transferable token interface and ERC 721 for defining a non fungible token interface, to learn more about building block chain applications.