From e6a4208b52ab961d840376aa0f51b886ab4226c6 Mon Sep 17 00:00:00 2001 From: poma Date: Fri, 15 Nov 2019 11:42:48 +0300 Subject: [PATCH 1/3] change zero value constant --- contracts/MerkleTreeWithHistory.sol | 2 +- lib/MerkleTree.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/MerkleTreeWithHistory.sol b/contracts/MerkleTreeWithHistory.sol index 5f5647b..f264cd0 100644 --- a/contracts/MerkleTreeWithHistory.sol +++ b/contracts/MerkleTreeWithHistory.sol @@ -17,7 +17,7 @@ library Hasher { contract MerkleTreeWithHistory { uint256 public constant FIELD_SIZE = 21888242871839275222246405745257275088548364400416034343698204186575808495617; - uint256 public constant ZERO_VALUE = 5702960885942360421128284892092891246826997279710054143430547229469817701242; // = MiMC("tornado") + uint256 public constant ZERO_VALUE = 21663839004416932945382355908790599225266501822907911457504978515578255421292; // = keccak256("tornado") % FIELD_SIZE uint32 public levels; diff --git a/lib/MerkleTree.js b/lib/MerkleTree.js index 958b809..af26b6d 100644 --- a/lib/MerkleTree.js +++ b/lib/MerkleTree.js @@ -11,7 +11,7 @@ class MerkleTree { this.zero_values = [] this.totalElements = 0 - let current_zero_value = '5702960885942360421128284892092891246826997279710054143430547229469817701242' + let current_zero_value = '21663839004416932945382355908790599225266501822907911457504978515578255421292' this.zero_values.push(current_zero_value) for (let i = 0; i < n_levels; i++) { current_zero_value = this.hasher.hash(i, current_zero_value, current_zero_value) From c0e81f2a37c5914dad0b1bc0c33961a54d2bdb80 Mon Sep 17 00:00:00 2001 From: poma Date: Fri, 15 Nov 2019 11:43:30 +0300 Subject: [PATCH 2/3] rename multiplexor --- circuits/merkleTree.circom | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/circuits/merkleTree.circom b/circuits/merkleTree.circom index bfd6016..1764f14 100644 --- a/circuits/merkleTree.circom +++ b/circuits/merkleTree.circom @@ -15,7 +15,7 @@ template HashLeftRight() { // if s == 0 returns [in[0], in[1]] // if s == 1 returns [in[1], in[0]] -template Mux() { +template DualMux() { signal input in[2]; signal input s; signal output out[2]; @@ -36,7 +36,7 @@ template MerkleTree(levels) { component hashers[levels]; for (var i = 0; i < levels; i++) { - selectors[i] = Mux(); + selectors[i] = DualMux(); selectors[i].in[0] <== i == 0 ? leaf : hashers[i - 1].hash; selectors[i].in[1] <== pathElements[i]; selectors[i].s <== pathIndices[i]; From 24a21ac88f10e0b9f8780bad564d0049013def97 Mon Sep 17 00:00:00 2001 From: poma Date: Fri, 15 Nov 2019 22:42:59 +0300 Subject: [PATCH 3/3] fix test --- test/ETHMixer.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/ETHMixer.test.js b/test/ETHMixer.test.js index 76d3611..a2622af 100644 --- a/test/ETHMixer.test.js +++ b/test/ETHMixer.test.js @@ -321,14 +321,14 @@ contract('ETHMixer', accounts => { await mixer.deposit(toFixedHex(deposit.commitment), { value, from: sender }) const { root, path_elements, path_index } = await tree.path(0) - const oneEtherFee = bigInt(1e18) // 1 ether + const largeFee = bigInt(value).add(bigInt(1)) const input = stringifyBigInts({ root, nullifierHash: pedersenHash(deposit.nullifier.leInt2Buff(31)), nullifier: deposit.nullifier, relayer: operator, recipient, - fee: oneEtherFee, + fee: largeFee, refund, secret: deposit.secret, pathElements: path_elements,