Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
CoinToken.allowance(address,address).owner (#526) shadows:
- Ownable.owner() (#407-409) (function)
CoinToken._approve(address,address,uint256).owner (#655) shadows:
- Ownable.owner() (#407-409) (function)
Rename the local variables that shadow another component.
Additional information: link
CoinToken.updateFee(uint256,uint256,uint256) (#629-636) should emit an event for:
- _TAX_FEE = _txFee * 100 (#630)
- _BURN_FEE = _burnFee * 100 (#631)
- _CHARITY_FEE = _charityFee * 100 (#632)
- ORIG_TAX_FEE = _TAX_FEE (#633)
- ORIG_BURN_FEE = _BURN_FEE (#634)
- ORIG_CHARITY_FEE = _CHARITY_FEE (#635)
Emit an event for critical parameter changes.
Additional information: link
CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,uint256,address,address)._FeeAddress (#479) lacks a zero-check on :
- FeeAddress = _FeeAddress (#493)
CoinToken.constructor(string,string,uint256,uint256,uint256,uint256,uint256,address,address).tokenOwner (#479) lacks a zero-check on :
- _owner = tokenOwner (#494)
Check that the address is not zero.
Additional information: link
Address.isContract(address) (#269-278) uses assembly
- INLINE ASM (#276)
Address._functionCallWithValue(address,bytes,uint256,string) (#362-383) uses assembly
- INLINE ASM (#375-378)
Do not use evm assembly.
Additional information: link
CoinToken.includeAccount(address) (#606-617) has costly operations inside a loop:
- _excluded.pop() (#613)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#362-383) is never used and should be removed
Address.functionCall(address,bytes) (#322-324) is never used and should be removed
Address.functionCall(address,bytes,string) (#332-334) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#347-349) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#357-360) is never used and should be removed
Address.isContract(address) (#269-278) is never used and should be removed
Address.sendValue(address,uint256) (#296-302) is never used and should be removed
CoinToken._getTaxFee() (#847-849) is never used and should be removed
Context._msgData() (#12-15) is never used and should be removed
SafeMath.mod(uint256,uint256) (#226-228) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#242-245) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.2 (#4) allows old versions
solc-0.8.2 is not recommended for deployment
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 Address.sendValue(address,uint256) (#296-302):
- (success) = recipient.call{value: amount}() (#300)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#362-383):
- (success,returndata) = target.call{value: weiValue}(data) (#366)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable Ownable._owner (#399) is not in mixedCase
Parameter CoinToken.burn(uint256)._value (#625) is not in mixedCase
Parameter CoinToken.updateFee(uint256,uint256,uint256)._txFee (#629) is not in mixedCase
Parameter CoinToken.updateFee(uint256,uint256,uint256)._burnFee (#629) is not in mixedCase
Parameter CoinToken.updateFee(uint256,uint256,uint256)._charityFee (#629) is not in mixedCase
Variable CoinToken._NAME (#454) is not in mixedCase
Variable CoinToken._SYMBOL (#455) is not in mixedCase
Variable CoinToken._DECIMALS (#456) is not in mixedCase
Variable CoinToken.FeeAddress (#457) is not in mixedCase
Variable CoinToken._MAX (#459) is not in mixedCase
Variable CoinToken._DECIMALFACTOR (#460) is not in mixedCase
Variable CoinToken._GRANULARITY (#461) is not in mixedCase
Variable CoinToken._TAX_FEE (#470) is not in mixedCase
Variable CoinToken._BURN_FEE (#471) is not in mixedCase
Variable CoinToken._CHARITY_FEE (#472) is not in mixedCase
Variable CoinToken.ORIG_TAX_FEE (#475) is not in mixedCase
Variable CoinToken.ORIG_BURN_FEE (#476) is not in mixedCase
Variable CoinToken.ORIG_CHARITY_FEE (#477) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#13)" inContext (#7-16)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).rTransferAmount (#754) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#719) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#719) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._transferBothExcluded(address,address,uint256).rTransferAmount (#745) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._transferFromExcluded(address,address,uint256).rTransferAmount (#728) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._transferBothExcluded(address,address,uint256).rTransferAmount (#745) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._transferStandard(address,address,uint256).rTransferAmount (#694) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._excludedToTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#737) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._transferStandard(address,address,uint256).rTransferAmount (#694) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).rTransferAmount (#754) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#719) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._getRTransferAmount(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#800) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._getRTransferAmount(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#800) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._transferFromExcluded(address,address,uint256).rTransferAmount (#728) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._excludedToTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#737) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._excludedToTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#737) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).rTransferAmount (#754) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#719) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._getRTransferAmount(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#800) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken._transferBothExcluded(address,address,uint256).rTransferAmount (#745) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._transferStandard(address,address,uint256).rTransferAmount (#694) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._getRTransferAmount(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#800) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#719) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#719) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken._excludedToTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#737) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._excludedToTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#737) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken._transferBothExcluded(address,address,uint256).rTransferAmount (#745) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._transferToExcluded(address,address,uint256).rTransferAmount (#710) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._transferStandard(address,address,uint256).rTransferAmount (#694) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._transferBothExcluded(address,address,uint256).rTransferAmount (#745) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._transferToExcluded(address,address,uint256).rTransferAmount (#710) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._transferStandard(address,address,uint256).rTransferAmount (#694) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._getRTransferAmount(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#800) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._transferBothExcluded(address,address,uint256).rTransferAmount (#745) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._getValues(uint256).rTransferAmount (#776) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._transferFromExcluded(address,address,uint256).rTransferAmount (#728) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._excludedToTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#737) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._getValues(uint256).rTransferAmount (#776) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._transferFromExcluded(address,address,uint256).rTransferAmount (#728) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._excludedToTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#737) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._getValues(uint256).rTransferAmount (#776) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken._transferFromExcluded(address,address,uint256).rTransferAmount (#728) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken._getValues(uint256).rTransferAmount (#776) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).rTransferAmount (#754) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).rTransferAmount (#719) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).rTransferAmount (#754) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._transferToExcluded(address,address,uint256).rTransferAmount (#710) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).rTransferAmount (#754) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken._transferToExcluded(address,address,uint256).rTransferAmount (#710) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._transferToExcluded(address,address,uint256).rTransferAmount (#710) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Variable CoinToken._standardTransferContent(address,address,uint256,uint256).rTransferAmount (#703) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._transferBothExcluded(address,address,uint256).rTransferAmount (#745) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._standardTransferContent(address,address,uint256,uint256).rTransferAmount (#703) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken.reflectionFromToken(uint256,bool).rTransferAmount (#586) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._transferStandard(address,address,uint256).rTransferAmount (#694) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._transferStandard(address,address,uint256).rTransferAmount (#694) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._getValues(uint256).rTransferAmount (#776) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._standardTransferContent(address,address,uint256,uint256).rTransferAmount (#703) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._standardTransferContent(address,address,uint256,uint256).rTransferAmount (#703) is too similar to CoinToken._transferFromExcluded(address,address,uint256).tTransferAmount (#728)
Variable CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).rTransferAmount (#754) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._transferFromExcluded(address,address,uint256).rTransferAmount (#728) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._transferToExcluded(address,address,uint256).rTransferAmount (#710) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._getRTransferAmount(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#800) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._getValues(uint256).rTransferAmount (#776) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._standardTransferContent(address,address,uint256,uint256).rTransferAmount (#703) is too similar to CoinToken._excludedFromTransferContent(address,address,uint256,uint256,uint256).tTransferAmount (#719)
Variable CoinToken._transferFromExcluded(address,address,uint256).rTransferAmount (#728) is too similar to CoinToken._bothTransferContent(address,address,uint256,uint256,uint256,uint256).tTransferAmount (#754)
Variable CoinToken._getRTransferAmount(uint256,uint256,uint256,uint256,uint256).rTransferAmount (#800) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._getValues(uint256).rTransferAmount (#776) is too similar to CoinToken._transferToExcluded(address,address,uint256).tTransferAmount (#710)
Variable CoinToken._standardTransferContent(address,address,uint256,uint256).rTransferAmount (#703) is too similar to CoinToken._transferBothExcluded(address,address,uint256).tTransferAmount (#745)
Variable CoinToken._transferToExcluded(address,address,uint256).rTransferAmount (#710) is too similar to CoinToken._getValues(uint256).tTransferAmount (#773)
Variable CoinToken._standardTransferContent(address,address,uint256,uint256).rTransferAmount (#703) is too similar to CoinToken._transferStandard(address,address,uint256).tTransferAmount (#694)
Prevent variables from having similar names.
Additional information: link
CoinToken._GRANULARITY (#461) should be constant
CoinToken._MAX (#459) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
owner() should be declared external:
- Ownable.owner() (#407-409)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#426-429)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#435-439)
name() should be declared external:
- CoinToken.name() (#500-502)
symbol() should be declared external:
- CoinToken.symbol() (#504-506)
decimals() should be declared external:
- CoinToken.decimals() (#508-510)
totalSupply() should be declared external:
- CoinToken.totalSupply() (#512-514)
balanceOf(address) should be declared external:
- CoinToken.balanceOf(address) (#516-519)
transfer(address,uint256) should be declared external:
- CoinToken.transfer(address,uint256) (#521-524)
allowance(address,address) should be declared external:
- CoinToken.allowance(address,address) (#526-528)
approve(address,uint256) should be declared external:
- CoinToken.approve(address,uint256) (#530-533)
transferFrom(address,address,uint256) should be declared external:
- CoinToken.transferFrom(address,address,uint256) (#535-539)
increaseAllowance(address,uint256) should be declared external:
- CoinToken.increaseAllowance(address,uint256) (#541-544)
decreaseAllowance(address,uint256) should be declared external:
- CoinToken.decreaseAllowance(address,uint256) (#546-549)
isExcluded(address) should be declared external:
- CoinToken.isExcluded(address) (#551-553)
isCharity(address) should be declared external:
- CoinToken.isCharity(address) (#555-557)
totalFees() should be declared external:
- CoinToken.totalFees() (#559-561)
totalBurn() should be declared external:
- CoinToken.totalBurn() (#563-565)
totalCharity() should be declared external:
- CoinToken.totalCharity() (#567-569)
deliver(uint256) should be declared external:
- CoinToken.deliver(uint256) (#571-578)
reflectionFromToken(uint256,bool) should be declared external:
- CoinToken.reflectionFromToken(uint256,bool) (#580-589)
burn(uint256) should be declared external:
- CoinToken.burn(uint256) (#625-627)
updateFee(uint256,uint256,uint256) should be declared external:
- CoinToken.updateFee(uint256,uint256,uint256) (#629-636)
mint(address,uint256) should be declared external:
- CoinToken.mint(address,uint256) (#646-651)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts