distributed_systems_MIT/lec19

lec19

dz / distributed_systems_MIT / lec19

Summary

Lecture 19: Bitcoin

Node Tree

Nodes

bitcoin
content Bitcoin
children public_ledger, blockchain

public_ledger
content Public Ledger
children peers_transaction_logs_identical, use_single_trusted_entity (simple idea)
parents bitcoin

use_single_trusted_entity
content Simple idea: use single trusted entity
children doesnt_work_global_scale (why it doesn't work)
parents public_ledger

doesnt_work_global_scale
content Doesn't work at global scale
parents use_single_trusted_entity

peers_transaction_logs_identical
content Peers: transaction logs should be identical
children easy_to_make_attack, majority_vote, agreement_ledger_despite_malice
parents public_ledger

majority_vote
content Majority vote
children open_system_controlled_membership_difficult
parents peers_transaction_logs_identical

easy_to_make_attack
content Easy to make attack
parents peers_transaction_logs_identical

open_system_controlled_membership_difficult
content Hard to build open system with controlled membership
parents majority_vote

agreement_ledger_despite_malice
content Agreement on ledger, despite malice
parents peers_transaction_logs_identical

blockchain
content Blockchain
children two_successors_block, block, change_blocks_attack, creating
parents bitcoin

block
content Block
children hash_prev_transaction (item in block entry), signature_prev_owner (item in block entry), current_owner_public_key (item in block entry)
parents blockchain

hash_prev_transaction
content Hash of previous transaction
parents block

signature_prev_owner
content Signature of previous owners public key
parents block

current_owner_public_key
content Current Owner's Public Key
parents block

creating
content Creating
children mining
parents blockchain

mining
content Mining
children leading_zeros, proof_of_work
parents creating

proof_of_work
content Proof of work
parents mining

leading_zeros
content Leading zeros in hash
children dynamically_adjust_leading_zeros, nonce
parents mining

nonce
content Nonce
parents leading_zeros

dynamically_adjust_leading_zeros
content If block creation rate faster than one every 10 minutes, leading zeroes increases. If slower, decrease leading zeros.
children nonce_hardness
parents leading_zeros

two_successors_block
content Two successors to a single block possible
children fork
parents blockchain

fork
content Fork
children handling_forks
parents two_successors_block

handling_forks
content How to handle forks
children longer_fork_preference, peers_immediately_work_on_successor_block
parents fork

peers_immediately_work_on_successor_block
content Peers that see a successor block will immediately start working on it
children longer_fork_preference
parents handling_forks

longer_fork_preference
content Preference for longer fork
children manufacture_longer_chain, rapidly_chooses_fork, chain_grows_prop_num_peers
parents peers_immediately_work_on_successor_block, handling_forks

chain_grows_prop_num_peers
content Rate at which chain can grow is proportional to number of peers
parents longer_fork_preference

rapidly_chooses_fork
content Rapidly chooses fork
parents longer_fork_preference

change_blocks_attack
content Can you change blocks in an attack?
children cryptographic_hashes_prevent
parents blockchain

cryptographic_hashes_prevent
content Cryptographic hashes prevent this
parents change_blocks_attack

manufacture_longer_chain
content Manufacture longer chain
children more_CPU_peers
parents longer_fork_preference

more_CPU_peers
content Possible to do if you have more CPU than all the peers
children non_malicious_network_more_CPU
parents manufacture_longer_chain

non_malicious_network_more_CPU
content non-malicious part of network should have more CPU power
parents more_CPU_peers

nonce_hardness
content Hardness of finding nonce
children peers_agree
parents dynamically_adjust_leading_zeros

peers_agree
content Peers need to agree
children use_deterministic_function
parents nonce_hardness

use_deterministic_function
content Use deterministic function on blockchain to find hardness
parents peers_agree