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 |