only run the block check occasionally (like once every two hours on average for each node), since it requires transferring lots of data and hashing locally
to serve a node, require that it has served a valid block (hashes OK) recently enough and that none of the information in the handshake has changed since then.
use a lightweight probe for the uptime probing: either FindHeaders (which would require doing a bit of hardcoding and would mean we can't use the zebra checkpoints, ah well) or just a protocol negotiation
only run the block check occasionally (like once every two hours on average for each node), since it requires transferring lots of data and hashing locally
to serve a node, require that it has served a valid block (hashes OK) recently enough and that none of the information in the handshake has changed since then.
use a lightweight probe for the uptime probing: either FindHeaders (which would require doing a bit of hardcoding and would mean we can't use the zebra checkpoints, ah well) or just a protocol negotiation