From be4165afa5609245a7ffbb89228e3d0bd05176b6 Mon Sep 17 00:00:00 2001 From: cedoor Date: Fri, 18 Nov 2022 20:04:39 +0100 Subject: [PATCH] fix(contracts): save merkle roots after updates or removal of members --- packages/contracts/contracts/Semaphore.sol | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/contracts/contracts/Semaphore.sol b/packages/contracts/contracts/Semaphore.sol index 93aaea75..dc80d425 100644 --- a/packages/contracts/contracts/Semaphore.sol +++ b/packages/contracts/contracts/Semaphore.sol @@ -111,6 +111,10 @@ contract Semaphore is ISemaphore, SemaphoreGroups { uint8[] calldata proofPathIndices ) external override onlyGroupAdmin(groupId) { _updateMember(groupId, identityCommitment, newIdentityCommitment, proofSiblings, proofPathIndices); + + uint256 merkleTreeRoot = getMerkleTreeRoot(groupId); + + groups[groupId].merkleRootCreationDates[merkleTreeRoot] = block.timestamp; } /// @dev See {ISemaphore-removeMember}. @@ -121,6 +125,10 @@ contract Semaphore is ISemaphore, SemaphoreGroups { uint8[] calldata proofPathIndices ) external override onlyGroupAdmin(groupId) { _removeMember(groupId, identityCommitment, proofSiblings, proofPathIndices); + + uint256 merkleTreeRoot = getMerkleTreeRoot(groupId); + + groups[groupId].merkleRootCreationDates[merkleTreeRoot] = block.timestamp; } /// @dev See {ISemaphore-verifyProof}.