Skip to content

Instantly share code, notes, and snippets.

@CleanPegasus
Last active September 17, 2023 21:00
Show Gist options
  • Save CleanPegasus/f886d9bdc1d3c23c05e419462032c366 to your computer and use it in GitHub Desktop.
Save CleanPegasus/f886d9bdc1d3c23c05e419462032c366 to your computer and use it in GitHub Desktop.
zk-snark for credit proof
pragma circom 2.0.0;
include "../node_modules/circomlib/circuits/poseidon.circom";
include "../node_modules/circomlib/circuits/comparators.circom";
include "../node_modules/circomlib/circuits/gates.circom";
template CreditProof() {
signal input creditScore;
signal input minCreditScore;
signal input maxCreditScore;
signal input address;
signal input hash;
// creditScore >= minCreditScore && creditScore <= maxCreditScore
component lte = LessThan(252);
lte.in[0] <== creditScore;
lte.in[1] <== maxCreditScore;
component gte = GreaterThan(252);
gte.in[0] <== creditScore;
gte.in[1] <== minCreditScore;
lte.out * gte.out === 1;
component poseidon = Poseidon(2);
poseidon.inputs[0] <== address;
poseidon.inputs[1] <== creditScore;
poseidon.out === hash;
}
component main {public [minCreditScore, maxCreditScore, address, hash]} = CreditProof();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment