Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
CFA.allowance(address,address).owner (#498) shadows:
- Ownable.owner() (#329-331) (function)
CFA._approve(address,address,uint256).owner (#559) shadows:
- Ownable.owner() (#329-331) (function)
Rename the local variables that shadow another component.
Additional information: link
Reentrancy in CFA.constructor() (#455-463):
External calls:
- pair = factory.createPair(address(this),address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c)) (#459)
State variables written after the call(s):
- setFeeList(pair,true) (#460)
- feeList.push(account) (#616)
- setFeeList(pair,true) (#460)
- feeMap[account] = feeAble (#618)
- setWhiteList(address(0x1dC39D56CE3130205A01C73A965b6939620812FA),true) (#462)
- whiteList.push(account) (#629)
- setWhiteList(address(0x1dC39D56CE3130205A01C73A965b6939620812FA),true) (#462)
- whiteMap[account] = feeAble (#631)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in CFA.constructor() (#455-463):
External calls:
- pair = factory.createPair(address(this),address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c)) (#459)
Event emitted after the call(s):
- SetFeeList(msg.sender,account,feeAble) (#619)
- setFeeList(pair,true) (#460)
- SetWhiteList(msg.sender,account,feeAble) (#632)
- setWhiteList(address(0x1dC39D56CE3130205A01C73A965b6939620812FA),true) (#462)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#27-36) uses assembly
- INLINE ASM (#34)
Address._functionCallWithValue(address,bytes,uint256,string) (#120-141) uses assembly
- INLINE ASM (#133-136)
Do not use evm assembly.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#120-141) is never used and should be removed
Address.functionCall(address,bytes) (#80-82) is never used and should be removed
Address.functionCall(address,bytes,string) (#90-92) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#105-107) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#115-118) is never used and should be removed
Address.isContract(address) (#27-36) is never used and should be removed
Address.sendValue(address,uint256) (#54-60) is never used and should be removed
Context._msgData() (#306-309) is never used and should be removed
SafeMath.mod(uint256,uint256) (#280-282) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#296-299) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#54-60):
- (success) = recipient.call{value: amount}() (#58)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#120-141):
- (success,returndata) = target.call{value: weiValue}(data) (#124)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Constant CFA.maxSupply (#440) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#307)" inContext (#301-310)
Remove redundant statements if they congest code but offer no value.
Additional information: link
CFA.constructor() (#455-463) uses literals with too many digits:
- _mint(msg.sender,1000000000000000000000 * 1e9) (#456)
CFA.slitherConstructorConstantVariables() (#423-650) uses literals with too many digits:
- maxSupply = 1000000000000000000000 * 1e9 (#440)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
CFA._decimals (#438) should be constant
CFA._name (#436) should be constant
CFA._symbol (#437) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
isOwner() should be declared external:
- Ownable.isOwner() (#341-343)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#352-355)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#361-365)
operator() should be declared external:
- Operator.operator() (#381-383)
isOperator() should be declared external:
- Operator.isOperator() (#393-395)
renounceOperator() should be declared external:
- Operator.renounceOperator() (#398-401)
transferOperator(address) should be declared external:
- Operator.transferOperator(address) (#403-405)
name() should be declared external:
- CFA.name() (#465-467)
symbol() should be declared external:
- CFA.symbol() (#469-471)
decimals() should be declared external:
- CFA.decimals() (#473-475)
transfer(address,uint256) should be declared external:
- CFA.transfer(address,uint256) (#485-496)
approve(address,uint256) should be declared external:
- CFA.approve(address,uint256) (#502-505)
transferFrom(address,address,uint256) should be declared external:
- CFA.transferFrom(address,address,uint256) (#507-520)
increaseAllowance(address,uint256) should be declared external:
- CFA.increaseAllowance(address,uint256) (#522-525)
decreaseAllowance(address,uint256) should be declared external:
- CFA.decreaseAllowance(address,uint256) (#527-530)
mint(address,uint256) should be declared external:
- CFA.mint(address,uint256) (#576-584)
withdrawtoken(address) should be declared external:
- CFA.withdrawtoken(address) (#586-589)
burn(uint256) should be declared external:
- CFA.burn(uint256) (#591-593)
burnFrom(address,uint256) should be declared external:
- CFA.burnFrom(address,uint256) (#595-600)
unlockBlackList(address) should be declared external:
- CFA.unlockBlackList(address) (#640-644)
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