Refactoring and enhancements for SNARK-friendly STM
Maintainers usually reply within 2 days
@leepl37 is already working on this.
Since Mar 10, 2026.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 32/100
- Issue type
- Refactor
- Clarity
- Needs clarification
- Activity status
- Quiet
- Tech stack
- rust
- Domain
- blockchain, cryptography
Research direction
Start with mithril-stm/src/protocol/participant/signer.rs at the referenced RNG handling lines, then review the STM library structure and its CPU/circuit compatibility tests. The issue spans several iterations, including registration-entry refactors, error handling, verification-key and signature options, and lottery-target computation; done means the selected checklist items are implemented and covered by the relevant tests.
Written by the indexing model from the issue text.
Description
Why
The STM library has accumulated structural debt as SNARK support was introduced alongside the existing concatenation proof system.
What
Perform targeted refactorings and enhancements across the STM library to improve separation of concerns, test efficiency, API readiness for SNARK signing, and overall code hygiene.
How
Current iteration
- Better RNG support for RNG in STM protocol signer (https://github.com/input-output-hk/mithril/blob/main/mithril-stm/src/protocol/participant/signer.rs#L61-L62)
Following iteration
- Enhance error handling with Midnight zk library (need new version of Midnight zk released)
- Refactor
RegistrationEntryinto struct with fields - Refactoring
ClosedRegistrationEntry(To avoid having double options for vk and stake/lottery target value, use aClosedRegistrationEntryForConcatenationand aOption<ClosedRegistrationEntryForSnark>) - Refactor tests for CPU/circuit compatibility (Create a dedicated module for CPU/non-recursive circuit compatibility tests)
Later
- Get rid of Options for SNARK verification keys and signatures
- Optimize computation of Lottery Target Value with Binomial Series?
(1-phi_f)^w = 1 - w * phi_f + w(w-1) * (phi_f^2) / 2! - w(w-1)(w-2) * (phi_f^3) / 3! + ...
- Dominant language
- Rust
- Stars
- 155
- Forks
- 52
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 37
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from IntersectMBO/mithril
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
IntersectMBO/mithril#1605 · 2 comments ·
Maintainers usually reply within 2 days
-
spike :satellite:
Difficulty 5/5 Over a week Newbie friendliness 10/100
IntersectMBO/mithril#3701 ·
Maintainers usually reply within 2 days
-
Publish a DNSLink record of the immutable archives IPNS name in the Mithril networks DNS zonesPossibly taken @jpraynaud claimed this 2 days ago. Openfeature :rocket:
IntersectMBO/mithril#3700 · 1 assignee ·
Maintainers usually reply within 2 days
-
feature :rocket:
Difficulty 4/5 3-5 days Newbie friendliness 25/100
IntersectMBO/mithril#3699 ·
Maintainers usually reply within 2 days
-
feature :rocket:
Difficulty 4/5 3-5 days Newbie friendliness 35/100
IntersectMBO/mithril#3698 ·
Maintainers usually reply within 2 days
All issues in IntersectMBO/mithril
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
storytold/photocraft#14822 ·
Maintainers usually reply within 1 day
-
bug css
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
dginev/latexml-oxide#853 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 2 days
-
[Bug] export_build_environment admits its output directory only after the export ran in the build computerPossibly taken @viniciusdsandrade claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day