BaseSignatureChecker
has virtual functions which are overridden by its child classes. These virtual functions have a default implementation. However because of the default implementation, bugs can be introduced by failing to implement one of them (e.g. #21151). To avoid this, those functions are made into pure virtual functions so that child classes must implement those functions. There are a few places where a BaseSignatureChecker
was being created; these instances have been replaced with the DUMMY_CHECKER
.
GenericTransactionSignatureChecker
has two constructors, one which takes a PrecomputedTransactionData
and one which does not. It can be difficult to understand which one to use, and whether a particular GenericTransactionSignatureChecker
has a PrecomputedTransactionData
. This has lead to some bugs as well (e.g. #22784). Looking through the codebase, the only place where PrecomputedTransactionData
does not need to be provided is in the unit tests. As such, this PR changes GenericTransactionSignatureChecker
to have only one constructor which requires PrecomputedTransactionData
to be provided. This has a side effect of requiring the same for MutableTransactionSignatureCreator
, which also had two constructors, and the one that did not require PrecomputedTransactionData
was only used in tests.