## Channels Each peer connection is multiplexed into channels.
Channel | "PEX" |
Messages |
|
Channel | "block" |
Messages |
|
Notes | Nodes should only advertise having a header or block at height 'h' if it also has all the headers or blocks less than 'h'. Thus for each peer we need only keep track of two integers -- one for the most recent header height 'h_h' and one for the most recent block height 'h_b', where 'h_b' <= 'h_h'. |
Channel | "mempool" |
Messages |
|
Notes |
Instead of keeping a perfect inventory of what peers have, we use a lossy filter. Bloom filter (n:10k, p:0.02 -> k:6, m:10KB) Each peer's filter has a random nonce that scrambles the message hashes. The filter & nonce refreshes every new block. |
Channel | "consensus" |
Messages |
|
Notes | How do optimize/balance propagation speed & bandwidth utilization? |