chore: memoize address_bytes of verification key
#1444
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.
Summary
Added a lazily-initialized field
address_bytestoVerificationKey.Background
Testing showed that
address_byteswas called multiple times on a givenVerificationKey(up to 11 times in some cases). Each time the key's bytes were being hashed, so this change ensures that hashing only happens once for a given verification key instance.Note that this was implemented previously in #1111 and was then reverted in #1124. However, when reverted, the manual impls of
PartialEq,Eq,PartialOrd,OrdandHashwere left as-is, as were the unit tests for these. Hence this PR doesn't need to make any changes to these trait impls or tests.Changes
address_bytes: OnceLock<[u8; ADDRESS_LEN]>toVerificiationKey.Testing
No new tests required.
Related Issues
Closes #1351.