/SPV

Primary LanguageC

Ravencoin Core SPV (with assets features support)

Sync performance / Bip32 integration with Bloom Filter:

  • Local peer sends getheaders
  • Remote peer responds with up to 2000 headers
  • Local peer immediately sends getheaders again and then processes the headers
  • Previous two steps repeat until a header within a week of earliestKeyTime is reached (further headers are ignored)
  • Local peer sends getblocks
  • Remote peer responds with inv containing up to 500 block hashes
  • Local peer sends getdata with the block hashes
  • If there were 500 hashes, local peer sends getblocks again without waiting for remote peer
  • Remote peer responds with multiple merkleblock and tx messages, followed by inv containing up to 500 block hashes
  • Previous two steps repeat until an inv with fewer than 500 block hashes is received
  • Local peer sends just getdata for the final set of fewer than 500 block hashes
  • Remote peer responds with multiple merkleblock and tx messages
  • If at any point tx messages consume enough wallet addresses to drop below the bip32 chain gap limit, more addresses are generated and local peer sends filterload with an updated bloom filter
  • After filterload is sent, getdata is sent to re-request recent blocks that may contain new tx matching the filter