Skip to content

fix(circomgnark): cache verifying key conversions#393

Open
altergui wants to merge 1 commit intomainfrom
optimize-circomgnark
Open

fix(circomgnark): cache verifying key conversions#393
altergui wants to merge 1 commit intomainfrom
optimize-circomgnark

Conversation

@altergui
Copy link
Copy Markdown
Contributor

@altergui altergui commented Apr 2, 2026

No description provided.

Copilot AI review requested due to automatic review settings April 2, 2026 15:27
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request implements caching for verification key conversions in the circomgnark package to optimize performance when the same verification keys are converted multiple times. The PR moves verification key conversion to occur only when needed (when fixedVk is false) in the ToGnarkRecursion function, and adds two separate caching layers: one for unmarshalling CircomVerificationKey from JSON and another for converting CircomVerificationKey to Gnark format.

Changes:

  • Moved verification key conversion in ToGnarkRecursion from unconditional to conditional (only when fixedVk is false) to avoid unnecessary work
  • Added caching layer in UnmarshalCircomVerificationKeyJSON to return the same parsed object for identical JSON input
  • Added caching layer in CircomVerificationKey.ToGnark() to return the same converted verification key for the same input object
  • Introduced comprehensive tests to verify caching behavior and the optimization

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
util/circomgnark/recursion.go Moved verification key conversion to occur only when fixedVk is false
util/circomgnark/conv.go Added caching to ToGnark() method using pointer-based cache keys
util/circomgnark/marshal.go Added caching to UnmarshalCircomVerificationKeyJSON() using string-based cache keys
util/circomgnark/cache_test.go Added tests to verify caching behavior

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants