I've been reading through the Bitcoin P2P protocol documentation as well as experimenting with Bitcore library but confused about one thing.
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.
getheaders seems to return headers from
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)?