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 internet 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 Ethereum whitepaper which built on many concepts from Bitcoin. The whitepaper is available today on the Ethereum Github page.
In the 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 cant write simple structures like loops, and they are also limited in capability because they cant store state. These scripts are also referred to as simple versions of smart contracts.
The Ethereum whitepaper described its own native currency called ether and a new runtime environment for smart contracts, called the Ethereum Virtual Machine, or EVM. A subsequent yellowpaper was released in mid-2014 by collaborator Gavin Wood that would define the technical specification of the EVM and how it would work. The yellowpaper was used to create several open-source implementations in different languages, the most popular one being the Go language client, also known as geth. The 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 thousand nodes around the world.
Smart contracts 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 bytecode, and then sending the bytecode 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 an 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 it 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.
To read more, be sure to visit us at www.blockgeeks.com