Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Infer various receiver quantities
- uint64_t nReceiverExcessItems =
- std::max((int)(nReceiverUniverseItems - nItems), (int)(nSenderUniverseItems - nItems));
- nReceiverExcessItems = std::max(0, (int)nReceiverExcessItems); // must be non-negative
- nReceiverExcessItems =
- std::min((int)nReceiverUniverseItems, (int)nReceiverExcessItems); // must not exceed total mempool size
- uint64_t nReceiverMissingItems = std::max(1, (int)(nItems - (nReceiverUniverseItems - nReceiverExcessItems)));
- // Optimal symmetric differences between receiver and sender IBLTs
- // This is the parameter "a" from the graphene paper
- double optSymDiff = nReceiverMissingItems;
- if (nItems <= nReceiverUniverseItems + nReceiverMissingItems)
- optSymDiff = OptimalSymDiff(nItems, nReceiverUniverseItems, nReceiverExcessItems, nReceiverMissingItems);
- // Set false positive rate for Bloom filter based on optSymDiff
- double fpr = BloomFalsePositiveRate(optSymDiff, nReceiverExcessItems);
- // So far we have only made room for false positives in the IBLT
- // Make more room for missing items
- optSymDiff += nReceiverMissingItems;
- uint64_t nIbltCells = std::max((int)IBLT_CELL_MINIMUM, (int)ceil(optSymDiff));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement