This PR makes Zendoo take advantage of the optimizations of the CCTP library about the handling of failures during the verification of certificate and CSW transaction proofs.
The CScAsyncProofVerifier now works like this:
Performs a batch verification
If there is a failure and the CCTP library returns the ID of failing proofs, they are removed from the queue
Performs a new batch verification with the remaining proofs
If still there is a failure, the CCTP library for sure is not able to return the failing IDs, so as last chance the proofs are processed one by one
During the implementation of such changes, some refactoring has been made to simplify the proof verification classes and to reduce duplication:
There is now a single queue for proofs, containing both certificates and CSW inputs
Some code of the async proof verifier has been moved to the generic proof verifier
The ProofVerifierOutput structure has been removed, the result of the verification is now stored in the queue item itself.
This PR makes Zendoo take advantage of the optimizations of the CCTP library about the handling of failures during the verification of certificate and CSW transaction proofs.
The CScAsyncProofVerifier now works like this:
During the implementation of such changes, some refactoring has been made to simplify the proof verification classes and to reduce duplication: