From bb7470ae8a6568a27bf88138a8bb2c67e4cbfc05 Mon Sep 17 00:00:00 2001 From: ABDul Rehman Date: Wed, 17 Aug 2022 21:17:43 +0500 Subject: [PATCH] Gas Optimization --- contracts/Semaphore.sol | 5 ++++- contracts/extensions/SemaphoreVoting.sol | 5 ++++- contracts/extensions/SemaphoreWhistleblowing.sol | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/contracts/Semaphore.sol b/contracts/Semaphore.sol index 757b2fee..233c2905 100644 --- a/contracts/Semaphore.sol +++ b/contracts/Semaphore.sol @@ -35,8 +35,11 @@ contract Semaphore is ISemaphore, SemaphoreCore, SemaphoreGroups { /// @dev Initializes the Semaphore verifiers used to verify the user's ZK proofs. /// @param _verifiers: List of Semaphore verifiers (address and related Merkle tree depth). constructor(Verifier[] memory _verifiers) { - for (uint8 i = 0; i < _verifiers.length; ++i) { + for (uint8 i = 0; i < _verifiers.length; ) { verifiers[_verifiers[i].merkleTreeDepth] = IVerifier(_verifiers[i].contractAddress); + unchecked{ + ++i; + } } } diff --git a/contracts/extensions/SemaphoreVoting.sol b/contracts/extensions/SemaphoreVoting.sol index 96ea810b..1051f8f3 100644 --- a/contracts/extensions/SemaphoreVoting.sol +++ b/contracts/extensions/SemaphoreVoting.sol @@ -26,8 +26,11 @@ contract SemaphoreVoting is ISemaphoreVoting, SemaphoreCore, SemaphoreGroups { "SemaphoreVoting: parameters lists does not have the same length" ); - for (uint8 i = 0; i < depths.length; ++i) { + for (uint8 i = 0; i < depths.length;) { verifiers[depths[i]] = IVerifier(verifierAddresses[i]); + unchecked{ + ++i; + } } } diff --git a/contracts/extensions/SemaphoreWhistleblowing.sol b/contracts/extensions/SemaphoreWhistleblowing.sol index 76aabfbf..7cb9f32b 100644 --- a/contracts/extensions/SemaphoreWhistleblowing.sol +++ b/contracts/extensions/SemaphoreWhistleblowing.sol @@ -28,8 +28,11 @@ contract SemaphoreWhistleblowing is ISemaphoreWhistleblowing, SemaphoreCore, Sem "SemaphoreWhistleblowing: parameters lists does not have the same length" ); - for (uint8 i = 0; i < depths.length; ++i) { + for (uint8 i = 0; i < depths.length;) { verifiers[depths[i]] = IVerifier(verifierAddresses[i]); + unchecked{ + ++i; + } } }