DC works at ABL Space Systems. Before that, he led engineering at a startup, contributed to open source projects, and studied computer science at Stanford. He's long Ethereum as a vehicle for decentralization and permissionless invention. https://dcpos.ch
This track is about peer-to-peer network protocols. What happens on the wire? How do peers find and connect to each other? If there are no servers and no clients, then how do you know who needs to send information to whom?
We will learn both global consensus protocols like Ethereum and Bitcoin, and others like Bittorrent and IPFS. Many challenges are common to all of these: NATs, node discovery, filters, gossip and swarms.
We'll read the Ethereum yellow paper to learn how Eth nodes talk to each other. We'll examine how different full nodes communicate (eg. geth, OpenEthereum) and how the light node subprotocol works.
Finally, this track explores the gap between the ideal of Ethereum — a peer network — and the current reality. The easy path, today, is to buy crypto on a website like Coinbase, then use it via Metamask. Dapps are delivered as regular web apps, and Metamask connects to Infura by default, which is a plain REST API. Infura runs Bitcoin and Eth nodes for you. Unless you are in the small minority running a command-line client, even as an active early-adopter Eth user, you never actually connect to peers. We'll explore the work left in order to close this gap.
Kademlia paper. Or, an easier Kademlia overview. This protocol is elegant, and a good entry point for understanding some core P2P challenges... if there are a million nodes out there, how do I pick which ones to connect to? If I am looking for information that a few specific nodes have, how can I find them?
Ethereum Wire Protocol. This shows the basic messages that Eth full nodes exchange with one another. I recommend skimming it with some questions in mind. If I send a transaction, how do all the other nodes find out about it? (This mechanism is called gossiping.) How do nodes avoid sending redundant information to a peer, say a transaction or a block that the peer already has?
Ethereum Light Client Protocol. The light protocol is an (experimental, not yet widely used) extension to the base protocol. The goal is to download only the block headers, a tiny fraction of the size of the full transaction data. Then, when a light wallet wants to, for example, check its own balance, it asks peers for just the bits of state that it needs along with Merkle proofs.
Note: there are actually two light protocols. The official one, described above, is the Light Ethereum Subprotocol (LES). OpenEthereum has its own variant that aims to be faster.
Bittorrent High Level Overview. There is a surprising amount of sophistication that goes into downloading a file efficiently! Contrast how simple this is in the centralized case: you open a TCP connection, maybe a TLS handshake, then you just download the bytes from first to last.
Bonus, Vitalik on Data Availability and Erasure Coding. This isn't strictly about low-level peer protocols, but I think it's really interesting to keep in mind as we learn about older data exchange protocols like Bittorrent.
In these quests, you'll participate in decentralized and peer-to-peer protocols at the base layer - as a "node."
geth or openethereum.geth --attach ). This gives you a Javascript console. Which peers are you connected to? Try examining the web3 object.