I found that when a peer receives an inv
message with type=block, it will immediately request that block or that block's headers with a getdata
message or getheaders
message. But if the peer receives an inv
message with type=tx, it won't respond immediately. For example:
Node A inv(tx) Node B | Node A inv(block) Node B
<----------- | <---------
|
[delay] | [no delay]
|
getdata(tx) | getdata(block)
-----------> | --------->
Why is there a delay in requesting transactions but not a delay in requesting blocks? I'm guessing that relaying a transaction is less important than getting the most recent block to ensure the node is on the consensus best block chain.