I've been reading through the Bitcoin P2P protocol documentation as well as experimenting with Bitcore library but confused about one thing.
So getblocks
seems to return inventory objects, which are just pointers, so you have to make another getdata
request using those inventories to get the actual block.
And getheaders
seems to return headers from starts
to stop
.
They act similar, except that getheaders
returns more than just the pointers. I'm confused here because I feel like getheaders
should be the "light mode" which only downloads small amount of data compared to getblocks
. This is also shown by the fact that getheaders
download up to 2000 headers by default while getblocks
downloads up to only 500 inventories.
So am i misunderstanding any of this? Why does getheaders
return more information than getblocks
AND also return more results that getblocks
(2000 vs 500)?