Shopify on an MMORPG Metaverse
Redundant expression "this (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#28)" inContextUpgradeable (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#16-32)
Redundant expression "this (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#94)" inEIP712Upgradeable (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#25-121)
Remove redundant statements if they congest code but offer no value.
Additional information: link
ERC20PermitUpgradeable.__gap (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#86) is never used in SynapseERC20 (contracts/synapse/SynapseERC20.sol#10-45)
Remove unused state variables.
Additional information: link
ERC20PermitUpgradeable.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#48-70) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp <= deadline,ERC20Permit: expired deadline) (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#50)
Avoid relying on block.timestamp.
Additional information: link
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol#3) is too complex
Pragma version>=0.4.24<0.8.0 (@openzeppelin/contracts-upgradeable/proxy/Initializable.sol#4) is too complex
Pragma version>=0.6.0<0.8.0 (contracts/synapse/SynapseERC20.sol#2) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/drafts/IERC20PermitUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/cryptography/ECDSAUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20BurnableUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#3) is too complex
Pragma version>=0.6.5<0.8.0 (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol#3) is too complex
Pragma version>=0.6.2<0.8.0 (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#3) is too complex
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#139-145):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#143)
Low level call in AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#53-59):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#57)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-121):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#119)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function ERC20PermitUpgradeable.__ERC20Permit_init(string) (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#35-39) is not in mixedCase
Function IERC20PermitUpgradeable.DOMAIN_SEPARATOR() (@openzeppelin/contracts-upgradeable/drafts/IERC20PermitUpgradeable.sol#50) is not in mixedCase
Variable EIP712Upgradeable.__gap (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#120) is not in mixedCase
Function AccessControlUpgradeable.__AccessControl_init_unchained() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#51-52) is not in mixedCase
Variable EIP712Upgradeable._HASHED_NAME (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#27) is not in mixedCase
Parameter SynapseERC20.initialize(string,string,uint8,address)._name (contracts/synapse/SynapseERC20.sol#27) is not in mixedCase
Function EIP712Upgradeable.__EIP712_init(string,string) (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#44-46) is not in mixedCase
Function ERC20PermitUpgradeable.__ERC20Permit_init_unchained(string) (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#41-43) is not in mixedCase
Variable ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#31) is not in mixedCase
Variable ERC20PermitUpgradeable._PERMIT_TYPEHASH (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#28) is not in mixedCase
Variable AccessControlUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#225) is not in mixedCase
Function ERC20BurnableUpgradeable.__ERC20Burnable_init() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20BurnableUpgradeable.sol#15-18) is not in mixedCase
Function ERC20Upgradeable.__ERC20_init_unchained(string,string) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#61-65) is not in mixedCase
Function ERC20Upgradeable.__ERC20_init(string,string) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#56-59) is not in mixedCase
Variable ERC20PermitUpgradeable.__gap (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#86) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Parameter SynapseERC20.initialize(string,string,uint8,address)._symbol (contracts/synapse/SynapseERC20.sol#28) is not in mixedCase
Function EIP712Upgradeable._EIP712VersionHash() (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#117-119) is not in mixedCase
Parameter SynapseERC20.initialize(string,string,uint8,address)._owner (contracts/synapse/SynapseERC20.sol#30) is not in mixedCase
Variable EIP712Upgradeable._HASHED_VERSION (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#28) is not in mixedCase
Variable ERC20Upgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#312) is not in mixedCase
Variable ERC20BurnableUpgradeable.__gap (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20BurnableUpgradeable.sol#50) is not in mixedCase
Function AccessControlUpgradeable.__AccessControl_init() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#46-49) is not in mixedCase
Function EIP712Upgradeable._EIP712NameHash() (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#107-109) is not in mixedCase
Parameter SynapseERC20.initialize(string,string,uint8,address)._decimals (contracts/synapse/SynapseERC20.sol#29) is not in mixedCase
Function ERC20PermitUpgradeable.DOMAIN_SEPARATOR() (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#83-85) is not in mixedCase
Function ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#17-19) is not in mixedCase
Function ERC20BurnableUpgradeable.__ERC20Burnable_init_unchained() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20BurnableUpgradeable.sol#20-21) is not in mixedCase
Function EIP712Upgradeable.__EIP712_init_unchained(string,string) (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#48-53) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
SynapseERC20.initialize(string,string,uint8,address)._symbol (contracts/synapse/SynapseERC20.sol#28) shadows:
- ERC20Upgradeable._symbol (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#44) (state variable)
ERC20PermitUpgradeable.__ERC20Permit_init(string).name (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#35) shadows:
- ERC20Upgradeable.name() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#70-72) (function)
SynapseERC20.initialize(string,string,uint8,address)._decimals (contracts/synapse/SynapseERC20.sol#29) shadows:
- ERC20Upgradeable._decimals (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#45) (state variable)
ERC20PermitUpgradeable.__ERC20Permit_init_unchained(string).name (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#41) shadows:
- ERC20Upgradeable.name() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#70-72) (function)
SynapseERC20.initialize(string,string,uint8,address)._name (contracts/synapse/SynapseERC20.sol#27) shadows:
- ERC20Upgradeable._name (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#43) (state variable)
Rename the local variables that shadow another component.
Additional information: link
AddressUpgradeable.isContract(address) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#26-35) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#33)
EIP712Upgradeable._getChainId() (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#93-99) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#96-98)
AddressUpgradeable._verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-164) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#156-159)
ECDSAUpgradeable.recover(bytes32,bytes) (@openzeppelin/contracts-upgradeable/cryptography/ECDSAUpgradeable.sol#26-47) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/cryptography/ECDSAUpgradeable.sol#40-44)
Do not use evm assembly.
Additional information: link
Different versions of Solidity are used:
- Version used: ['>=0.4.24<0.8.0', '>=0.6.0<0.8.0', '>=0.6.2<0.8.0', '>=0.6.5<0.8.0']
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/cryptography/ECDSAUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#3)
- >=0.6.5<0.8.0 (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/drafts/IERC20PermitUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#3)
- >=0.4.24<0.8.0 (@openzeppelin/contracts-upgradeable/proxy/Initializable.sol#4)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20BurnableUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol#3)
- >=0.6.2<0.8.0 (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#3)
- >=0.6.0<0.8.0 (contracts/synapse/SynapseERC20.sol#2)
Use one Solidity version.
Additional information: link
ContextUpgradeable._msgData() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-30) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#104-106) is never used and should be removed
ECDSAUpgradeable.toEthSignedMessageHash(bytes32) (@openzeppelin/contracts-upgradeable/cryptography/ECDSAUpgradeable.sol#81-85) is never used and should be removed
EnumerableSetUpgradeable.remove(EnumerableSetUpgradeable.UintSet,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#266-268) is never used and should be removed
SafeMathUpgradeable.trySub(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#35-38) is never used and should be removed
EIP712Upgradeable.__EIP712_init(string,string) (@openzeppelin/contracts-upgradeable/drafts/EIP712Upgradeable.sol#44-46) is never used and should be removed
AccessControlUpgradeable.__AccessControl_init() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#46-49) is never used and should be removed
AddressUpgradeable._verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#147-164) is never used and should be removed
SafeMathUpgradeable.div(uint256,uint256,string) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#190-193) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#79-81) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#89-91) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#53-59) is never used and should be removed
SafeMathUpgradeable.tryMul(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#45-53) is never used and should be removed
EnumerableSetUpgradeable.remove(EnumerableSetUpgradeable.Bytes32Set,bytes32) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#157-159) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#129-131) is never used and should be removed
SafeMathUpgradeable.mod(uint256,uint256,string) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#210-213) is never used and should be removed
EnumerableSetUpgradeable.contains(EnumerableSetUpgradeable.Bytes32Set,bytes32) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#164-166) is never used and should be removed
AccessControlUpgradeable._setRoleAdmin(bytes32,bytes32) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#209-212) is never used and should be removed
EnumerableSetUpgradeable.add(EnumerableSetUpgradeable.UintSet,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#256-258) is never used and should be removed
ERC20BurnableUpgradeable.__ERC20Burnable_init() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20BurnableUpgradeable.sol#15-18) is never used and should be removed
EnumerableSetUpgradeable.length(EnumerableSetUpgradeable.UintSet) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#280-282) is never used and should be removed
EnumerableSetUpgradeable.add(EnumerableSetUpgradeable.Bytes32Set,bytes32) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#147-149) is never used and should be removed
ERC20Upgradeable.__ERC20_init(string,string) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#56-59) is never used and should be removed
SafeMathUpgradeable.mul(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#116-121) is never used and should be removed
EnumerableSetUpgradeable.at(EnumerableSetUpgradeable.UintSet,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#294-296) is never used and should be removed
SafeMathUpgradeable.div(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#135-138) is never used and should be removed
SafeMathUpgradeable.tryAdd(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#24-28) is never used and should be removed
EnumerableSetUpgradeable.length(EnumerableSetUpgradeable.Bytes32Set) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#171-173) is never used and should be removed
EnumerableSetUpgradeable.at(EnumerableSetUpgradeable.Bytes32Set,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#185-187) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#139-145) is never used and should be removed
SafeMathUpgradeable.tryDiv(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#60-63) is never used and should be removed
SafeMathUpgradeable.mod(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#152-155) is never used and should be removed
ECDSAUpgradeable.recover(bytes32,bytes) (@openzeppelin/contracts-upgradeable/cryptography/ECDSAUpgradeable.sol#26-47) is never used and should be removed
SafeMathUpgradeable.tryMod(uint256,uint256) (@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol#70-73) is never used and should be removed
EnumerableSetUpgradeable.contains(EnumerableSetUpgradeable.UintSet,uint256) (@openzeppelin/contracts-upgradeable/utils/EnumerableSetUpgradeable.sol#273-275) is never used and should be removed
CountersUpgradeable.decrement(CountersUpgradeable.Counter) (@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol#37-39) is never used and should be removed
ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#17-19) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#114-121) is never used and should be removed
Remove unused functions.
Additional information: link
transferFrom(address,address,uint256) should be declared external:
- ERC20Upgradeable.transferFrom(address,address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#158-162)
nonces(address) should be declared external:
- ERC20PermitUpgradeable.nonces(address) (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#75-77)
getRoleMember(bytes32,uint256) should be declared external:
- AccessControlUpgradeable.getRoleMember(bytes32,uint256) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#119-121)
name() should be declared external:
- ERC20Upgradeable.name() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#70-72)
balanceOf(address) should be declared external:
- ERC20Upgradeable.balanceOf(address) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#109-111)
initialize(string,string,uint8,address) should be declared external:
- SynapseERC20.initialize(string,string,uint8,address) (contracts/synapse/SynapseERC20.sol#26-39)
burn(uint256) should be declared external:
- ERC20BurnableUpgradeable.burn(uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20BurnableUpgradeable.sol#29-31)
totalSupply() should be declared external:
- ERC20Upgradeable.totalSupply() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#102-104)
burnFrom(address,uint256) should be declared external:
- ERC20BurnableUpgradeable.burnFrom(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20BurnableUpgradeable.sol#44-49)
symbol() should be declared external:
- ERC20Upgradeable.symbol() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#78-80)
getRoleAdmin(bytes32) should be declared external:
- AccessControlUpgradeable.getRoleAdmin(bytes32) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#129-131)
increaseAllowance(address,uint256) should be declared external:
- ERC20Upgradeable.increaseAllowance(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#176-179)
approve(address,uint256) should be declared external:
- ERC20Upgradeable.approve(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#140-143)
decreaseAllowance(address,uint256) should be declared external:
- ERC20Upgradeable.decreaseAllowance(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#195-198)
revokeRole(bytes32,address) should be declared external:
- AccessControlUpgradeable.revokeRole(bytes32,address) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#158-162)
permit(address,address,uint256,uint256,uint8,bytes32,bytes32) should be declared external:
- ERC20PermitUpgradeable.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (@openzeppelin/contracts-upgradeable/drafts/ERC20PermitUpgradeable.sol#48-70)
getRoleMemberCount(bytes32) should be declared external:
- AccessControlUpgradeable.getRoleMemberCount(bytes32) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#103-105)
renounceRole(bytes32,address) should be declared external:
- AccessControlUpgradeable.renounceRole(bytes32,address) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#178-182)
decimals() should be declared external:
- ERC20Upgradeable.decimals() (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#95-97)
mint(address,uint256) should be declared external:
- SynapseERC20.mint(address,uint256) (contracts/synapse/SynapseERC20.sol#41-44)
grantRole(bytes32,address) should be declared external:
- AccessControlUpgradeable.grantRole(bytes32,address) (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#143-147)
transfer(address,uint256) should be declared external:
- ERC20Upgradeable.transfer(address,uint256) (@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol#121-124)
Use the external attribute for functions never called from the contract.
Additional information: link