diff --git a/beacon-light-client/circom/circuits/utils/numerical.circom b/beacon-light-client/circom/circuits/utils/numerical.circom index ac6929f94..a0cbf3042 100644 --- a/beacon-light-client/circom/circuits/utils/numerical.circom +++ b/beacon-light-client/circom/circuits/utils/numerical.circom @@ -44,7 +44,7 @@ template DivisionVerification() { dividend === divisor * quotient + remainder; - component lessThan = LessThan(252); + component lessThan = LessThanBitsCheck(252); lessThan.in[0] <== remainder; lessThan.in[1] <== divisor; lessThan.out === 1; @@ -59,8 +59,6 @@ template DivisionBy() { quotient <-- dividend \ divisor; remainder <-- dividend % divisor; - quotient * divisor + remainder === dividend; - component divisionVerification = DivisionVerification(); divisionVerification.divisor <== divisor; divisionVerification.dividend <== dividend; diff --git a/beacon-light-client/circom/test/division_by/circuit.circom b/beacon-light-client/circom/test/division_by/circuit.circom new file mode 100644 index 000000000..fdcc6d9ea --- /dev/null +++ b/beacon-light-client/circom/test/division_by/circuit.circom @@ -0,0 +1,5 @@ +pragma circom 2.1.5; + +include "../../circuits/utils/numerical.circom"; + +component main = DivisionBy(); diff --git a/beacon-light-client/circom/test/division_by/data/case01/input.json b/beacon-light-client/circom/test/division_by/data/case01/input.json new file mode 100644 index 000000000..0646c99d2 --- /dev/null +++ b/beacon-light-client/circom/test/division_by/data/case01/input.json @@ -0,0 +1,4 @@ +{ + "dividend": "23", + "divisor": "10" +} diff --git a/beacon-light-client/circom/test/division_by/data/case01/output.json b/beacon-light-client/circom/test/division_by/data/case01/output.json new file mode 100644 index 000000000..1168c4941 --- /dev/null +++ b/beacon-light-client/circom/test/division_by/data/case01/output.json @@ -0,0 +1,4 @@ +{ + "quotient": "2", + "remainder": "3" +} diff --git a/beacon-light-client/circom/test/division_by/data/case02/input.json b/beacon-light-client/circom/test/division_by/data/case02/input.json new file mode 100644 index 000000000..cdc6b5d5d --- /dev/null +++ b/beacon-light-client/circom/test/division_by/data/case02/input.json @@ -0,0 +1,4 @@ +{ + "dividend": "100", + "divisor": "10" +} diff --git a/beacon-light-client/circom/test/division_by/data/case02/output.json b/beacon-light-client/circom/test/division_by/data/case02/output.json new file mode 100644 index 000000000..991302449 --- /dev/null +++ b/beacon-light-client/circom/test/division_by/data/case02/output.json @@ -0,0 +1,4 @@ +{ + "quotient": "10", + "remainder": "0" +} diff --git a/beacon-light-client/circom/test/division_by/data/case03/input.json b/beacon-light-client/circom/test/division_by/data/case03/input.json new file mode 100644 index 000000000..10361e0bf --- /dev/null +++ b/beacon-light-client/circom/test/division_by/data/case03/input.json @@ -0,0 +1,4 @@ +{ + "dividend": "420", + "divisor": "469" +} diff --git a/beacon-light-client/circom/test/division_by/data/case03/output.json b/beacon-light-client/circom/test/division_by/data/case03/output.json new file mode 100644 index 000000000..69305d54b --- /dev/null +++ b/beacon-light-client/circom/test/division_by/data/case03/output.json @@ -0,0 +1,4 @@ +{ + "quotient": "0", + "remainder": "420" +}