Apart from supporting (like Bitcoin blockchain) a cryptocurrency, Ethereum is also a distributed computing platform.
The Ethereum Virtual Machine (EVM) is the runtime environment for smart contracts in Ethereum.
This means that just like a computer, EVM can run a program. This program cannot be turned off or manipulated with, because the code is stored in the blockchain.
Smart contracts are high-level programming abstractions that are compiled down to EVM bytecode and deployed to the Ethereum blockchain for execution.
The most popular language to write smart contracts in is Solidity.
Formal definition in high-level code (e.g. solidity).
The contract converted to byte-code to run on the Ethereum Virtual Machine (EVM), adhering to the specification. Note the function names and input parameters are hashed during compilation. Therefore, for another account to call a function, it must first be given the funtion name and arguments - hence the ABI:
A list of the contract's functions and arguments (in JSON format). An account wishing to use a smart contract's function uses the ABI to hash the function definition so it can create the EVM bytecode required to call the function. This is then included in the data field, Td, of a transaction and interpreted by the EVM with the code at the target account (the address of the contract).
Gas is payment for running the smart contract on the blockchain (running computations or storing data). It's paid by the account that initiates the transaction.
Contracts have state (stored data) and functions (which change data). Using state (returning data with constant functions) costs no gas, because the results of these operations do not require consensus between the nodes of the network. Functions, on the other hand, perform changes that need to be reflected in the blockchain, and hence cost gas.
- web3.js "is a collection of libraries which allow you to interact with a local or remote Ethereum node, using an HTTP, WebSocket or IPC connection."
- MetaMask browser extension can facilitate interacting with blockchain-based smart contract systems.
- "externally owned" - controlled by folks via wallets
- "contracts" - controlled by smart contracts
Truffle framework seems to be the go-to choice.
Ether is a token whose blockchain is generated by the Ethereum platform.