Can verify_logs() catch cases of eth_getLogs not returning all matching logs?
Hey, I'm diving into the codebase here to understand the verification story for RPC calls. I'm particularly interested in verifying the results of eth_getLogs calls.
After taking a glance at the get_logs function and the related verify_logs function I am wondering how we can verify false negative cases.
It appears that verify_logs() verifies that each and every log returned in the result of rpc.get_logs() is actually in the corresponding receipt. This is great but what about any potentially missed logs?
To say it another way for clarity: a specific rpc.get_logs() request should return 100 events but instead returns 99 having missed one for some reason, verify_logs() won't catch that?
Yes this is a known limitation of eth_getLogs for Helios. Unfortunately I don't think there is an efficient way to check for false negatives, as this would require checking the logs in every block. If there is some way we're not thinking of though would love to discuss.
Ya figured as much, makes perfect sense as it would be very expensive to check the logs in every block in the range.
It could be very nice though as an option; not feasible to do with every single call in-band but in case someone wants to prove a result out of band.
In my experience missed logs are one of the most common issues with RPC providers running at scale, so I'm trying to find solutions to verify those results out of band.