refactor: add isMaskVote to crisp circuit and sdk#1177
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
|
📝 WalkthroughWalkthroughAdds an Changes
Sequence Diagram(s)sequenceDiagram
participant SDK as TypeScript SDK
participant Circuit as CRISP Circuit
participant Verifier as Solidity Verifier
rect rgba(200,200,255,0.5)
alt Actual vote (is_mask_vote = false)
SDK->>SDK: generateVoteProof(isMaskVote=false)
SDK->>Circuit: submit circuit inputs (is_mask_vote=false)
Circuit->>Circuit: Merkle eligibility check
Circuit->>Circuit: GRECO verification
Circuit->>Circuit: validate_signature (assert)
Circuit->>Circuit: derive address, assert equals slot
Circuit->>Circuit: compute & return ct_commitment
Circuit-->>SDK: proof
SDK->>Verifier: submit proof (public inputs)
end
end
rect rgba(200,255,200,0.5)
alt Mask vote (is_mask_vote = true)
SDK->>SDK: generateMaskVoteProof(isMaskVote=true)
SDK->>Circuit: submit circuit inputs (is_mask_vote=true)
Circuit->>Circuit: Merkle eligibility check
Circuit->>Circuit: GRECO verification
Circuit->>Circuit: enforce k1 == 0
alt First vote
Circuit->>Circuit: return ct_commitment
else Updating slot
Circuit->>Circuit: build prev & sum commitments
Circuit->>Circuit: verify CiphertextAddition
Circuit->>Circuit: return sum_ct_commitment
end
Circuit-->>SDK: proof
SDK->>Verifier: submit proof (public inputs)
end
end
Verifier->>Verifier: loadVerificationKey() (updated N, LOG_N, VK_HASH, vk data)
Estimated code review effort🎯 4 (Complex) | ⏱️ ~40 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
e7a9302 to
be6a59d
Compare
Closes #1176
⸻
This PR simplifies the CRISP circuit by introducing an
isMaskVoteprivate input flag instead of inferring vote type from signature validity and address matching.Changes:
is_mask_voteboolean parameter to the circuit's main functionis_mask_vote == false): verify signature and address match within the circuitis_mask_vote == true): skip signature/address checks and verify vote is zerocheck_coefficient_zerofunction to use assertions instead of returning a booleanisMaskVoteparameterisMaskVoteflagSummary by CodeRabbit
New Features
Refactor
Chores
SDK
Tests
✏️ Tip: You can customize this high-level summary in your review settings.