This is great, thanks! A few remarks:
If you have to update the filter after every block, IBD will require a round-trip after every single block download instead of doing bulk requests with getblocks. That sounds like it'd kill any performance gains won by the feature. There needs to be a way to do bulk getblocks on hundreds/thousands of blocks at a time and then have the data stream in. Perhaps the server node can update the filter for you, as the rules are deterministic? As you know the remote end will request the transactions given their hashes anyway, why not save the bandwidth for the hashes and the network round-trip by just providing the transactions immediately in the block? I was imagining something like: // A CMerkleTx without the redundant block hash class CLiteMerkleTx : public CTransaction { std::vector<uint256> vBranch; int nIndex; } class CMerkleBlock { int nVersion; uint256 hashPrevBlock; uint256 hashMerkleRoot; unsigned int nTime; unsigned int nBits; unsigned int nNonce; std::vector<CLiteMerkleTx> vMatchedTxns; } ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Bitcoin-development mailing list Bitcoin-development@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bitcoin-development