cryptocurrency
  Virtual currency working on a principle of cryptography and using distributed
  ledger (typically blockchain).

blockchain
  A data structure recording time-stamped transactions. It consists of linked
  blocks.

  Each block points to its previous block, except the very first one (so called
  genesis block), so blockchain is technically a tree, although it looks more
  like a list with a few small branches here and there.

  The longest chain of transactions is taken as the main branch. Transactions
  recorded in the main branch are taken as confirmed. Blocks outside the main
  branch are called orphan blocks

  Orphan blocks can be created due to lag -- if two valid blocks are
  simultaneously created, the network will only be able to accept one, in case
  of bitcoin the one with a better, i.e. higher number proof-of-work, will be
  accepted and the other one orphaned. Miners don't get reward for orphaned
  blocks (because they're not part of the main branch and so the reward isn't
  recorded).

  A block contains all of these:

  - Hash of the previous block, as a back-link to it. A hash (as opposed
    to an ID) has to be used so that if the previous block was altered, this
    block would no longer be pointing to it.

  - Proof of work. E.g. in Bitcoin this is a number X (called nonce) such
    that with this number in it the block's hash is lower than the network
    difficulty level (this is used to adjust mining difficulty).

  - Transactions. These are takes from transactions broadacst by the newtwork
    users, and are confirmed by this block (if this block is part of the main
    branch).

mining
  Doing work (i.e. creating proofs of work) which is rewarded with
  cryptocurrency. Mining creates and appends new blocks to the blockchain.

  Mining protects the blockchain against altering. To alter a specific block X,
  the attacker would have to create a new chain of blocks from X which would
  surpass the current main blockchain branch in length (to be acepted as the
  main branch), which would require to add new proof of work to each new block
  (because altering X would due to linking via hashes alter all following
  blocks), which would require to do more work that has been done in the main
  branch since X.

Bitcoin

proof of work
  A number prooving some work has been done. E.g. given number X, a string S,
  such that hash(S) = X, is a proof that machine time has been invested (work
  has been done) to find this string.

hashrate
  Power of a mining machine, i.e. how quickly it checks hashes, in hashes per
  second.

double spending problem
  

