Skip to content

Latest commit

 

History

History
2260 lines (1507 loc) · 89.3 KB

File metadata and controls

2260 lines (1507 loc) · 89.3 KB

Aderyn Report Summary — CMTAT v3.3.0

  • Tool: aderyn 0.6.5
  • Command: aderyn -x mocks --output doc/security/tools/aderyn/v3.3.0-aderyn-report.md
  • Scope: production contracts — mocks excluded (-x mocks). 101 .sol files, 3826 nSLOC.
  • Severity tally: 2 High · 0 Medium · 10 Low · 0 Informational
  • Run: 2026-07-30, on the v3.3.0-rc3 source (dev), EVM target osaka, solc 0.8.36.
  • Feedback (dispositions): v3.3.0-aderyn-feedback.md · Overview: AUDIT.md
ID Finding Severity Instances Assessment
H-1 Arbitrary from passed to transferFrom High 12 False positive — standard ERC-20 transferFrom delegating to OZ allowance checks
H-2 Contract locks Ether without a withdraw function High 1 By design — payable UUPS upgrade path; no ETH custody in the token layer
L-1 Centralization risk Low 33 By design — RBAC for a regulated token; mitigate with multisig/timelock at deployment
L-2 Unsafe ERC-20 operation Low 27 False positive — wrappers over OpenZeppelin ERC-20 semantics
L-3 Unspecific Solidity pragma Low 98 By design — ^0.8.24 library policy; compiler pinned in tooling (0.8.36)
L-4 PUSH0 opcode Low 101 Environment — compiled for the Osaka (Fusaka) EVM target; note pre-Shanghai chains
L-5 Modifier invoked only once Low 8 Cosmetic — intentional access-control structure
L-6 Empty block Low 33 Cosmetic — intentional _authorize* override stubs
L-7 Unused error Low 1 By design — draft interface error not yet on a runtime path
L-8 Loop contains require/revert Low 4 By design — atomic batch semantics
L-9 Costly operations inside loop Low 5 Optimization only — no correctness impact
L-10 Unchecked return Low 1 False positive — _grantRole return intentionally ignored in the initializer

Nothing requires a code fix. Identical finding set and instance counts to the 2026-07-22 snapshot; only the size grew (3736 → 3826 nSLOC) with the rc3 fixes. Every finding is a false positive, a documented design choice, an environment note, a cosmetic item, or an optimization. See the feedback file for per-finding rationale grounded in the source.

Aderyn Analysis Report

This report was generated by Aderyn, a static analysis tool built by Cyfrin, a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.

Table of Contents

Summary

Files Summary

Key Value
.sol Files 101
Total nSLOC 3826

Files Details

