Bitcoin Wire Protocol
Block Manager 需要處理的東西
https://github.com/btcsuite/btcd/blob/master/blockmanager.go
blockmanager 的主要 loop
case \*newPeerMsg:
b.handleNewPeerMsg\(candidatePeers, msg.peer\)
case \*txMsg:
b.handleTxMsg\(msg\)
msg.peer.txProcessed <- struct{}{}
case \*blockMsg:
b.handleBlockMsg\(msg\)
msg.peer.blockProcessed <- struct{}{}
case \*invMsg:
b.handleInvMsg\(msg\)
case \*headersMsg:
b.handleHeadersMsg\(msg\)
case \*donePeerMsg:
b.handleDonePeerMsg\(candidatePeers, msg.peer\)
case getSyncPeerMsg:
msg.reply <- b.syncPeer
case processBlockMsg:
case isCurrentMsg:
msg.reply <- b.current()
case pauseMsg:
// Wait until the sender unpauses the manager.
<-msg.unpause