What is Ethereum
Proof of work (PoW) is a form of cryptographic zero-knowledge proof in which one party (the prover) proves to others (the verifiers) that a certain amount of computational effort has been expended for some purpose. Verifiers can subsequently confirm this expenditure with minimal effort on their part. [Source](https://en.wikipedia.org/wiki/Proof_of_work)
Ethereum is an open-source, public, blockchain-based distributed computing platform and operating system featuring smart contract (scripting) functionality. It supports a modified version of proof-of-work consensus via transaction-based state transitions.
Proof of work (PoW) is a form of cryptographic zero-knowledge proof in which one party (the prover) proves to others (the verifiers) that a certain amount of computational effort has been expended for some purpose. Verifiers can subsequently confirm this expenditure with minimal effort on their part. Source
Go Ethereum Protocol#
Ethereum provides a decentralized virtual machine, the Ethereum Virtual Machine (EVM), which can execute scripts using an international network of public nodes. The virtual machine's instruction set, in contrast to others like Bitcoin Script, is Turing-complete. This means that the EVM can simulate a Turing machine. A Turing machine is a mathematical model of a hypothetical computing machine which can use a predefined set of rules to determine a result from a set of input variables. Gas, an internal transaction pricing mechanism, is used to mitigate spam and allocate resources on the network.
One of the largest implementations of the Ethereum blockchain is in Go language. This implementation is what is running on computers around the world, securing the Ethereum blockchain. Go is an open source programming langauge that enables develoeprs to create simple, reliable and efficient software. Though the Ethereum protocol is written in Go, we will not be using any Go in this book. The reason that Ethereum is written in Go is because the language is easy to learn, scalable for large projects, and performs automatic memory management.
Ethereum accounts can be used to interact with the Ethereum blockchain. There are two types of accounts in Ethereum state:
externally owned: controlled by anyone with the private keys
contract: a smart contract deployed to the network, controlled by code
Both types of accounts have an ether balance and can interact with deployed smart contracts.
Transactions can be created from both types of accounts. Contracts can only start transactions when another transaction has been received by the contract. Therefore, all action on the Ethereum blockchain is set in motion by transactions created from externally-controlled accounts.