The signatures of transactions in blocks re verified in Transaction.validate() when getSender() is called.
Transaction.validate() is called by Transaction.verify() which is called by the rules BlockTxsValidationRule and BlockTxsFieldsValidationRule.
The solutions is either to inject the sender from the cache into into the Transaction, or to pass the signatureCache to the verify() method, so that the cached sender is used instead of getSender().
I think that getSender() should be marked as a debug method to avoid being used by mistake, and getSender(cache) should be used everywhere.
The signatures of transactions in blocks re verified in Transaction.validate() when getSender() is called.
Transaction.validate() is called by Transaction.verify() which is called by the rules BlockTxsValidationRule and BlockTxsFieldsValidationRule.
The solutions is either to inject the sender from the cache into into the Transaction, or to pass the signatureCache to the verify() method, so that the cached sender is used instead of getSender().
I think that getSender() should be marked as a debug method to avoid being used by mistake, and getSender(cache) should be used everywhere.