You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

51 lines
1.3 KiB

/*
# withdraw.circom
WARNING: WIP, very initial version of the miksi circuit
+--------+
PUB_coinCode+------->+ |
| | +----+
PUB_amount+--------->+Poseidon+------->+ == +<-----+PUB_commitment
| | +----+
PRI_secret+--------->+ |
+--------+
+----+
PUB_address+--->+ != +<---+0
+----+
*/
include "../node_modules/circomlib/circuits/babyjub.circom";
include "../node_modules/circomlib/circuits/comparators.circom";
include "../node_modules/circomlib/circuits/poseidon.circom";
include "../node_modules/circomlib/circuits/bitify.circom";
include "../node_modules/circomlib/circuits/smt/smtverifier.circom";
include "../node_modules/circomlib/circuits/smt/smtprocessor.circom";
template Withdraw() {
signal input coinCode;
signal input amount;
signal input commitment;
signal private input secret;
signal input address;
component hash = Poseidon(3, 6, 8, 57);
hash.inputs[0] <== coinCode;
hash.inputs[1] <== amount;
hash.inputs[2] <== secret;
component eq = IsEqual();
eq.in[0] <== hash.out;
eq.in[1] <== commitment;
eq.out === 1;
component z = IsZero();
z.in <== address;
z.out === 0;
}
component main = Withdraw();