A universe of all NSFW entertainment needs for the next generation of viewers.
SugarBounceToken._name (contracts/SugarBounceToken.sol#20) shadows:
- ERC20._name (@openzeppelin/contracts/token/ERC20/ERC20.sol#41)
SugarBounceToken._symbol (contracts/SugarBounceToken.sol#21) shadows:
- ERC20._symbol (@openzeppelin/contracts/token/ERC20/ERC20.sol#42)
Remove the state variable shadowing.
Additional information: link
Contract ownership is not renounced (belongs to a wallet)
AccessControlEnumerable.grantRole(bytes32,address) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#51-54) ignores return value by _roleMembers[role].add(account) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#53)
AccessControlEnumerable.revokeRole(bytes32,address) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#59-62) ignores return value by _roleMembers[role].remove(account) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#61)
AccessControlEnumerable.renounceRole(bytes32,address) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#67-70) ignores return value by _roleMembers[role].remove(account) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#69)
AccessControlEnumerable._setupRole(bytes32,address) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#75-78) ignores return value by _roleMembers[role].add(account) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#77)
Ensure that all the return values of the function calls are used.
Additional information: link
ERC20PresetMinterPauser.constructor(string,string).name (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#35) shadows:
- ERC20.name() (@openzeppelin/contracts/token/ERC20/ERC20.sol#61-63) (function)
- IERC20Metadata.name() (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#16) (function)
ERC20PresetMinterPauser.constructor(string,string).symbol (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#35) shadows:
- ERC20.symbol() (@openzeppelin/contracts/token/ERC20/ERC20.sol#69-71) (function)
- IERC20Metadata.symbol() (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#21) (function)
Rename the local variables that shadow another component.
Additional information: link
UsingLiquidityProtectionService.revokeBlocked(address[],address) (contracts/UsingLiquidityProtectionService.sol#70-82) has external calls inside a loop: lps().isBlocked(pool,holder) (contracts/UsingLiquidityProtectionService.sol#77)
UsingLiquidityProtectionService.LiquidityProtection_beforeTokenTransfer(address,address,uint256) (contracts/UsingLiquidityProtectionService.sol#61-68) has external calls inside a loop: lps().LiquidityProtection_beforeTokenTransfer(getLiquidityPool(),_from,_to,_amount) (contracts/UsingLiquidityProtectionService.sol#66)
Favor pull over push strategy for external calls.
Additional information: link
Variable 'ECDSA.tryRecover(bytes32,bytes).r (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#59)' in ECDSA.tryRecover(bytes32,bytes) (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#54-83) potentially used before declaration: r = mload(uint256)(signature + 0x20) (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#76)
Move all variable declarations prior to any usage of the variable, and ensure that reaching a variable declaration does not depend on some conditional if it is used unconditionally.
Additional information: link
SugarBounceToken.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (contracts/SugarBounceToken.sol#61-89) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp <= deadline,ERC20Permit: expired deadline) (contracts/SugarBounceToken.sol#70)
UsingLiquidityProtectionService.passed(uint256) (contracts/UsingLiquidityProtectionService.sol#114-116) uses timestamp for comparisons
Dangerous comparisons:
- _timestamp < block.timestamp (contracts/UsingLiquidityProtectionService.sol#115)
Avoid relying on block.timestamp.
Additional information: link
ECDSA.tryRecover(bytes32,bytes) (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#54-83) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#64-68)
- INLINE ASM (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#75-78)
ECDSA.tryRecover(bytes32,bytes32,bytes32) (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#112-124) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#119-122)
EnumerableSet.values(EnumerableSet.AddressSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#273-282) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#277-279)
EnumerableSet.values(EnumerableSet.UintSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#346-355) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#350-352)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['0.8.4', '^0.8.0']
- ^0.8.0 (@openzeppelin/contracts/access/AccessControl.sol#3)
- ^0.8.0 (@openzeppelin/contracts/access/AccessControlEnumerable.sol#3)
- ^0.8.0 (@openzeppelin/contracts/access/IAccessControl.sol#3)
- ^0.8.0 (@openzeppelin/contracts/access/IAccessControlEnumerable.sol#3)
- ^0.8.0 (@openzeppelin/contracts/security/Pausable.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#3)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/Context.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/Counters.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/Strings.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/introspection/ERC165.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/introspection/IERC165.sol#3)
- ^0.8.0 (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#3)
- ^0.8.0 (contracts/IPLPS.sol#2)
- 0.8.4 (contracts/SugarBounceToken.sol#2)
- ^0.8.0 (contracts/UsingLiquidityProtectionService.sol#2)
- ^0.8.0 (contracts/external/UniswapV2Library.sol#2)
- ^0.8.0 (contracts/external/UniswapV3Library.sol#2)
Use one Solidity version.
Additional information: link
AccessControl._setRoleAdmin(bytes32,bytes32) (@openzeppelin/contracts/access/AccessControl.sol#191-195) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#20-22) is never used and should be removed
Counters.decrement(Counters.Counter) (@openzeppelin/contracts/utils/Counters.sol#31-37) is never used and should be removed
Counters.reset(Counters.Counter) (@openzeppelin/contracts/utils/Counters.sol#39-41) is never used and should be removed
ECDSA.recover(bytes32,bytes) (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#99-103) is never used and should be removed
ECDSA.recover(bytes32,bytes32,bytes32) (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#131-139) is never used and should be removed
ECDSA.toEthSignedMessageHash(bytes32) (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#201-205) is never used and should be removed
ECDSA.tryRecover(bytes32,bytes) (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#54-83) is never used and should be removed
ECDSA.tryRecover(bytes32,bytes32,bytes32) (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#112-124) is never used and should be removed
EnumerableSet._values(EnumerableSet.Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#141-143) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#157-159) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#296-298) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#195-197) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#334-336) is never used and should be removed
EnumerableSet.contains(EnumerableSet.AddressSet,address) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#240-242) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#174-176) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#313-315) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#181-183) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#320-322) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#167-169) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#306-308) is never used and should be removed
EnumerableSet.values(EnumerableSet.AddressSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#273-282) is never used and should be removed
EnumerableSet.values(EnumerableSet.Bytes32Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#207-209) is never used and should be removed
EnumerableSet.values(EnumerableSet.UintSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#346-355) is never used and should be removed
Strings.toHexString(uint256) (@openzeppelin/contracts/utils/Strings.sol#39-50) is never used and should be removed
Strings.toString(uint256) (@openzeppelin/contracts/utils/Strings.sol#14-34) is never used and should be removed
UsingLiquidityProtectionService.ProtectionSwitch_block(uint256) (contracts/UsingLiquidityProtectionService.sol#106-108) is never used and should be removed
UsingLiquidityProtectionService.ProtectionSwitch_manual() (contracts/UsingLiquidityProtectionService.sol#98-100) is never used and should be removed
UsingLiquidityProtectionService.blockPassed(uint256) (contracts/UsingLiquidityProtectionService.sol#110-112) is never used and should be removed
UsingLiquidityProtectionService.counterToken() (contracts/UsingLiquidityProtectionService.sol#47-49) is never used and should be removed
UsingLiquidityProtectionService.protectionAdminCheck() (contracts/UsingLiquidityProtectionService.sol#43) is never used and should be removed
UsingLiquidityProtectionService.protectionChecker() (contracts/UsingLiquidityProtectionService.sol#53-55) is never used and should be removed
UsingLiquidityProtectionService.token_balanceOf(address) (contracts/UsingLiquidityProtectionService.sol#42) is never used and should be removed
UsingLiquidityProtectionService.token_transfer(address,address,uint256) (contracts/UsingLiquidityProtectionService.sol#41) is never used and should be removed
UsingLiquidityProtectionService.uniswapFactory() (contracts/UsingLiquidityProtectionService.sol#46) is never used and should be removed
UsingLiquidityProtectionService.uniswapVariety() (contracts/UsingLiquidityProtectionService.sol#44) is never used and should be removed
UsingLiquidityProtectionService.uniswapVersion() (contracts/UsingLiquidityProtectionService.sol#45) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (@openzeppelin/contracts/access/AccessControl.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/access/AccessControlEnumerable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/access/IAccessControl.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/access/IAccessControlEnumerable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/security/Pausable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Context.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Counters.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Strings.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/cryptography/ECDSA.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/introspection/ERC165.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/introspection/IERC165.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#3) allows old versions
Pragma version^0.8.0 (contracts/IPLPS.sol#2) allows old versions
Pragma version^0.8.0 (contracts/UsingLiquidityProtectionService.sol#2) allows old versions
Pragma version^0.8.0 (contracts/external/UniswapV2Library.sol#2) allows old versions
Pragma version^0.8.0 (contracts/external/UniswapV3Library.sol#2) allows old versions
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
Function IERC20Permit.DOMAIN_SEPARATOR() (@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol#58) is not in mixedCase
Variable EIP712._CACHED_DOMAIN_SEPARATOR (@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol#30) is not in mixedCase
Variable EIP712._CACHED_CHAIN_ID (@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol#31) is not in mixedCase
Variable EIP712._HASHED_NAME (@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol#33) is not in mixedCase
Variable EIP712._HASHED_VERSION (@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol#34) is not in mixedCase
Variable EIP712._TYPE_HASH (@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol#35) is not in mixedCase
Function IPLPS.LiquidityProtection_beforeTokenTransfer(address,address,address,uint256) (contracts/IPLPS.sol#5-6) is not in mixedCase
Function SugarBounceToken.DOMAIN_SEPARATOR() (contracts/SugarBounceToken.sol#101-103) is not in mixedCase
Function SugarBounceToken.token_transfer(address,address,uint256) (contracts/SugarBounceToken.sol#117-123) is not in mixedCase
Parameter SugarBounceToken.token_transfer(address,address,uint256)._from (contracts/SugarBounceToken.sol#118) is not in mixedCase
Parameter SugarBounceToken.token_transfer(address,address,uint256)._to (contracts/SugarBounceToken.sol#119) is not in mixedCase
Parameter SugarBounceToken.token_transfer(address,address,uint256)._amount (contracts/SugarBounceToken.sol#120) is not in mixedCase
Function SugarBounceToken.token_balanceOf(address) (contracts/SugarBounceToken.sol#128-135) is not in mixedCase
Parameter SugarBounceToken.token_balanceOf(address)._holder (contracts/SugarBounceToken.sol#128) is not in mixedCase
Constant SugarBounceToken._name (contracts/SugarBounceToken.sol#20) is not in UPPER_CASE_WITH_UNDERSCORES
Constant SugarBounceToken._symbol (contracts/SugarBounceToken.sol#21) is not in UPPER_CASE_WITH_UNDERSCORES
Constant SugarBounceToken._cap (contracts/SugarBounceToken.sol#19) is not in UPPER_CASE_WITH_UNDERSCORES
Variable SugarBounceToken._PERMIT_TYPEHASH (contracts/SugarBounceToken.sol#26-29) is not in mixedCase
Function UsingLiquidityProtectionService.LiquidityProtection_setLiquidityProtectionService(IPLPS) (contracts/UsingLiquidityProtectionService.sol#37-39) is not in mixedCase
Parameter UsingLiquidityProtectionService.LiquidityProtection_setLiquidityProtectionService(IPLPS)._plps (contracts/UsingLiquidityProtectionService.sol#37) is not in mixedCase
Function UsingLiquidityProtectionService.token_transfer(address,address,uint256) (contracts/UsingLiquidityProtectionService.sol#41) is not in mixedCase
Function UsingLiquidityProtectionService.token_balanceOf(address) (contracts/UsingLiquidityProtectionService.sol#42) is not in mixedCase
Function UsingLiquidityProtectionService.LiquidityProtection_beforeTokenTransfer(address,address,uint256) (contracts/UsingLiquidityProtectionService.sol#61-68) is not in mixedCase
Parameter UsingLiquidityProtectionService.LiquidityProtection_beforeTokenTransfer(address,address,uint256)._from (contracts/UsingLiquidityProtectionService.sol#61) is not in mixedCase
Parameter UsingLiquidityProtectionService.LiquidityProtection_beforeTokenTransfer(address,address,uint256)._to (contracts/UsingLiquidityProtectionService.sol#61) is not in mixedCase
Parameter UsingLiquidityProtectionService.LiquidityProtection_beforeTokenTransfer(address,address,uint256)._amount (contracts/UsingLiquidityProtectionService.sol#61) is not in mixedCase
Parameter UsingLiquidityProtectionService.revokeBlocked(address[],address)._holders (contracts/UsingLiquidityProtectionService.sol#70) is not in mixedCase
Parameter UsingLiquidityProtectionService.revokeBlocked(address[],address)._revokeTo (contracts/UsingLiquidityProtectionService.sol#70) is not in mixedCase
Function UsingLiquidityProtectionService.LiquidityProtection_unblock(address[]) (contracts/UsingLiquidityProtectionService.sol#84-88) is not in mixedCase
Parameter UsingLiquidityProtectionService.LiquidityProtection_unblock(address[])._holders (contracts/UsingLiquidityProtectionService.sol#84) is not in mixedCase
Function UsingLiquidityProtectionService.ProtectionSwitch_manual() (contracts/UsingLiquidityProtectionService.sol#98-100) is not in mixedCase
Function UsingLiquidityProtectionService.ProtectionSwitch_timestamp(uint256) (contracts/UsingLiquidityProtectionService.sol#102-104) is not in mixedCase
Parameter UsingLiquidityProtectionService.ProtectionSwitch_timestamp(uint256)._timestamp (contracts/UsingLiquidityProtectionService.sol#102) is not in mixedCase
Function UsingLiquidityProtectionService.ProtectionSwitch_block(uint256) (contracts/UsingLiquidityProtectionService.sol#106-108) is not in mixedCase
Parameter UsingLiquidityProtectionService.ProtectionSwitch_block(uint256)._block (contracts/UsingLiquidityProtectionService.sol#106) is not in mixedCase
Parameter UsingLiquidityProtectionService.blockPassed(uint256)._block (contracts/UsingLiquidityProtectionService.sol#110) is not in mixedCase
Parameter UsingLiquidityProtectionService.passed(uint256)._timestamp (contracts/UsingLiquidityProtectionService.sol#114) is not in mixedCase
Parameter UsingLiquidityProtectionService.not(bool)._condition (contracts/UsingLiquidityProtectionService.sol#118) is not in mixedCase
Parameter UsingLiquidityProtectionService.feeToUint24(UsingLiquidityProtectionService.UniswapV3Fees)._fee (contracts/UsingLiquidityProtectionService.sol#122) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
SugarBounceToken.slitherConstructorConstantVariables() (contracts/SugarBounceToken.sol#11-195) uses literals with too many digits:
- _cap = 199000000000000000000000000 (contracts/SugarBounceToken.sol#19)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
UsingLiquidityProtectionService.HUNDRED_PERCENT (contracts/UsingLiquidityProtectionService.sol#11) is never used in SugarBounceToken (contracts/SugarBounceToken.sol#11-195)
UsingLiquidityProtectionService.QUICKSWAP (contracts/UsingLiquidityProtectionService.sol#14) is never used in SugarBounceToken (contracts/SugarBounceToken.sol#11-195)
UsingLiquidityProtectionService.SUSHISWAP (contracts/UsingLiquidityProtectionService.sol#15) is never used in SugarBounceToken (contracts/SugarBounceToken.sol#11-195)
Remove unused state variables.
Additional information: link
getRoleMemberCount(bytes32) should be declared external:
- AccessControlEnumerable.getRoleMemberCount(bytes32) (@openzeppelin/contracts/access/AccessControlEnumerable.sol#44-46)
name() should be declared external:
- ERC20.name() (@openzeppelin/contracts/token/ERC20/ERC20.sol#61-63)
symbol() should be declared external:
- ERC20.symbol() (@openzeppelin/contracts/token/ERC20/ERC20.sol#69-71)
decimals() should be declared external:
- ERC20.decimals() (@openzeppelin/contracts/token/ERC20/ERC20.sol#86-88)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#112-115)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#131-134)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#149-163)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#177-180)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#196-204)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#19-21)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#34-41)
mint(address,uint256) should be declared external:
- ERC20PresetMinterPauser.mint(address,uint256) (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#51-54)
pause() should be declared external:
- ERC20PresetMinterPauser.pause() (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#65-68)
unpause() should be declared external:
- ERC20PresetMinterPauser.unpause() (@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol#79-82)
permit(address,address,uint256,uint256,uint8,bytes32,bytes32) should be declared external:
- SugarBounceToken.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (contracts/SugarBounceToken.sol#61-89)
nonces(address) should be declared external:
- SugarBounceToken.nonces(address) (contracts/SugarBounceToken.sol#94-96)
Use the external attribute for functions never called from the contract.
Additional information: link
Young tokens have high risks of price dump / death
Token has relatively low CoinGecko rank