Filepath nSLOC
contracts/deployment/CMTATStandardStandalone.sol 32
contracts/deployment/CMTATStandardUpgradeable.sol 22
contracts/deployment/CMTATUpgradeableUUPS.sol 13
contracts/deployment/ERC1363/CMTATStandaloneERC1363.sol 20
contracts/deployment/ERC1363/CMTATUpgradeableERC1363.sol 10
contracts/deployment/ERC7551/CMTATStandaloneERC7551.sol 32
contracts/deployment/ERC7551/CMTATUpgradeableERC7551.sol 22
contracts/deployment/allowlist/CMTATStandaloneAllowlist.sol 18
contracts/deployment/allowlist/CMTATUpgradeableAllowlist.sol 8
contracts/deployment/debt/CMTATStandaloneDebt.sol 18
contracts/deployment/debt/CMTATUpgradeableDebt.sol 7
contracts/deployment/debtEngine/CMTATStandaloneDebtEngine.sol 18
contracts/deployment/debtEngine/CMTATUpgradeableDebtEngine.sol 7
contracts/deployment/holderList/CMTATStandaloneHolderList.sol 20
contracts/deployment/holderList/CMTATUpgradeableHolderList.sol 10
contracts/deployment/light/CMTATStandaloneLight.sol 14
contracts/deployment/light/CMTATUpgradeableLight.sol 7
contracts/deployment/permit/CMTATStandalonePermit.sol 18
contracts/deployment/permit/CMTATUpgradeablePermit.sol 7
contracts/deployment/snapshot/CMTATStandaloneSnapshot.sol 32
contracts/deployment/snapshot/CMTATUpgradeableSnapshot.sol 22
contracts/interfaces/engine/IDebtEngine.sol 4
contracts/interfaces/engine/IDocumentEngine.sol 4
contracts/interfaces/engine/IRuleEngine.sol 10
contracts/interfaces/engine/ISnapshotEngine.sol 8
contracts/interfaces/modules/IAllowlistModule.sol 11
contracts/interfaces/modules/IDebtEngineModule.sol 11
contracts/interfaces/modules/IDebtModule.sol 16
contracts/interfaces/modules/IDocumentEngineModule.sol 11
contracts/interfaces/modules/IHolderListModule.sol 12
contracts/interfaces/modules/ISnapshotEngineModule.sol 10
contracts/interfaces/technical/ICMTATConstructor.sol 18
contracts/interfaces/technical/IERC20Allowance.sol 4
contracts/interfaces/technical/IERC5679.sol 9
contracts/interfaces/technical/IERC7802.sol 8
contracts/interfaces/technical/IGetCCIPAdmin.sol 5
contracts/interfaces/technical/IMintBurnToken.sol 36
contracts/interfaces/tokenization/ICMTAT.sol 59
contracts/interfaces/tokenization/IERC3643Partial.sol 49
contracts/interfaces/tokenization/draft-IERC1404.sol 28
contracts/interfaces/tokenization/draft-IERC1643.sol 16
contracts/interfaces/tokenization/draft-IERC1643CMTAT.sol 8
contracts/interfaces/tokenization/draft-IERC7551.sol 44
contracts/interfaces/tokenization/draft-IERC7943.sol 24
contracts/interfaces/tokenization/draft-IERC8343.sol 7
contracts/library/ERC1404ExtendInterfaceId.sol 4
contracts/library/RuleEngineInterfaceId.sol 4
contracts/modules/0_CMTATBaseCommon.sol 76
contracts/modules/0_CMTATBaseCore.sol 143
contracts/modules/0_CMTATBaseGeneric.sol 38
contracts/modules/0_CMTATBaseSnapshot.sol 18
contracts/modules/1_CMTATBaseDocument.sol 3
contracts/modules/2_CMTATBaseAccessControl.sol 36
contracts/modules/3_CMTATBaseAllowlist.sol 209
contracts/modules/3_CMTATBaseRuleEngine.sol 102
contracts/modules/4_CMTATBaseDebt.sol 46
contracts/modules/4_CMTATBaseERC1404.sol 57
contracts/modules/5_CMTATBaseERC20CrossChain.sol 61
contracts/modules/6_CMTATBaseDebtEngine.sol 45
contracts/modules/6_CMTATBaseERC2612.sol 79
contracts/modules/6_CMTATBaseERC2771.sol 27
contracts/modules/7_CMTATBaseERC2771Snapshot.sol 60
contracts/modules/7_CMTATBaseERC7551Enforcement.sol 85
contracts/modules/8_CMTATBaseERC1363.sol 71
contracts/modules/8_CMTATBaseERC7551.sol 9
contracts/modules/8_CMTATBaseHolderList.sol 86
contracts/modules/internal/AllowlistModuleInternal.sol 49
contracts/modules/internal/ERC20BurnModuleInternal.sol 22
contracts/modules/internal/ERC20EnforcementModuleInternal.sol 138
contracts/modules/internal/ERC20MintModuleInternal.sol 36
contracts/modules/internal/EnforcementModuleInternal.sol 40
contracts/modules/internal/ValidationModuleRuleEngineInternal.sol 37
contracts/modules/internal/common/EnforcementModuleLibrary.sol 10
contracts/modules/wrapper/controllers/ValidationModule.sol 123
contracts/modules/wrapper/controllers/ValidationModuleAllowlist.sol 94
contracts/modules/wrapper/core/ERC20BaseModule.sol 43
contracts/modules/wrapper/core/ERC20BurnModule.sol 49
contracts/modules/wrapper/core/ERC20MintModule.sol 36
contracts/modules/wrapper/core/EnforcementModule.sol 35
contracts/modules/wrapper/core/PauseModule.sol 61
contracts/modules/wrapper/core/TokenAttributeModule.sol 48
contracts/modules/wrapper/core/ValidationModuleCore.sol 32
contracts/modules/wrapper/core/VersionModule.sol 8
contracts/modules/wrapper/extensions/DocumentERC1643Module.sol 59
contracts/modules/wrapper/extensions/ERC20EnforcementModule.sol 46
contracts/modules/wrapper/extensions/ExtraInformationModule.sol 88
contracts/modules/wrapper/extensions/SnapshotEngineModule.sol 44
contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleAllowance.sol 20
contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleERC1404.sol 110
contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleRuleEngine.sol 105
contracts/modules/wrapper/options/AllowlistModule.sol 43
contracts/modules/wrapper/options/CCIPModule.sol 30
contracts/modules/wrapper/options/DebtEngineModule.sol 49
contracts/modules/wrapper/options/DebtModule.sol 50
contracts/modules/wrapper/options/DocumentEngineModule.sol 72
contracts/modules/wrapper/options/ERC20CrossChainModule.sol 60
contracts/modules/wrapper/options/ERC20EnforcementERC7551Module.sol 36
contracts/modules/wrapper/options/ERC2771Module.sol 8
contracts/modules/wrapper/options/ERC7551Module.sol 37
contracts/modules/wrapper/options/HolderListModule.sol 58
contracts/modules/wrapper/security/AccessControlModule.sol 22
Total 3826

