feat: batch verification with blame #66
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When batch verification fails, it may be useful to know which proofs are invalid. Unfortunately,
Proof::verify_batch
cannot identify this.The optimal method for this depends on the caller's needs. If the caller only needs to identify one invalid proof in a failed batch, it's more efficient to use a binary search to identify it. But if the caller needs to identify all invalid proofs, we need to check them all individually.
This PR adds both of these. The new
Proof::verify_batch_with_single_blame
uses a binary search on batch failure, and returns an error containing the index of an invalid proof. The newProof::verify_batch_with_all_blame
iteratively checks all proofs on batch failure, and returns an error containing the indexes of all invalid proofs.BREAKING CHANGE: Empty batches are now considered valid by definition.