Skip to content

Conversation

sethdusek
Copy link
Collaborator

@sethdusek sethdusek commented Dec 3, 2024

Use pre-computed multiplication tables for generator where possible (secret key -> pk, generating public image of nonce in signing/verification, etc). Also pre-compute DlogProverInput.public_image() to avoid repeated EC operations in signing (helps performance when there are many secrets in Wallet).

Some benchmarks (Wallet with 1000 secrets, signing N inputs):

  • cachedpk is with only eagerly-evaluated public image (a410eaf)
  • precomputed+cachedpk uses generator table optimization + cachedpk
  • Final is the result of all optimizations, along with some other smaller optimizations
    plot

Some small improvements to verification as well, tested on dbd86fdce57f3a5124e88ec1ee4b7289e450e059e21a74c303bf13bf0b924945, time to verify is down from 0.2s to 0.17s

@sethdusek sethdusek force-pushed the precomputedtables branch 4 times, most recently from 0cbe43e to 8c3e8c2 Compare December 5, 2024 06:28
@sethdusek sethdusek marked this pull request as ready for review December 5, 2024 07:06
@sethdusek sethdusek requested a review from kushti December 5, 2024 07:06
@sethdusek sethdusek force-pushed the precomputedtables branch 2 times, most recently from 79c0f07 to 4c4ce08 Compare December 5, 2024 07:11
@sethdusek sethdusek force-pushed the precomputedtables branch 3 times, most recently from 8c71d15 to 2b95ee3 Compare January 3, 2025 06:54
@coveralls
Copy link

coveralls commented Jan 3, 2025

Pull Request Test Coverage Report for Build 16405540612

Details

  • 62 of 69 (89.86%) changed or added relevant lines in 16 files are covered.
  • 10 unchanged lines in 5 files lost coverage.
  • Overall coverage decreased (-0.01%) to 78.438%

Changes Missing Coverage Covered Lines Changed/Added Lines %
ergo-lib/src/chain/transaction/unsigned.rs 0 1 0.0%
ergotree-interpreter/src/eval/create_provedlog.rs 0 1 0.0%
ergotree-interpreter/src/sigma_protocol/private_input.rs 14 15 93.33%
ergo-lib/src/wallet/ext_secret_key.rs 9 13 69.23%
Files with Coverage Reduction New Missed Lines %
ergo-p2p/src/peer_info.rs 1 68.42%
ergotree-interpreter/src/sigma_protocol/private_input.rs 1 90.32%
ergotree-ir/src/mir/constant.rs 1 63.98%
ergotree-ir/src/mir/expr.rs 1 69.02%
ergo-p2p/src/peer_spec.rs 6 78.13%
Totals Coverage Status
Change from base Build 15758737784: -0.01%
Covered Lines: 11961
Relevant Lines: 15249

💛 - Coveralls

@sethdusek sethdusek force-pushed the precomputedtables branch 2 times, most recently from 0b00af5 to d272070 Compare July 20, 2025 23:48
This avoids repeated multiplications by group element when signing
Now that DlogProverInput eagerly evaluates public key, it's a bad fit for ExtSecretKey since it causes unnecessary EC operations
@sethdusek sethdusek force-pushed the precomputedtables branch from d272070 to 7bd76af Compare July 20, 2025 23:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants