lec19
dz / distributed_systems_MIT / lec19Summary
Lecture 19: Bitcoin
Node Tree
- bitcoin
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 |