Issue Summary

Category No. of Issues
High 2
Low 10

High Issues

H-1: Arbitrary from Passed to transferFrom

Passing an arbitrary from address to transferFrom (or safeTransferFrom) can lead to loss of funds, because anyone can transfer tokens from the from address if an approval is made.

12 Found Instances
  • Found in contracts/modules/0_CMTATBaseCommon.sol Line: 93

             return ERC20BaseModule.transferFrom(from, to, value);
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 210

             return ERC20BaseModule.transferFrom(from, to, value);
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 147

             return CMTATBaseCommon.transferFrom(from, to, value);
  • Found in contracts/modules/4_CMTATBaseDebt.sol Line: 31

           return CMTATBaseCommon.transferFrom(from, to, value);
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 44

             return CMTATBaseCommon.transferFrom(from, to, value);
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 37

             return CMTATBaseERC20CrossChain.transferFrom(from, to, value);
  • Found in contracts/modules/6_CMTATBaseERC2612.sol Line: 97

             return CMTATBaseERC20CrossChain.transferFrom(sender, recipient, amount);
  • Found in contracts/modules/7_CMTATBaseERC2771Snapshot.sol Line: 36

             return CMTATBaseERC20CrossChain.transferFrom(from, to, value);
  • Found in contracts/modules/7_CMTATBaseERC7551Enforcement.sol Line: 72

             return CMTATBaseERC20CrossChain.transferFrom(from, to, value);
  • Found in contracts/modules/8_CMTATBaseERC1363.sol Line: 65

             return CMTATBaseERC7551Enforcement.transferFrom(sender, recipient, amount);
  • Found in contracts/modules/8_CMTATBaseHolderList.sol Line: 49

             return CMTATBaseERC7551Enforcement.transferFrom(from, to, value);
  • Found in contracts/modules/wrapper/core/ERC20BaseModule.sol Line: 59

             bool result = ERC20Upgradeable.transferFrom(from, to, value);

H-2: Contract locks Ether without a withdraw function

It appears that the contract includes a payable function to accept Ether but lacks a corresponding function to withdraw it, which leads to the Ether being locked in the contract. To resolve this issue, please implement a public or external function that allows for the withdrawal of Ether from the contract.

