From 166fe259f3db962e50ad02100595f3b3940d8bd2 Mon Sep 17 00:00:00 2001 From: Ryan Sauge Date: Wed, 13 Sep 2023 13:14:59 +0200 Subject: [PATCH] Add slither report for the version 2.3.1 --- contracts/CMTAT_PROXY.sol | 2 - .../internal/ERC20SnapshotModuleInternal.sol | 7 +- contracts/modules/wrapper/core/BaseModule.sol | 2 - .../CMTATSnapshot/CMTATSnapshotProxyTest.sol | 2 - ...her-report.md => v2.3.0-slither-report.md} | 0 .../audits/tools/v2.3.1-slither-report.md | 435 ++++++++++-------- 6 files changed, 239 insertions(+), 209 deletions(-) rename doc/audits/tools/{slither-report.md => v2.3.0-slither-report.md} (100%) rename slither-report.md => doc/audits/tools/v2.3.1-slither-report.md (81%) diff --git a/contracts/CMTAT_PROXY.sol b/contracts/CMTAT_PROXY.sol index 37745766..62963847 100644 --- a/contracts/CMTAT_PROXY.sol +++ b/contracts/CMTAT_PROXY.sol @@ -13,8 +13,6 @@ contract CMTAT_PROXY is CMTAT_BASE { constructor( address forwarderIrrevocable ) MetaTxModule(forwarderIrrevocable) { - // Initialize the variable for the implementation - deployedWithProxy = true; // Disable the possibility to initialize the implementation _disableInitializers(); } diff --git a/contracts/modules/internal/ERC20SnapshotModuleInternal.sol b/contracts/modules/internal/ERC20SnapshotModuleInternal.sol index 765cfd4a..e77f740c 100644 --- a/contracts/modules/internal/ERC20SnapshotModuleInternal.sol +++ b/contracts/modules/internal/ERC20SnapshotModuleInternal.sol @@ -51,7 +51,9 @@ abstract contract ERC20SnapshotModuleInternal is ERC20Upgradeable { /** @dev time instead of a counter for OpenZeppelin */ + // Initialized to zero uint256 private _currentSnapshotTime; + // Initialized to zero uint256 private _currentSnapshotIndex; /** @@ -74,8 +76,8 @@ abstract contract ERC20SnapshotModuleInternal is ERC20Upgradeable { } function __ERC20Snapshot_init_unchained() internal onlyInitializing { - _currentSnapshotTime = 0; - _currentSnapshotIndex = 0; + // Nothing to do + // _currentSnapshotTime & _currentSnapshotIndex are initialized to zero } /** @@ -470,6 +472,7 @@ abstract contract ERC20SnapshotModuleInternal is ERC20Upgradeable { ) { return (0, currentArraySize); } + // mostRecent is initialized in the loop uint256 mostRecent; index = currentArraySize; for (uint256 i = _currentSnapshotIndex; i < currentArraySize; ) { diff --git a/contracts/modules/wrapper/core/BaseModule.sol b/contracts/modules/wrapper/core/BaseModule.sol index 8526294a..dc89d857 100644 --- a/contracts/modules/wrapper/core/BaseModule.sol +++ b/contracts/modules/wrapper/core/BaseModule.sol @@ -13,8 +13,6 @@ abstract contract BaseModule is AuthorizationModule { Get the current version of the smart contract */ string public constant VERSION = "2.3.1"; - // to initialize inside the implementation constructor when deployed with a Proxy - bool internal deployedWithProxy; /* Events */ event Term(string indexed newTermIndexed, string newTerm); event TokenId(string indexed newTokenIdIndexed, string newTokenId); diff --git a/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol b/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol index ea9e0ef3..75525862 100644 --- a/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol +++ b/contracts/test/CMTATSnapshot/CMTATSnapshotProxyTest.sol @@ -13,8 +13,6 @@ contract CMTATSnapshotProxyTest is CMTAT_BASE_SnapshotTest { constructor( address forwarderIrrevocable ) MetaTxModule(forwarderIrrevocable) { - // Initialize the variable for the implementation - deployedWithProxy = true; // Disable the possibility to initialize the implementation _disableInitializers(); } diff --git a/doc/audits/tools/slither-report.md b/doc/audits/tools/v2.3.0-slither-report.md similarity index 100% rename from doc/audits/tools/slither-report.md rename to doc/audits/tools/v2.3.0-slither-report.md diff --git a/slither-report.md b/doc/audits/tools/v2.3.1-slither-report.md similarity index 81% rename from slither-report.md rename to doc/audits/tools/v2.3.1-slither-report.md index d28d8941..0f8177f3 100644 --- a/slither-report.md +++ b/doc/audits/tools/v2.3.1-slither-report.md @@ -1,5 +1,10 @@ +# Slither report + +This report was generated with [Slither](https://github.com/crytic/slither) + **THIS CHECKLIST IS NOT COMPLETE**. Use `--show-ignored-findings` to show all the results. Summary + - [uninitialized-local](#uninitialized-local) (1 results) (Medium) - [calls-loop](#calls-loop) (4 results) (Low) - [timestamp](#timestamp) (6 results) (Low) @@ -7,804 +12,832 @@ Summary - [dead-code](#dead-code) (16 results) (Informational) - [solc-version](#solc-version) (29 results) (Informational) - [naming-convention](#naming-convention) (65 results) (Informational) - - [unused-state](#unused-state) (1 results) (Informational) - - [constable-states](#constable-states) (1 results) (Optimization) - - [immutable-states](#immutable-states) (1 results) (Optimization) ## uninitialized-local + +> The concerned variable local `mostRecent` is initialized in the loop + Impact: Medium Confidence: Medium + - [ ] ID-0 -[ERC20SnapshotModuleInternal._findScheduledMostRecentPastSnapshot().mostRecent](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L473) is a local variable never initialized + [ERC20SnapshotModuleInternal._findScheduledMostRecentPastSnapshot().mostRecent](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L476) is a local variable never initialized + +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L476 -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L473 ## calls-loop + +> Remark: +> +> - The RuleEngine is a trusted contract deployed by the issuer. +> +> It is not a problem to perform external call to this contract +> +> - When a ruleEngine is created, the issuer has indeed to keep in mind to limit the number of rules. + + + Impact: Low Confidence: Medium - - [ ] ID-1 + - [ ] ID-0 [RuleEngineMock.messageForTransferRestriction(uint8)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L74-L88) has external calls inside a loop: [_rules[i].messageForTransferRestriction(_restrictionCode)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L80-L81) contracts/mocks/RuleEngine/RuleEngineMock.sol#L74-L88 - - [ ] ID-2 + - [ ] ID-1 [RuleEngineMock.messageForTransferRestriction(uint8)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L74-L88) has external calls inside a loop: [_rules[i].canReturnTransferRestrictionCode(_restrictionCode)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L79) contracts/mocks/RuleEngine/RuleEngineMock.sol#L74-L88 - - [ ] ID-3 + - [ ] ID-2 [ValidationModuleInternal._validateTransfer(address,address,uint256)](contracts/modules/internal/ValidationModuleInternal.sol#L47-L53) has external calls inside a loop: [ruleEngine.validateTransfer(from,to,amount)](contracts/modules/internal/ValidationModuleInternal.sol#L52) contracts/modules/internal/ValidationModuleInternal.sol#L47-L53 - - [ ] ID-4 + - [ ] ID-3 [RuleEngineMock.detectTransferRestriction(address,address,uint256)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L40-L60) has external calls inside a loop: [restriction = _rules[i].detectTransferRestriction(_from,_to,_amount)](contracts/mocks/RuleEngine/RuleEngineMock.sol#L47-L51) contracts/mocks/RuleEngine/RuleEngineMock.sol#L40-L60 + ## timestamp + +> Remark: +> +> With the Proof of Work, it was possible for a miner to modify the timestamp in a range of about 15 seconds +> +> With the Proof Of Stake, a new block is created every 12 seconds +> +> In all cases, we are not looking for such precision + Impact: Low Confidence: Medium + + - [ ] ID-4 + [ERC20SnapshotModuleInternal._rescheduleSnapshot(uint256,uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L153-L194) uses timestamp for comparisons + Dangerous comparisons: + - [oldTime <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L155) + - [newTime <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L158) + +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L153-L194 + + - [ ] ID-5 -[ERC20SnapshotModuleInternal._findScheduledMostRecentPastSnapshot()](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L460-L488) uses timestamp for comparisons + [ERC20SnapshotModuleInternal._unscheduleSnapshotNotOptimized(uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L221-L236) uses timestamp for comparisons Dangerous comparisons: - - [_scheduledSnapshots[i] <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L476) + - [time <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L222) -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L460-L488 +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L221-L236 - [ ] ID-6 -[ERC20SnapshotModuleInternal._scheduleSnapshotNotOptimized(uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L116-L144) uses timestamp for comparisons + [ERC20SnapshotModuleInternal._unscheduleLastSnapshot(uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L199-L213) uses timestamp for comparisons Dangerous comparisons: - - [time <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L117) + - [time <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L201) -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L116-L144 +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L199-L213 - [ ] ID-7 -[ERC20SnapshotModuleInternal._unscheduleSnapshotNotOptimized(uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L217-L232) uses timestamp for comparisons + [ERC20SnapshotModuleInternal._scheduleSnapshot(uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L89-L115) uses timestamp for comparisons Dangerous comparisons: - - [time <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L218) + - [time <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L91) -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L217-L232 +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L89-L115 - [ ] ID-8 -[ERC20SnapshotModuleInternal._unscheduleLastSnapshot(uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L195-L209) uses timestamp for comparisons + [ERC20SnapshotModuleInternal._scheduleSnapshotNotOptimized(uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L120-L148) uses timestamp for comparisons Dangerous comparisons: - - [time <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L197) + - [time <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L121) -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L195-L209 +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L120-L148 - [ ] ID-9 -[ERC20SnapshotModuleInternal._rescheduleSnapshot(uint256,uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L149-L190) uses timestamp for comparisons + [ERC20SnapshotModuleInternal._findScheduledMostRecentPastSnapshot()](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L464-L494) uses timestamp for comparisons Dangerous comparisons: - - [oldTime <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L151) - - [newTime <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L154) - -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L149-L190 + - [_scheduledSnapshots[i] <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L482) +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L464-L494 - - [ ] ID-10 -[ERC20SnapshotModuleInternal._scheduleSnapshot(uint256)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L85-L111) uses timestamp for comparisons - Dangerous comparisons: - - [time <= block.timestamp](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L87) - -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L85-L111 +## costly-loop +> Inside the function, these two operations are not performed inside a loop. +> +> It seems that the only loops which calls`setCurrentSnapshot`are inside the batch functions(mintBatch, burnBatch, ...) through a call to the function update. +> At the moment, There is no trivial solution to resolve this. -## costly-loop Impact: Informational Confidence: Medium - - [ ] ID-11 -[ERC20SnapshotModuleInternal._setCurrentSnapshot()](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L406-L415) has costly operations inside a loop: - - [_currentSnapshotIndex = scheduleSnapshotIndex](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L413) -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L406-L415 + - [ ] ID-10 + [ERC20SnapshotModuleInternal._setCurrentSnapshot()](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L410-L419) has costly operations inside a loop: + - [_currentSnapshotTime = scheduleSnapshotTime](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L416) +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L410-L419 - - [ ] ID-12 -[ERC20SnapshotModuleInternal._setCurrentSnapshot()](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L406-L415) has costly operations inside a loop: - - [_currentSnapshotTime = scheduleSnapshotTime](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L412) -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L406-L415 + - [ ] ID-11 + [ERC20SnapshotModuleInternal._setCurrentSnapshot()](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L410-L419) has costly operations inside a loop: + - [_currentSnapshotIndex = scheduleSnapshotIndex](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L417) +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L410-L419 ## dead-code + +> Remark: +> +> function init: +> +> We have theses dead codes because we follow the same architecture and +> principle as OpenZeppelin, +> +> For example: [https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/eb67bf72abb459f9f22fd2a67e8eb87781486042/contracts/access/AccessControlUpgradeable.sol#L82](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/eb67bf72abb459f9f22fd2a67e8eb87781486042/contracts/access/AccessControlUpgradeable.sol#L82) +> +> ID-16- msgData: +> +> - Implemented to be gasless compatible (see MetaTxModule) +> +> - If we remove this function, we will have the following error: +> +> "Derived contract must override function "_msgData". Two or more base classes define function with same name and parameter types." + Impact: Informational Confidence: Medium - - [ ] ID-13 + + - [ ] ID-12 [MetaTxModule._msgData()](contracts/modules/wrapper/extensions/MetaTxModule.sol#L33-L41) is never used and should be removed contracts/modules/wrapper/extensions/MetaTxModule.sol#L33-L41 - - [ ] ID-14 + - [ ] ID-13 [PauseModule.__PauseModule_init(address,uint48)](contracts/modules/wrapper/core/PauseModule.sol#L25-L40) is never used and should be removed contracts/modules/wrapper/core/PauseModule.sol#L25-L40 - - [ ] ID-15 + - [ ] ID-14 [ValidationModule.__ValidationModule_init(IEIP1404Wrapper,address,uint48)](contracts/modules/wrapper/controller/ValidationModule.sol#L27-L54) is never used and should be removed contracts/modules/wrapper/controller/ValidationModule.sol#L27-L54 - - [ ] ID-16 + - [ ] ID-15 [ERC20MintModule.__ERC20MintModule_init(string,string,address,uint48)](contracts/modules/wrapper/core/ERC20MintModule.sol#L16-L36) is never used and should be removed contracts/modules/wrapper/core/ERC20MintModule.sol#L16-L36 - - [ ] ID-17 + - [ ] ID-16 [CMTAT_BASE._msgData()](contracts/modules/CMTAT_BASE.sol#L216-L223) is never used and should be removed contracts/modules/CMTAT_BASE.sol#L216-L223 - - [ ] ID-18 + - [ ] ID-17 [DebtBaseModule.__DebtBaseModule_init(address,uint48)](contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L58-L75) is never used and should be removed contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L58-L75 - - [ ] ID-19 + - [ ] ID-18 [ERC20BaseModule.__ERC20Module_init(string,string,uint8)](contracts/modules/wrapper/core/ERC20BaseModule.sol#L27-L38) is never used and should be removed contracts/modules/wrapper/core/ERC20BaseModule.sol#L27-L38 - - [ ] ID-20 + - [ ] ID-19 [CreditEventsModule.__CreditEvents_init(address,uint48)](contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L25-L42) is never used and should be removed contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L25-L42 - - [ ] ID-21 + - [ ] ID-20 [ERC20BurnModule.__ERC20BurnModule_init(string,string,address,uint48)](contracts/modules/wrapper/core/ERC20BurnModule.sol#L15-L35) is never used and should be removed contracts/modules/wrapper/core/ERC20BurnModule.sol#L15-L35 - - [ ] ID-22 + - [ ] ID-21 [ValidationModuleInternal.__Validation_init(IEIP1404Wrapper)](contracts/modules/internal/ValidationModuleInternal.sol#L28-L33) is never used and should be removed contracts/modules/internal/ValidationModuleInternal.sol#L28-L33 - - [ ] ID-23 + - [ ] ID-22 [EnforcementModuleInternal.__Enforcement_init()](contracts/modules/internal/EnforcementModuleInternal.sol#L43-L46) is never used and should be removed contracts/modules/internal/EnforcementModuleInternal.sol#L43-L46 - - [ ] ID-24 + - [ ] ID-23 [ERC20SnapshotModule.__ERC20SnasphotModule_init(string,string,address,uint48)](contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L19-L43) is never used and should be removed contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L19-L43 - - [ ] ID-25 -[BaseModule.__Base_init(string,string,string,uint256,address,uint48)](contracts/modules/wrapper/core/BaseModule.sol#L41-L61) is never used and should be removed + - [ ] ID-24 +[BaseModule.__Base_init(string,string,string,uint256,address,uint48)](contracts/modules/wrapper/core/BaseModule.sol#L39-L59) is never used and should be removed -contracts/modules/wrapper/core/BaseModule.sol#L41-L61 +contracts/modules/wrapper/core/BaseModule.sol#L39-L59 - - [ ] ID-26 -[ERC20SnapshotModuleInternal.__ERC20Snapshot_init(string,string)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L67-L74) is never used and should be removed + - [ ] ID-25 +[ERC20SnapshotModuleInternal.__ERC20Snapshot_init(string,string)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L71-L78) is never used and should be removed -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L67-L74 +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L71-L78 - - [ ] ID-27 + - [ ] ID-26 [EnforcementModule.__EnforcementModule_init(address,uint48)](contracts/modules/wrapper/core/EnforcementModule.sol#L25-L42) is never used and should be removed contracts/modules/wrapper/core/EnforcementModule.sol#L25-L42 - - [ ] ID-28 + - [ ] ID-27 [AuthorizationModule.__AuthorizationModule_init(address,uint48)](contracts/modules/security/AuthorizationModule.sol#L29-L42) is never used and should be removed contracts/modules/security/AuthorizationModule.sol#L29-L42 - ## solc-version + +> Remark: +> +> The use of the version 0.8.20 is a requirement to update the OpenZeppelin library to the version 5.0.0 + Impact: Informational Confidence: High - - [ ] ID-29 + - [ ] ID-28 Pragma version[^0.8.20](contracts/modules/internal/ValidationModuleInternal.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/internal/ValidationModuleInternal.sol#L3 - - [ ] ID-30 + - [ ] ID-29 Pragma version[^0.8.20](contracts/modules/wrapper/core/ERC20BurnModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/core/ERC20BurnModule.sol#L3 - - [ ] ID-31 + - [ ] ID-30 Pragma version[^0.8.20](contracts/CMTAT_PROXY.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/CMTAT_PROXY.sol#L3 - - [ ] ID-32 + - [ ] ID-31 Pragma version[^0.8.20](contracts/modules/CMTAT_BASE.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/CMTAT_BASE.sol#L3 - - [ ] ID-33 + - [ ] ID-32 Pragma version[^0.8.20](contracts/libraries/Errors.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/libraries/Errors.sol#L3 - - [ ] ID-34 + - [ ] ID-33 Pragma version[^0.8.20](contracts/mocks/MinimalForwarderMock.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/mocks/MinimalForwarderMock.sol#L3 - - [ ] ID-35 + - [ ] ID-34 Pragma version[^0.8.20](contracts/modules/security/AuthorizationModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/security/AuthorizationModule.sol#L3 - - [ ] ID-36 + - [ ] ID-35 Pragma version[^0.8.20](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L3 - - [ ] ID-37 + - [ ] ID-36 solc-0.8.20 is not recommended for deployment - - [ ] ID-38 + - [ ] ID-37 Pragma version[^0.8.0](contracts/mocks/RuleEngine/interfaces/IRuleEngine.sol#L3) allows old versions contracts/mocks/RuleEngine/interfaces/IRuleEngine.sol#L3 - - [ ] ID-39 + - [ ] ID-38 Pragma version[^0.8.0](contracts/interfaces/IEIP1404/IEIP1404.sol#L3) allows old versions contracts/interfaces/IEIP1404/IEIP1404.sol#L3 - - [ ] ID-40 + - [ ] ID-39 Pragma version[^0.8.0](contracts/mocks/RuleEngine/interfaces/IRule.sol#L3) allows old versions contracts/mocks/RuleEngine/interfaces/IRule.sol#L3 - - [ ] ID-41 + - [ ] ID-40 Pragma version[^0.8.20](contracts/modules/internal/EnforcementModuleInternal.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/internal/EnforcementModuleInternal.sol#L3 - - [ ] ID-42 + - [ ] ID-41 Pragma version[^0.8.20](contracts/modules/wrapper/core/BaseModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/core/BaseModule.sol#L3 - - [ ] ID-43 + - [ ] ID-42 Pragma version[^0.8.20](contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L3 - - [ ] ID-44 + - [ ] ID-43 Pragma version[^0.8.0](contracts/interfaces/IDebtGlobal.sol#L3) allows old versions contracts/interfaces/IDebtGlobal.sol#L3 - - [ ] ID-45 + - [ ] ID-44 Pragma version[^0.8.20](contracts/mocks/RuleEngine/RuleMock.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/mocks/RuleEngine/RuleMock.sol#L3 - - [ ] ID-46 + - [ ] ID-45 Pragma version[^0.8.20](contracts/modules/wrapper/core/ERC20MintModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/core/ERC20MintModule.sol#L3 - - [ ] ID-47 + - [ ] ID-46 Pragma version[^0.8.20](contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L3 - - [ ] ID-48 + - [ ] ID-47 Pragma version[^0.8.20](contracts/modules/wrapper/controller/ValidationModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/controller/ValidationModule.sol#L3 - - [ ] ID-49 + - [ ] ID-48 Pragma version[^0.8.20](contracts/mocks/RuleEngine/CodeList.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/mocks/RuleEngine/CodeList.sol#L3 - - [ ] ID-50 + - [ ] ID-49 Pragma version[^0.8.0](contracts/interfaces/IEIP1404/IEIP1404Wrapper.sol#L3) allows old versions contracts/interfaces/IEIP1404/IEIP1404Wrapper.sol#L3 - - [ ] ID-51 + - [ ] ID-50 Pragma version[^0.8.20](contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L3 - - [ ] ID-52 + - [ ] ID-51 Pragma version[^0.8.20](contracts/modules/wrapper/core/ERC20BaseModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/core/ERC20BaseModule.sol#L3 - - [ ] ID-53 + - [ ] ID-52 Pragma version[^0.8.20](contracts/modules/wrapper/core/PauseModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/core/PauseModule.sol#L3 - - [ ] ID-54 + - [ ] ID-53 Pragma version[^0.8.20](contracts/mocks/RuleEngine/RuleEngineMock.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/mocks/RuleEngine/RuleEngineMock.sol#L3 - - [ ] ID-55 + - [ ] ID-54 Pragma version[^0.8.20](contracts/modules/wrapper/extensions/MetaTxModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/extensions/MetaTxModule.sol#L3 - - [ ] ID-56 + - [ ] ID-55 Pragma version[^0.8.20](contracts/CMTAT_STANDALONE.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/CMTAT_STANDALONE.sol#L3 - - [ ] ID-57 + - [ ] ID-56 Pragma version[^0.8.20](contracts/modules/wrapper/core/EnforcementModule.sol#L3) necessitates a version too recent to be trusted. Consider deploying with 0.8.18. contracts/modules/wrapper/core/EnforcementModule.sol#L3 - ## naming-convention + +> Remark: +> +> It is not really necessary to rename all the variables. It will generate a lot of work for a minor improvement. + Impact: Informational Confidence: High - - [ ] ID-58 + - [ ] ID-57 Variable [RuleEngineMock._rules](contracts/mocks/RuleEngine/RuleEngineMock.sol#L14) is not in mixedCase contracts/mocks/RuleEngine/RuleEngineMock.sol#L14 - - [ ] ID-59 + - [ ] ID-58 Function [ERC20BurnModule.__ERC20BurnModule_init(string,string,address,uint48)](contracts/modules/wrapper/core/ERC20BurnModule.sol#L15-L35) is not in mixedCase contracts/modules/wrapper/core/ERC20BurnModule.sol#L15-L35 - - [ ] ID-60 + - [ ] ID-59 Variable [CreditEventsModule.__gap](contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L99) is not in mixedCase contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L99 - - [ ] ID-61 + - [ ] ID-60 Function [EnforcementModuleInternal.__Enforcement_init()](contracts/modules/internal/EnforcementModuleInternal.sol#L43-L46) is not in mixedCase contracts/modules/internal/EnforcementModuleInternal.sol#L43-L46 - - [ ] ID-62 + - [ ] ID-61 Function [AuthorizationModule.__AuthorizationModule_init(address,uint48)](contracts/modules/security/AuthorizationModule.sol#L29-L42) is not in mixedCase contracts/modules/security/AuthorizationModule.sol#L29-L42 - - [ ] ID-63 -Function [BaseModule.__Base_init(string,string,string,uint256,address,uint48)](contracts/modules/wrapper/core/BaseModule.sol#L41-L61) is not in mixedCase + - [ ] ID-62 +Function [BaseModule.__Base_init(string,string,string,uint256,address,uint48)](contracts/modules/wrapper/core/BaseModule.sol#L39-L59) is not in mixedCase -contracts/modules/wrapper/core/BaseModule.sol#L41-L61 +contracts/modules/wrapper/core/BaseModule.sol#L39-L59 - - [ ] ID-64 + - [ ] ID-63 Enum [IEIP1404Wrapper.REJECTED_CODE_BASE](contracts/interfaces/IEIP1404/IEIP1404Wrapper.sol#L11-L16) is not in CapWords contracts/interfaces/IEIP1404/IEIP1404Wrapper.sol#L11-L16 - - [ ] ID-65 + - [ ] ID-64 Parameter [RuleEngineMock.detectTransferRestriction(address,address,uint256)._amount](contracts/mocks/RuleEngine/RuleEngineMock.sol#L43) is not in mixedCase contracts/mocks/RuleEngine/RuleEngineMock.sol#L43 - - [ ] ID-66 + - [ ] ID-65 Function [ValidationModuleInternal.__Validation_init(IEIP1404Wrapper)](contracts/modules/internal/ValidationModuleInternal.sol#L28-L33) is not in mixedCase contracts/modules/internal/ValidationModuleInternal.sol#L28-L33 - - [ ] ID-67 + - [ ] ID-66 Function [DebtBaseModule.__DebtBaseModule_init(address,uint48)](contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L58-L75) is not in mixedCase contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L58-L75 - - [ ] ID-68 -Contract [CMTAT_PROXY](contracts/CMTAT_PROXY.sol#L7-L23) is not in CapWords + - [ ] ID-67 +Contract [CMTAT_PROXY](contracts/CMTAT_PROXY.sol#L7-L21) is not in CapWords -contracts/CMTAT_PROXY.sol#L7-L23 +contracts/CMTAT_PROXY.sol#L7-L21 - - [ ] ID-69 -Function [ERC20SnapshotModuleInternal.__ERC20Snapshot_init(string,string)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L67-L74) is not in mixedCase + - [ ] ID-68 +Function [ERC20SnapshotModuleInternal.__ERC20Snapshot_init(string,string)](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L71-L78) is not in mixedCase -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L67-L74 +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L71-L78 - - [ ] ID-70 + - [ ] ID-69 Function [PauseModule.__PauseModule_init_unchained()](contracts/modules/wrapper/core/PauseModule.sol#L42-L44) is not in mixedCase contracts/modules/wrapper/core/PauseModule.sol#L42-L44 - - [ ] ID-71 + - [ ] ID-70 Function [CreditEventsModule.__CreditEvents_init_unchained()](contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L44-L46) is not in mixedCase contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L44-L46 - - [ ] ID-72 + - [ ] ID-71 Variable [CMTAT_BASE.__gap](contracts/modules/CMTAT_BASE.sol#L225) is not in mixedCase contracts/modules/CMTAT_BASE.sol#L225 - - [ ] ID-73 + - [ ] ID-72 Function [EnforcementModuleInternal.__Enforcement_init_unchained()](contracts/modules/internal/EnforcementModuleInternal.sol#L48-L50) is not in mixedCase contracts/modules/internal/EnforcementModuleInternal.sol#L48-L50 - - [ ] ID-74 + - [ ] ID-73 Variable [ValidationModuleInternal.__gap](contracts/modules/internal/ValidationModuleInternal.sol#L75) is not in mixedCase contracts/modules/internal/ValidationModuleInternal.sol#L75 - - [ ] ID-75 + - [ ] ID-74 Function [ERC20BurnModule.__ERC20BurnModule_init_unchained()](contracts/modules/wrapper/core/ERC20BurnModule.sol#L37-L39) is not in mixedCase contracts/modules/wrapper/core/ERC20BurnModule.sol#L37-L39 - - [ ] ID-76 + - [ ] ID-75 Function [CreditEventsModule.__CreditEvents_init(address,uint48)](contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L25-L42) is not in mixedCase contracts/modules/wrapper/extensions/DebtModule/CreditEventsModule.sol#L25-L42 - - [ ] ID-77 -Variable [BaseModule.__gap](contracts/modules/wrapper/core/BaseModule.sol#L117) is not in mixedCase + - [ ] ID-76 +Variable [BaseModule.__gap](contracts/modules/wrapper/core/BaseModule.sol#L115) is not in mixedCase -contracts/modules/wrapper/core/BaseModule.sol#L117 +contracts/modules/wrapper/core/BaseModule.sol#L115 - - [ ] ID-78 + - [ ] ID-77 Variable [ValidationModule.__gap](contracts/modules/wrapper/controller/ValidationModule.sol#L144) is not in mixedCase contracts/modules/wrapper/controller/ValidationModule.sol#L144 - - [ ] ID-79 + - [ ] ID-78 Function [ValidationModule.__ValidationModule_init(IEIP1404Wrapper,address,uint48)](contracts/modules/wrapper/controller/ValidationModule.sol#L27-L54) is not in mixedCase contracts/modules/wrapper/controller/ValidationModule.sol#L27-L54 - - [ ] ID-80 + - [ ] ID-79 Variable [EnforcementModule.__gap](contracts/modules/wrapper/core/EnforcementModule.sol#L74) is not in mixedCase contracts/modules/wrapper/core/EnforcementModule.sol#L74 - - [ ] ID-81 + - [ ] ID-80 Contract [CMTAT_STANDALONE](contracts/CMTAT_STANDALONE.sol#L7-L52) is not in CapWords contracts/CMTAT_STANDALONE.sol#L7-L52 - - [ ] ID-82 + - [ ] ID-81 Variable [DebtBaseModule.__gap](contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L265) is not in mixedCase contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L265 - - [ ] ID-83 + - [ ] ID-82 Function [PauseModule.__PauseModule_init(address,uint48)](contracts/modules/wrapper/core/PauseModule.sol#L25-L40) is not in mixedCase contracts/modules/wrapper/core/PauseModule.sol#L25-L40 - - [ ] ID-84 + - [ ] ID-83 Function [EnforcementModule.__EnforcementModule_init(address,uint48)](contracts/modules/wrapper/core/EnforcementModule.sol#L25-L42) is not in mixedCase contracts/modules/wrapper/core/EnforcementModule.sol#L25-L42 - - [ ] ID-85 + - [ ] ID-84 Variable [AuthorizationModule.__gap](contracts/modules/security/AuthorizationModule.sol#L80) is not in mixedCase contracts/modules/security/AuthorizationModule.sol#L80 - - [ ] ID-86 + - [ ] ID-85 Parameter [RuleEngineMock.validateTransfer(address,address,uint256)._amount](contracts/mocks/RuleEngine/RuleEngineMock.sol#L65) is not in mixedCase contracts/mocks/RuleEngine/RuleEngineMock.sol#L65 - - [ ] ID-87 + - [ ] ID-86 Parameter [RuleMock.validateTransfer(address,address,uint256)._to](contracts/mocks/RuleEngine/RuleMock.sol#L14) is not in mixedCase contracts/mocks/RuleEngine/RuleMock.sol#L14 - - [ ] ID-88 + - [ ] ID-87 Function [ERC20BaseModule.__ERC20Module_init_unchained(uint8)](contracts/modules/wrapper/core/ERC20BaseModule.sol#L40-L44) is not in mixedCase contracts/modules/wrapper/core/ERC20BaseModule.sol#L40-L44 - - [ ] ID-89 + - [ ] ID-88 Variable [EnforcementModuleInternal.__gap](contracts/modules/internal/EnforcementModuleInternal.sol#L91) is not in mixedCase contracts/modules/internal/EnforcementModuleInternal.sol#L91 - - [ ] ID-90 + - [ ] ID-89 Parameter [RuleMock.canReturnTransferRestrictionCode(uint8)._restrictionCode](contracts/mocks/RuleEngine/RuleMock.sol#L35) is not in mixedCase contracts/mocks/RuleEngine/RuleMock.sol#L35 - - [ ] ID-91 + - [ ] ID-90 Parameter [RuleEngineMock.validateTransfer(address,address,uint256)._to](contracts/mocks/RuleEngine/RuleEngineMock.sol#L64) is not in mixedCase contracts/mocks/RuleEngine/RuleEngineMock.sol#L64 - - [ ] ID-92 -Function [BaseModule.__Base_init_unchained(string,string,string,uint256)](contracts/modules/wrapper/core/BaseModule.sol#L63-L73) is not in mixedCase + - [ ] ID-91 +Function [BaseModule.__Base_init_unchained(string,string,string,uint256)](contracts/modules/wrapper/core/BaseModule.sol#L61-L71) is not in mixedCase -contracts/modules/wrapper/core/BaseModule.sol#L63-L73 +contracts/modules/wrapper/core/BaseModule.sol#L61-L71 - - [ ] ID-93 + - [ ] ID-92 Parameter [RuleEngineMock.validateTransfer(address,address,uint256)._from](contracts/mocks/RuleEngine/RuleEngineMock.sol#L63) is not in mixedCase contracts/mocks/RuleEngine/RuleEngineMock.sol#L63 - - [ ] ID-94 + - [ ] ID-93 Parameter [RuleMock.validateTransfer(address,address,uint256)._amount](contracts/mocks/RuleEngine/RuleMock.sol#L15) is not in mixedCase contracts/mocks/RuleEngine/RuleMock.sol#L15 - - [ ] ID-95 + - [ ] ID-94 Function [AuthorizationModule.__AuthorizationModule_init_unchained()](contracts/modules/security/AuthorizationModule.sol#L51-L53) is not in mixedCase contracts/modules/security/AuthorizationModule.sol#L51-L53 - - [ ] ID-96 + - [ ] ID-95 Variable [PauseModule.__gap](contracts/modules/wrapper/core/PauseModule.sol#L100) is not in mixedCase contracts/modules/wrapper/core/PauseModule.sol#L100 - - [ ] ID-97 + - [ ] ID-96 Function [CMTAT_BASE.__CMTAT_init_unchained()](contracts/modules/CMTAT_BASE.sol#L147-L149) is not in mixedCase contracts/modules/CMTAT_BASE.sol#L147-L149 - - [ ] ID-98 + - [ ] ID-97 Variable [ERC20SnapshotModule.__gap](contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L103) is not in mixedCase contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L103 - - [ ] ID-99 + - [ ] ID-98 Parameter [RuleMock.detectTransferRestriction(address,address,uint256)._amount](contracts/mocks/RuleEngine/RuleMock.sol#L26) is not in mixedCase contracts/mocks/RuleEngine/RuleMock.sol#L26 - - [ ] ID-100 + - [ ] ID-99 Parameter [RuleMock.messageForTransferRestriction(uint8)._restrictionCode](contracts/mocks/RuleEngine/RuleMock.sol#L41) is not in mixedCase contracts/mocks/RuleEngine/RuleMock.sol#L41 - - [ ] ID-101 + - [ ] ID-100 Function [ERC20MintModule.__ERC20MintModule_init_unchained()](contracts/modules/wrapper/core/ERC20MintModule.sol#L38-L40) is not in mixedCase contracts/modules/wrapper/core/ERC20MintModule.sol#L38-L40 - - [ ] ID-102 + - [ ] ID-101 Parameter [RuleEngineMock.detectTransferRestriction(address,address,uint256)._to](contracts/mocks/RuleEngine/RuleEngineMock.sol#L42) is not in mixedCase contracts/mocks/RuleEngine/RuleEngineMock.sol#L42 - - [ ] ID-103 + - [ ] ID-102 Variable [MetaTxModule.__gap](contracts/modules/wrapper/extensions/MetaTxModule.sol#L43) is not in mixedCase contracts/modules/wrapper/extensions/MetaTxModule.sol#L43 - - [ ] ID-104 + - [ ] ID-103 Function [ERC20BaseModule.__ERC20Module_init(string,string,uint8)](contracts/modules/wrapper/core/ERC20BaseModule.sol#L27-L38) is not in mixedCase contracts/modules/wrapper/core/ERC20BaseModule.sol#L27-L38 - - [ ] ID-105 + - [ ] ID-104 Function [ERC20SnapshotModule.__ERC20SnasphotModule_init(string,string,address,uint48)](contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L19-L43) is not in mixedCase contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L19-L43 - - [ ] ID-106 + - [ ] ID-105 Variable [ERC20BurnModule.__gap](contracts/modules/wrapper/core/ERC20BurnModule.sol#L96) is not in mixedCase contracts/modules/wrapper/core/ERC20BurnModule.sol#L96 - - [ ] ID-107 + - [ ] ID-106 Variable [ERC20BaseModule.__gap](contracts/modules/wrapper/core/ERC20BaseModule.sol#L138) is not in mixedCase contracts/modules/wrapper/core/ERC20BaseModule.sol#L138 - - [ ] ID-108 + - [ ] ID-107 Function [ERC20MintModule.__ERC20MintModule_init(string,string,address,uint48)](contracts/modules/wrapper/core/ERC20MintModule.sol#L16-L36) is not in mixedCase contracts/modules/wrapper/core/ERC20MintModule.sol#L16-L36 - - [ ] ID-109 + - [ ] ID-108 Contract [CMTAT_BASE](contracts/modules/CMTAT_BASE.sol#L30-L226) is not in CapWords contracts/modules/CMTAT_BASE.sol#L30-L226 - - [ ] ID-110 + - [ ] ID-109 Parameter [RuleEngineMock.messageForTransferRestriction(uint8)._restrictionCode](contracts/mocks/RuleEngine/RuleEngineMock.sol#L75) is not in mixedCase contracts/mocks/RuleEngine/RuleEngineMock.sol#L75 - - [ ] ID-111 + - [ ] ID-110 Variable [ERC20MintModule.__gap](contracts/modules/wrapper/core/ERC20MintModule.sol#L95) is not in mixedCase contracts/modules/wrapper/core/ERC20MintModule.sol#L95 - - [ ] ID-112 + - [ ] ID-111 Function [CMTAT_BASE.__CMTAT_init(address,uint48,string,string,uint8,string,string,IEIP1404Wrapper,string,uint256)](contracts/modules/CMTAT_BASE.sol#L88-L145) is not in mixedCase contracts/modules/CMTAT_BASE.sol#L88-L145 - - [ ] ID-113 + - [ ] ID-112 Function [ValidationModule.__ValidationModule_init_unchained()](contracts/modules/wrapper/controller/ValidationModule.sol#L56-L58) is not in mixedCase contracts/modules/wrapper/controller/ValidationModule.sol#L56-L58 - - [ ] ID-114 + - [ ] ID-113 Function [DebtBaseModule.__DebtBaseModule_init_unchained()](contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L77-L79) is not in mixedCase contracts/modules/wrapper/extensions/DebtModule/DebtBaseModule.sol#L77-L79 - - [ ] ID-115 + - [ ] ID-114 Parameter [RuleEngineMock.detectTransferRestriction(address,address,uint256)._from](contracts/mocks/RuleEngine/RuleEngineMock.sol#L41) is not in mixedCase contracts/mocks/RuleEngine/RuleEngineMock.sol#L41 - - [ ] ID-116 + - [ ] ID-115 Function [ERC20SnapshotModule.__ERC20SnasphotModule_init_unchained()](contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L45-L47) is not in mixedCase contracts/modules/wrapper/extensions/ERC20SnapshotModule.sol#L45-L47 - - [ ] ID-117 + - [ ] ID-116 Function [ValidationModuleInternal.__Validation_init_unchained(IEIP1404Wrapper)](contracts/modules/internal/ValidationModuleInternal.sol#L35-L42) is not in mixedCase contracts/modules/internal/ValidationModuleInternal.sol#L35-L42 - - [ ] ID-118 -Variable [ERC20SnapshotModuleInternal.__gap](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L490) is not in mixedCase + - [ ] ID-117 +Variable [ERC20SnapshotModuleInternal.__gap](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L496) is not in mixedCase -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L490 +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L496 - - [ ] ID-119 + - [ ] ID-118 Function [EnforcementModule.__EnforcementModule_init_unchained()](contracts/modules/wrapper/core/EnforcementModule.sol#L44-L46) is not in mixedCase contracts/modules/wrapper/core/EnforcementModule.sol#L44-L46 - - [ ] ID-120 -Function [ERC20SnapshotModuleInternal.__ERC20Snapshot_init_unchained()](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L76-L79) is not in mixedCase + - [ ] ID-119 +Function [ERC20SnapshotModuleInternal.__ERC20Snapshot_init_unchained()](contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L80-L83) is not in mixedCase -contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L76-L79 +contracts/modules/internal/ERC20SnapshotModuleInternal.sol#L80-L83 - - [ ] ID-121 + - [ ] ID-120 Parameter [RuleMock.validateTransfer(address,address,uint256)._from](contracts/mocks/RuleEngine/RuleMock.sol#L13) is not in mixedCase contracts/mocks/RuleEngine/RuleMock.sol#L13 - - [ ] ID-122 -Variable [CMTAT_PROXY.__gap](contracts/CMTAT_PROXY.sol#L22) is not in mixedCase - -contracts/CMTAT_PROXY.sol#L22 - - -## unused-state -Impact: Informational -Confidence: High - - [ ] ID-123 -[BaseModule.deployedWithProxy](contracts/modules/wrapper/core/BaseModule.sol#L17) is never used in [CMTAT_STANDALONE](contracts/CMTAT_STANDALONE.sol#L7-L52) - -contracts/modules/wrapper/core/BaseModule.sol#L17 - - -## constable-states -Impact: Optimization -Confidence: High - - [ ] ID-124 -[BaseModule.deployedWithProxy](contracts/modules/wrapper/core/BaseModule.sol#L17) should be constant - -contracts/modules/wrapper/core/BaseModule.sol#L17 - - -## immutable-states -Impact: Optimization -Confidence: High - - [ ] ID-125 -[BaseModule.deployedWithProxy](contracts/modules/wrapper/core/BaseModule.sol#L17) should be immutable - -contracts/modules/wrapper/core/BaseModule.sol#L17 + - [ ] ID-121 +Variable [CMTAT_PROXY.__gap](contracts/CMTAT_PROXY.sol#L20) is not in mixedCase +contracts/CMTAT_PROXY.sol#L20