P2P
Note that this section depends on reviewing the network propagation resources of the mining and network propagation seminar. If you are doing these out of order, please take a look at that section first.
Reading
25
45
60
20
20
75
50
15
90
Optional Practical Exercise
Will Clark has an updated fork of tinybitcoinpeer, a 200 line python program that allows you to explore the Bitcoin p2p network.
Discussion Questions
Attacking P2P
Given the attack surface in P2P, is running a full node worth it?
How many honest nodes do you need to be connected to be sure you are connected to the right network/blockchain?
Does it make sense to have separate networks which are more resistant against p2p attacks, and regular nodes will keep at least one connection to them if they choose so?
P2P Connections
What is the reasoning behind the max inbound and max outbound defaults? For which type of user would they be considered ideal, and when might they be optimized?
What is the rationale behind the "new"/"tried" table design? Were there any prior inspirations within the field of distributed computing?
How are anchor connections chosen? In what circumstances would you evict or change them?
What are feeler connections, and when are they used?
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network
What can an attacker do if they are able to eclipse a mining pool?
What is the difficulty of successfully achieving an eclipse attack? What resources and skills would be required to achieve such an attack?
Transaction Trivia
Why must transaction unlocking scripts only push numbers to be relayed?
What output scripts are 'IsStandard'?
Why must transactions be no less than 82 bytes to be relayed?
Why is the blockheight now encoded in the coinbase transaction?
[OPTIONAL] Researching P2P privacy attacks
How does "diffusion" message spreading work and why is it ineffective against de-anonymization?
Last updated