Skip to content

Latest commit

 

History

History
209 lines (142 loc) · 13 KB

glossary.asciidoc

File metadata and controls

209 lines (142 loc) · 13 KB

Quick Glossary

This quick glossary contains many of the terms used in relation to Ethereum. These terms are used throughout the book, so bookmark this for a quick reference.

address

  Most generally, this is the place where you receive transactions on the blockchain. More specifically, it is the right most 160-bits of a Keccak hash of a ECDSA public key.

Account

An object containing an address, balance and nonce, and optional storage and code. An account can be a contract account or an EOA (externally owned account).

BIP

Bitcoin Improvement Proposals. A set of proposals that members of the bitcoin community have submitted to improve bitcoin. For example, BIP-21 is a proposal to improve the bitcoin uniform resource identifier (URI) scheme.

big-endian

   A positional number representation where the most significant digit is first. The opposite of little-endian where the least significant digit is first.

Block

A block is added to the Ethereum network by miners and is a collection of required information (a block header) about the comprised transactions, and a set of other block headers known as ommers.

blockchain

A list of blocks validated by the proof-of-work system, each linking to its predecessor all the way to the genesis block. This varies from the Bitcoin protocol’s in that it does not have a block limit, it instead uses varying gas limits.

compiling

Converting code written in a high-level programming language (e.g. Solidity) into a lower level language (e.g. EVM bytecode).

contract account

An account containing code that executes whenever it receives a transaction from another account (EOA or contract).

consensus

When several nodes, usually most nodes on the network, all have the same blocks in their locally-validated best block chain. Not to be confused with consensus rules.

consensus rules

The block validation rules that full nodes follow to stay in consensus with other nodes. Not to be confused with consensus.

contract creation transaction

A special transaction, with the "zero address" as the recipient, that is used to register a contract and record it on the Ethereum blockchain (see "zero address").

ECDSA

Elliptic Curve Digital Signature Algorithm or ECDSA is a cryptographic algorithm used by Ethereum to ensure that funds can only be spent by their rightful owners.

EIP

Ethereum Improvement Proposals are standards for the Ethereum platform. An EIP is a design document providing information to the Ethereum community, describing a new feature or its processes or environment. For more information, see https://github.com/ethereum/EIPs (also see the definition for ERC, below).

EOA

Externally Owned Account. These are accounts created by or for human users of the Ethereum network.

ERC

Ethereum Request for Comments. Some EIPs are labeled as ERCs, which denotes proposals attempting to define a specific standard of Ethereum usage.

Ethash

A Proof-of-Work algorithm for Ethereum 1.0. For more information, see https://github.com/ethereum/wiki/wiki/Ethash

Ether

  Ether is the cryptocurrency used by the Ethereum ecosystem that covers gas costs when executing Smart Contracts. Its symbol is Ξ, the Greek uppercase Xi character.

event

An event allows the use of EVM logging facilities, which in turn can be used to “call” JavaScript callbacks in the user interface of a dapp, which listen for these events. For more information, see http://solidity.readthedocs.io/en/develop/contracts.html#events

EVM

Ethereum Virtual Machine. The EVM is a simple stack-based architecture. In Ethereum, the execution model specifies how the system state is altered given a series of bytecode instructions and a small tuple of environmental data. This is specified through a formal model of a virtual state machine, known as the Ethereum Virtual Machine (EVM).

EVM Assembly Language

A human-readable form of EVM-code.

fallback function

It’s like a fishing net to catch all the ether that is sent to a contract.

TODO: Change for Clarity

gas

A virtual currency used in Ethereum to constrain computation of smart contracts. The Ethereum Virtual Machine uses an accounting mechanism to measure the consumption of gas and constrain (limit) the consumption of computing resources. See Turing-Complete. Gas is a unit of computation that is incurred per instruction of Smart Contract executed. The gas is pegged at Ether cryptocurrency. The gas is analogous to talk time on a cellular network. Thus, the price of running a transaction in fiat currency is gas * (ETH/gas) * (fiat currency/ETH).

gas limit

When talking about blocks, they too, have a field called gas limit. It defines the maximum amount of gas all transactions in the whole block combined are allowed to consume.

genesis block

The first block in the blockchain, used to initialize a particular network and its cryptocurrency.

hash

A fixed-length fingerprint of variable-size input produced by a hash function.

HD wallet

Wallets using the Hierarchical Deterministic (HD Protocol) key creation and transfer protocol (BIP32).

HD wallet seed

HD wallet seed or root seed is a potentially-short value used as a seed to generate the master private key and master chain code for an HD wallet.

IDE (Integrated Development Environment)

An integrated user interface that combines a code editor, compiler, runtime, and a debugger.

Immutable Deployed Code Problem

Once a contract’s (or library’s) code is deployed it becomes immutable. Being able to fix possible bugs and add new features is key for the software development cycle. This represents a challenge for smart contract development.

internal transaction (also "message")

A transaction sent from a contract account to another contract account or an EOA.

library

A library in Ethereum is a special type of contract that has no payable functions, no fallback function, and no data storage. Therefore, it cannot receive or hold ether, or store data. A library serves as previously deployed code that other contracts can call for read-only computation.