1 Found Instances
  • Found in contracts/deployment/CMTATUpgradeableUUPS.sol Line: 11

     contract CMTATUpgradeableUUPS is CMTATBaseERC2771, UUPSUpgradeable  {

Low Issues

L-1: Centralization Risk

Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds.

33 Found Instances
  • Found in contracts/deployment/CMTATUpgradeableUUPS.sol Line: 32

         function _authorizeUpgrade(address newImplementation) internal virtual override(UUPSUpgradeable) onlyRole(PROXY_UPGRADE_ROLE) {}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 280

         function _authorizeForcedBurn() internal virtual onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 282

         function _authorizeMint() internal virtual override(ERC20MintModule) onlyRole(MINTER_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 284

         function _authorizeBurn() internal virtual override(ERC20BurnModule) onlyRole(BURNER_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 286

         function _authorizePause() internal virtual override(PauseModule) onlyRole(PAUSER_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 287

         function _authorizeDeactivate() internal virtual override(PauseModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 289

         function _authorizeFreeze() internal virtual override(EnforcementModule) onlyRole(ENFORCER_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 291

         function _authorizeTokenAttributeManagement() internal virtual override(TokenAttributeModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/0_CMTATBaseGeneric.sol Line: 86

         function  _authorizeDocumentManagement() internal virtual override(DocumentERC1643Module) onlyRole(DOCUMENT_ROLE){}
  • Found in contracts/modules/0_CMTATBaseGeneric.sol Line: 87

         function  _authorizeExtraInfoManagement() internal virtual override(ExtraInformationModule) onlyRole(EXTRA_INFORMATION_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 70

         function _authorizeTokenAttributeManagement() internal virtual override(TokenAttributeModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 76

         function _authorizeMint() internal virtual override(ERC20MintModule) onlyRole(MINTER_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 82

         function _authorizeBurn() internal virtual override(ERC20BurnModule) onlyRole(BURNER_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 88

         function _authorizeDocumentManagement() internal virtual override(DocumentERC1643Module) onlyRole(DOCUMENT_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 94

         function  _authorizeExtraInfoManagement() internal virtual override(ExtraInformationModule) onlyRole(EXTRA_INFORMATION_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 100

         function _authorizeERC20Enforcer() internal virtual override(ERC20EnforcementModule) onlyRole(ERC20ENFORCER_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 106

         function _authorizeForcedTransfer() internal virtual override(ERC20EnforcementModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 219

         function _authorizePause() internal virtual override(PauseModule) onlyRole(PAUSER_ROLE){}
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 220

         function _authorizeDeactivate() internal virtual override(PauseModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 222

         function _authorizeFreeze() internal virtual override(EnforcementModule) onlyRole(ENFORCER_ROLE){}
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 224

         function _authorizeAllowlistManagement() internal virtual override(AllowlistModule) onlyRole(ALLOWLIST_ROLE) {}
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 174

         function _authorizePause() internal virtual override(PauseModule) onlyRole(PAUSER_ROLE){}
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 175

         function _authorizeDeactivate() internal virtual override(PauseModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 177

         function _authorizeFreeze() internal virtual override(EnforcementModule) onlyRole(ENFORCER_ROLE){}
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 179

         function _authorizeRuleEngineManagement() internal virtual override(ValidationModuleRuleEngine) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/4_CMTATBaseDebt.sol Line: 58

        function _authorizeDebtManagement() internal virtual override(DebtModule) onlyRole(DEBT_ROLE){}
  • Found in contracts/modules/4_CMTATBaseDebt.sol Line: 60

        function _authorizeSnapshots() internal virtual override(SnapshotEngineModule) onlyRole(SNAPSHOOTER_ROLE) {}
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 118

         function _authorizeCCIPSetAdmin() internal virtual override(CCIPModule) onlyRole(DEFAULT_ADMIN_ROLE) {}
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 138

         function _authorizeBurnFrom() internal virtual override(ERC20CrossChainModule) onlyRole(BURNER_FROM_ROLE) whenNotPaused{}
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 145

         function _authorizeSelfBurn() internal virtual override(ERC20CrossChainModule) onlyRole(BURNER_SELF_ROLE) whenNotPaused{}
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 68

         function _authorizeDebtEngineManagement() internal virtual override(DebtEngineModule) onlyRole(DEBT_ENGINE_ROLE) {}
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 70

         function _authorizeSnapshots() internal virtual override(SnapshotEngineModule) onlyRole(SNAPSHOOTER_ROLE) {}
  • Found in contracts/modules/7_CMTATBaseERC2771Snapshot.sol Line: 89

         function _authorizeSnapshots() internal virtual override(SnapshotEngineModule) onlyRole(SNAPSHOOTER_ROLE) {}

L-2: Unsafe ERC20 Operation

ERC20 functions may not behave as expected. For example: return values are not always meaningful. It is recommended to use OpenZeppelin's SafeERC20 library.

27 Found Instances
  • Found in contracts/modules/0_CMTATBaseCommon.sol Line: 93

             return ERC20BaseModule.transferFrom(from, to, value);
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 194

             return ERC20Upgradeable.approve(spender, value);
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 210

             return ERC20BaseModule.transferFrom(from, to, value);
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 129

             return ERC20Upgradeable.approve(spender, value);
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 138

             return CMTATBaseCommon.transfer(to, value);
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 135

             return ERC20Upgradeable.approve(spender, value);
  • Found in contracts/modules/4_CMTATBaseDebt.sol Line: 19

           return CMTATBaseRuleEngine.approve(spender, value);
  • Found in contracts/modules/4_CMTATBaseDebt.sol Line: 25

           return CMTATBaseCommon.transfer(to, value);
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 26

             return CMTATBaseRuleEngine.approve(spender, value);
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 29

              return CMTATBaseCommon.transfer(to, value);
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 31

             return CMTATBaseERC20CrossChain.transfer(to, value);
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 37

             return CMTATBaseERC20CrossChain.transferFrom(from, to, value);
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 43

             return CMTATBaseERC20CrossChain.approve(spender, value);
  • Found in contracts/modules/6_CMTATBaseERC2612.sol Line: 71

             return CMTATBaseERC20CrossChain.approve(spender, value);
  • Found in contracts/modules/6_CMTATBaseERC2612.sol Line: 81

             return CMTATBaseERC20CrossChain.transfer(to, value);
  • Found in contracts/modules/6_CMTATBaseERC2612.sol Line: 97

             return CMTATBaseERC20CrossChain.transferFrom(sender, recipient, amount);
  • Found in contracts/modules/7_CMTATBaseERC2771Snapshot.sol Line: 30

             return CMTATBaseERC20CrossChain.transfer(to, value);
  • Found in contracts/modules/7_CMTATBaseERC2771Snapshot.sol Line: 36

             return CMTATBaseERC20CrossChain.transferFrom(from, to, value);
  • Found in contracts/modules/7_CMTATBaseERC2771Snapshot.sol Line: 42

             return CMTATBaseERC20CrossChain.approve(spender, value);
  • Found in contracts/modules/7_CMTATBaseERC7551Enforcement.sol Line: 64

             return CMTATBaseERC20CrossChain.transfer(to, value);
  • Found in contracts/modules/7_CMTATBaseERC7551Enforcement.sol Line: 72

             return CMTATBaseERC20CrossChain.transferFrom(from, to, value);
  • Found in contracts/modules/7_CMTATBaseERC7551Enforcement.sol Line: 80

             return CMTATBaseERC20CrossChain.approve(spender, value);
  • Found in contracts/modules/8_CMTATBaseERC1363.sol Line: 42

             return CMTATBaseERC7551Enforcement.approve(spender, value);
  • Found in contracts/modules/8_CMTATBaseERC1363.sol Line: 49

             return CMTATBaseERC7551Enforcement.transfer(to, value);
  • Found in contracts/modules/8_CMTATBaseHolderList.sol Line: 38

             return CMTATBaseERC7551Enforcement.transfer(to, value);
  • Found in contracts/modules/8_CMTATBaseHolderList.sol Line: 60

             return CMTATBaseERC7551Enforcement.approve(spender, value);
  • Found in contracts/modules/wrapper/core/ERC20BaseModule.sol Line: 59

             bool result = ERC20Upgradeable.transferFrom(from, to, value);

L-3: Unspecific Solidity Pragma

Consider using a specific version of Solidity in your contracts instead of a wide version. For example, instead of pragma solidity ^0.8.0;, use pragma solidity 0.8.0;

98 Found Instances
  • Found in contracts/deployment/CMTATStandardStandalone.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/CMTATStandardUpgradeable.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/CMTATUpgradeableUUPS.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/ERC1363/CMTATStandaloneERC1363.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/ERC1363/CMTATUpgradeableERC1363.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/ERC7551/CMTATStandaloneERC7551.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/ERC7551/CMTATUpgradeableERC7551.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/allowlist/CMTATStandaloneAllowlist.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/allowlist/CMTATUpgradeableAllowlist.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/debt/CMTATStandaloneDebt.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/debt/CMTATUpgradeableDebt.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/debtEngine/CMTATStandaloneDebtEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/debtEngine/CMTATUpgradeableDebtEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/holderList/CMTATStandaloneHolderList.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/holderList/CMTATUpgradeableHolderList.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/light/CMTATStandaloneLight.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/light/CMTATUpgradeableLight.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/permit/CMTATStandalonePermit.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/permit/CMTATUpgradeablePermit.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/snapshot/CMTATStandaloneSnapshot.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/snapshot/CMTATUpgradeableSnapshot.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/engine/IDebtEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/engine/IDocumentEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/engine/IRuleEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/engine/ISnapshotEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IAllowlistModule.sol Line: 4

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IDebtEngineModule.sol Line: 4

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IDebtModule.sol Line: 4

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IDocumentEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IHolderListModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/ISnapshotEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/ICMTATConstructor.sol Line: 2

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IERC20Allowance.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IERC5679.sol Line: 2

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IERC7802.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IGetCCIPAdmin.sol Line: 2

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IMintBurnToken.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/ICMTAT.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/IERC3643Partial.sol Line: 10

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC1404.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC1643.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC1643CMTAT.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC7551.sol Line: 5

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC7943.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC8343.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/0_CMTATBaseCommon.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/0_CMTATBaseGeneric.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/0_CMTATBaseSnapshot.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/1_CMTATBaseDocument.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/4_CMTATBaseDebt.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/4_CMTATBaseERC1404.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/6_CMTATBaseERC2612.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/6_CMTATBaseERC2771.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/7_CMTATBaseERC2771Snapshot.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/7_CMTATBaseERC7551Enforcement.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/8_CMTATBaseERC1363.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/8_CMTATBaseERC7551.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/8_CMTATBaseHolderList.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/AllowlistModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/ERC20BurnModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/ERC20EnforcementModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/ERC20MintModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/EnforcementModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/ValidationModuleRuleEngineInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/controllers/ValidationModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/controllers/ValidationModuleAllowlist.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/ERC20BaseModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/ERC20BurnModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/ERC20MintModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/EnforcementModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/PauseModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/TokenAttributeModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/ValidationModuleCore.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/VersionModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/DocumentERC1643Module.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ERC20EnforcementModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ExtraInformationModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/SnapshotEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleAllowance.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleERC1404.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleRuleEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/AllowlistModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/CCIPModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/DebtEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/DebtModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/DocumentEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/ERC20CrossChainModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/ERC20EnforcementERC7551Module.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/ERC2771Module.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/ERC7551Module.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/HolderListModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/security/AccessControlModule.sol Line: 3

     pragma solidity ^0.8.24;

L-4: PUSH0 Opcode

Solc compiler version 0.8.20 switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes. Be sure to select the appropriate EVM version in case you intend to deploy on a chain other than mainnet like L2 chains that may not support PUSH0, otherwise deployment of your contracts will fail.

101 Found Instances
  • Found in contracts/deployment/CMTATStandardStandalone.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/CMTATStandardUpgradeable.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/CMTATUpgradeableUUPS.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/ERC1363/CMTATStandaloneERC1363.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/ERC1363/CMTATUpgradeableERC1363.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/ERC7551/CMTATStandaloneERC7551.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/ERC7551/CMTATUpgradeableERC7551.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/allowlist/CMTATStandaloneAllowlist.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/allowlist/CMTATUpgradeableAllowlist.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/debt/CMTATStandaloneDebt.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/debt/CMTATUpgradeableDebt.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/debtEngine/CMTATStandaloneDebtEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/debtEngine/CMTATUpgradeableDebtEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/holderList/CMTATStandaloneHolderList.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/holderList/CMTATUpgradeableHolderList.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/light/CMTATStandaloneLight.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/light/CMTATUpgradeableLight.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/permit/CMTATStandalonePermit.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/permit/CMTATUpgradeablePermit.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/snapshot/CMTATStandaloneSnapshot.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/deployment/snapshot/CMTATUpgradeableSnapshot.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/engine/IDebtEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/engine/IDocumentEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/engine/IRuleEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/engine/ISnapshotEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IAllowlistModule.sol Line: 4

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IDebtEngineModule.sol Line: 4

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IDebtModule.sol Line: 4

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IDocumentEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/IHolderListModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/modules/ISnapshotEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/ICMTATConstructor.sol Line: 2

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IERC20Allowance.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IERC5679.sol Line: 2

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IERC7802.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IGetCCIPAdmin.sol Line: 2

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/technical/IMintBurnToken.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/ICMTAT.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/IERC3643Partial.sol Line: 10

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC1404.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC1643.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC1643CMTAT.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC7551.sol Line: 5

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC7943.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/interfaces/tokenization/draft-IERC8343.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/library/ERC1404ExtendInterfaceId.sol Line: 2

     pragma solidity ^0.8.24;
  • Found in contracts/library/RuleEngineInterfaceId.sol Line: 2

     pragma solidity ^0.8.24;
  • Found in contracts/modules/0_CMTATBaseCommon.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/0_CMTATBaseGeneric.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/0_CMTATBaseSnapshot.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/1_CMTATBaseDocument.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/4_CMTATBaseDebt.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/4_CMTATBaseERC1404.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/6_CMTATBaseERC2612.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/6_CMTATBaseERC2771.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/7_CMTATBaseERC2771Snapshot.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/7_CMTATBaseERC7551Enforcement.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/8_CMTATBaseERC1363.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/8_CMTATBaseERC7551.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/8_CMTATBaseHolderList.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/AllowlistModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/ERC20BurnModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/ERC20EnforcementModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/ERC20MintModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/EnforcementModuleInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/ValidationModuleRuleEngineInternal.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/internal/common/EnforcementModuleLibrary.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/controllers/ValidationModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/controllers/ValidationModuleAllowlist.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/ERC20BaseModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/ERC20BurnModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/ERC20MintModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/EnforcementModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/PauseModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/TokenAttributeModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/ValidationModuleCore.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/core/VersionModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/DocumentERC1643Module.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ERC20EnforcementModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ExtraInformationModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/SnapshotEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleAllowance.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleERC1404.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleRuleEngine.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/AllowlistModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/CCIPModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/DebtEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/DebtModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/DocumentEngineModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/ERC20CrossChainModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/ERC20EnforcementERC7551Module.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/ERC2771Module.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/ERC7551Module.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/options/HolderListModule.sol Line: 3

     pragma solidity ^0.8.24;
  • Found in contracts/modules/wrapper/security/AccessControlModule.sol Line: 3

     pragma solidity ^0.8.24;

L-5: Modifier Invoked Only Once

Consider removing the modifier or inlining the logic into the calling function.

8 Found Instances
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 60

         modifier onlyERC20ForcedBurnManager() {
  • Found in contracts/modules/wrapper/core/PauseModule.sol Line: 45

         modifier onlyDeactivateContractManager() {
  • Found in contracts/modules/wrapper/extensions/SnapshotEngineModule.sol Line: 29

         modifier onlySnapshooter() {
  • Found in contracts/modules/wrapper/extensions/ValidationModule/ValidationModuleRuleEngine.sol Line: 28

         modifier onlyRuleEngineManager() {
  • Found in contracts/modules/wrapper/options/CCIPModule.sol Line: 30

         modifier onlyCCIPSetAdmin() {
  • Found in contracts/modules/wrapper/options/DebtEngineModule.sol Line: 27

         modifier onlyDebtEngineManager {
  • Found in contracts/modules/wrapper/options/ERC20CrossChainModule.sol Line: 44

         modifier onlyBurnerFrom() {
  • Found in contracts/modules/wrapper/options/ERC20CrossChainModule.sol Line: 50

         modifier onlySelfBurn() {

L-6: Empty Block

Consider removing empty blocks.

33 Found Instances
  • Found in contracts/deployment/CMTATUpgradeableUUPS.sol Line: 32

         function _authorizeUpgrade(address newImplementation) internal virtual override(UUPSUpgradeable) onlyRole(PROXY_UPGRADE_ROLE) {}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 280

         function _authorizeForcedBurn() internal virtual onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 282

         function _authorizeMint() internal virtual override(ERC20MintModule) onlyRole(MINTER_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 284

         function _authorizeBurn() internal virtual override(ERC20BurnModule) onlyRole(BURNER_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 286

         function _authorizePause() internal virtual override(PauseModule) onlyRole(PAUSER_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 287

         function _authorizeDeactivate() internal virtual override(PauseModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 289

         function _authorizeFreeze() internal virtual override(EnforcementModule) onlyRole(ENFORCER_ROLE){}
  • Found in contracts/modules/0_CMTATBaseCore.sol Line: 291

         function _authorizeTokenAttributeManagement() internal virtual override(TokenAttributeModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/0_CMTATBaseGeneric.sol Line: 86

         function  _authorizeDocumentManagement() internal virtual override(DocumentERC1643Module) onlyRole(DOCUMENT_ROLE){}
  • Found in contracts/modules/0_CMTATBaseGeneric.sol Line: 87

         function  _authorizeExtraInfoManagement() internal virtual override(ExtraInformationModule) onlyRole(EXTRA_INFORMATION_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 70

         function _authorizeTokenAttributeManagement() internal virtual override(TokenAttributeModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 76

         function _authorizeMint() internal virtual override(ERC20MintModule) onlyRole(MINTER_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 82

         function _authorizeBurn() internal virtual override(ERC20BurnModule) onlyRole(BURNER_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 88

         function _authorizeDocumentManagement() internal virtual override(DocumentERC1643Module) onlyRole(DOCUMENT_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 94

         function  _authorizeExtraInfoManagement() internal virtual override(ExtraInformationModule) onlyRole(EXTRA_INFORMATION_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 100

         function _authorizeERC20Enforcer() internal virtual override(ERC20EnforcementModule) onlyRole(ERC20ENFORCER_ROLE){}
  • Found in contracts/modules/2_CMTATBaseAccessControl.sol Line: 106

         function _authorizeForcedTransfer() internal virtual override(ERC20EnforcementModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 219

         function _authorizePause() internal virtual override(PauseModule) onlyRole(PAUSER_ROLE){}
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 220

         function _authorizeDeactivate() internal virtual override(PauseModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 222

         function _authorizeFreeze() internal virtual override(EnforcementModule) onlyRole(ENFORCER_ROLE){}
  • Found in contracts/modules/3_CMTATBaseAllowlist.sol Line: 224

         function _authorizeAllowlistManagement() internal virtual override(AllowlistModule) onlyRole(ALLOWLIST_ROLE) {}
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 174

         function _authorizePause() internal virtual override(PauseModule) onlyRole(PAUSER_ROLE){}
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 175

         function _authorizeDeactivate() internal virtual override(PauseModule) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 177

         function _authorizeFreeze() internal virtual override(EnforcementModule) onlyRole(ENFORCER_ROLE){}
  • Found in contracts/modules/3_CMTATBaseRuleEngine.sol Line: 179

         function _authorizeRuleEngineManagement() internal virtual override(ValidationModuleRuleEngine) onlyRole(DEFAULT_ADMIN_ROLE){}
  • Found in contracts/modules/4_CMTATBaseDebt.sol Line: 58

        function _authorizeDebtManagement() internal virtual override(DebtModule) onlyRole(DEBT_ROLE){}
  • Found in contracts/modules/4_CMTATBaseDebt.sol Line: 60

        function _authorizeSnapshots() internal virtual override(SnapshotEngineModule) onlyRole(SNAPSHOOTER_ROLE) {}
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 118

         function _authorizeCCIPSetAdmin() internal virtual override(CCIPModule) onlyRole(DEFAULT_ADMIN_ROLE) {}
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 138

         function _authorizeBurnFrom() internal virtual override(ERC20CrossChainModule) onlyRole(BURNER_FROM_ROLE) whenNotPaused{}
  • Found in contracts/modules/5_CMTATBaseERC20CrossChain.sol Line: 145

         function _authorizeSelfBurn() internal virtual override(ERC20CrossChainModule) onlyRole(BURNER_SELF_ROLE) whenNotPaused{}
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 68

         function _authorizeDebtEngineManagement() internal virtual override(DebtEngineModule) onlyRole(DEBT_ENGINE_ROLE) {}
  • Found in contracts/modules/6_CMTATBaseDebtEngine.sol Line: 70

         function _authorizeSnapshots() internal virtual override(SnapshotEngineModule) onlyRole(SNAPSHOOTER_ROLE) {}
  • Found in contracts/modules/7_CMTATBaseERC2771Snapshot.sol Line: 89

         function _authorizeSnapshots() internal virtual override(SnapshotEngineModule) onlyRole(SNAPSHOOTER_ROLE) {}

L-7: Unused Error

Consider using or removing the unused error.

1 Found Instances
  • Found in contracts/interfaces/tokenization/draft-IERC7943.sol Line: 116

         error ERC7943CannotTransfer(address from, address to, uint256 amount);

L-8: Loop Contains require/revert

Avoid require / revert statements in a loop because a single bad item can cause the whole transaction to fail. It's better to forgive on fail and return failed elements post processing of the loop

4 Found Instances
  • Found in contracts/modules/internal/ERC20BurnModuleInternal.sol Line: 36

             for (uint256 i = 0; i < accounts.length; ++i ) {
  • Found in contracts/modules/internal/ERC20MintModuleInternal.sol Line: 38

             for (uint256 i = 0; i < accounts.length; ++i ) {
  • Found in contracts/modules/internal/ERC20MintModuleInternal.sol Line: 52

             for (uint256 i = 0; i < tos.length; ++i) {
  • Found in contracts/modules/internal/EnforcementModuleInternal.sol Line: 48

             for (uint256 i = 0; i < accounts.length; ++i) {

L-9: Costly operations inside loop

Invoking SSTORE operations in loops may waste gas. Use a local variable to hold the loop computation result.

5 Found Instances
  • Found in contracts/modules/internal/AllowlistModuleInternal.sol Line: 51

             for (uint256 i = 0; i < accounts.length; ++i) {
  • Found in contracts/modules/internal/ERC20BurnModuleInternal.sol Line: 36

             for (uint256 i = 0; i < accounts.length; ++i ) {
  • Found in contracts/modules/internal/ERC20MintModuleInternal.sol Line: 38

             for (uint256 i = 0; i < accounts.length; ++i ) {
  • Found in contracts/modules/internal/ERC20MintModuleInternal.sol Line: 52

             for (uint256 i = 0; i < tos.length; ++i) {
  • Found in contracts/modules/internal/EnforcementModuleInternal.sol Line: 48

             for (uint256 i = 0; i < accounts.length; ++i) {

L-10: Unchecked Return

Function returns a value but it is ignored. Consider checking the return value.

1 Found Instances
  • Found in contracts/modules/wrapper/security/AccessControlModule.sol Line: 31

             _grantRole(DEFAULT_ADMIN_ROLE, admin);