For long running nodes, the signature cache is also very helpful. Over time, transactions are accepted into the memory pool and signature cache.
I do not yet see how the signature cache actually helps, would you please elaborate?
A signature is a function of the hash of a modified version of the input transaction. The modification depends on which output of that transaction is to be spent. Aren't chances of seeing the same signature twice negligible?
Seeing a signature twice is the normal case:
- once as an unconfirmed transaction via "tx" message
- once as a confirmed transaction, via "block" message
It is critical to keep "block" message relaying (propagation) times as low as possible, to avoid creating incentives for miners to skip transactions. Thus, a signature cache ensures that "block" messages are largely already verified, by the time they are received.