message

An internal transaction that is never serialized and only sent within the EVM.

miner

A network node that finds valid proof of work for new blocks, by repeated hashing.

network

A peer-to-peer network that propagates transactions and blocks to every Ethereum node (network participant).

node

A software client that is participating in the peer-to-peer network.

nonce

In cryptography, the term nonce is used to refer to a value that can only be used once.

ommer

A child block of an ancestor that is not itself an ancestor. When a miner finds a valid block, another miner may have published a competing block which is added to the tip of the blockchain. Unlike bitcoin, orphaned blocks in Ethereum can be included by newer blocks as ommers and receive a partial block reward. The term "ommer" is the preferred gender neutral term for the sibling of a parent node, but is also referred to as an "uncle".

Paralysis Problem

A common powerful approach to key management for cryptocurrencies is multisig transactions, referred to more generally as secret sharing. But, What would happen if one of the shared keys was lost? The result would be a complete loss of all of the funds.
This isn’t the only bad scenario. It’s also possible that the key-share holders have different ideas about how the money should be spent, and can’t come to an agreement.
We use the term Paralysis Problem to denote any of these awkward situations.

Paralysis Proof System

Paralysis Proofs help address a pervasive key-management problem in cryptocurrencies. See Paralysis Problem.
A Paralysis Proof System can tolerate system paralysis in settings where players fail to act in concert.
A Paralysis Proof System can be realized relatively easily for Ethereum using a smart contract.

Proof-of-Stake

Proof-of-Stake (PoS) is a method by which a cryptocurrency blockchain protocol aims to achieve distributed consensus. Proof-of-Stake asks users to prove ownership of a certain amount of cryptocurrency (their "stake" in the network) in order to be able to participate to the validation of transactions.

Proof-of-Work

A piece of data (the proof) that requires significant computation to find. In Ethereum, miners must find a numeric solution to the Ethash algorithm that meets a network-wide difficulty target.

receipt

Data returned by an Ethereum client to represent the result of a particular transaction, including a hash of the transaction, its block number, the amount of gas used and, in case of deployment of a Smart Contract, the address of the Contract.

Reentrancy Attack

This attack can be reproduced when the Attacker contract calls to a Victim contract function, let’s call it victim.withdraw(), in manner that before the original call to that contract function ever finishes, it calls the victim.withdraw() method again which continues to recursively call itself. This recursive call can be implemented from a fallback function of the Attacker contract. The only trick that the attacker has to perform is to break that recursive call before running out of gas and so avoiding the stolen ether be reverted.

reward

An amount, in Ether (ETH), included in each new block as a reward by the network to the miner who found the Proof-of-Work solution.

Recursive Length Prefix (RLP)

RLP is a encoding standard, designed by the Ethereum developers to encode and serialize objects (data structures) of arbitrary complexity and length.

Satoshi Nakamoto

Satoshi Nakamoto is the name used by the person or people who designed Bitcoin and created its original reference implementation, Bitcoin Core. As a part of the implementation, they also devised the first blockchain database. In the process they were the first to solve the double spending problem for digital currency. Their real identity remains unknown.

secret key (aka private key)

The secret number that allows Ethereum users to prove ownership of an account or contracts, by producing a digital signature (see public key, address, ECDSA).

SHA

The Secure Hash Algorithm or SHA is a family of cryptographic hash functions published by the National Institute of Standards and Technology (NIST).

SELFDESTRUCT opcode

Smart contracts will exist and be executable as long as the whole network exists. They will disappear from the blockchain if they were programmed to self destruct or performing that operation using delegatecall or callcode. Once selfdestruct operation is performed, the remaining Ether stored at the contract address is sent to another address and the storage and code is removed from the state. Although this is the expected behavior, the pruning of selfdestructed contracts may or may not be implemented by Ethereum clients. SELFDESTRUCT was previously called SUICIDE, with EIP6, SUICIDE was renamed to SELFDESTRUCT.

Serpent

A procedural (imperative) programming language with syntax similar to Python. Can also be used to write functional (declarative) code, though it is not entirely free of side-effects. Used sparsely. First created by Vitalik Buterin.

Solidity

A procedural (imperative) programming language with syntax that is similar to JavaScript, C++ or Java. The most popular and most frequently used language for Ethereum smart contracts. First created by Gavin Wood (co-author of this book).

Solidity inline assembly

Inline assembly is contained code within solidity that use EVM Assembly, which can be seen as the human-readable form of EVM-code. Inline assembly tries to facilitate inherent difficulty and other issues arising when writing manual assembly.

transaction

Data commited to the Ethereum Blockchain signed by an originating account, targeting a specific address. The transaction contains metadata such as the gas limit for the transaction.

Vyper

A high-level programming language, similar to Serpent with Python-like syntax. Intended to get closer to a pure-functional language. First created by Vitalik Buterin.

wallet

Software that holds all your secret keys. Used as the interface to access and control your Ethereum accounts and interact with Smart Contracts.

zero address

A special Ethereum address, with all 20-bytes as zeros, that is specified as a destination address in the "contract creation transaction".