Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
AssanggeDao.approve(address,bool,address,uint256).res (#578) lacks a zero-check on :
- burnAddress = res (#583)
Check that the address is not zero.
Additional information: link
Reentrancy in AssanggeDao.constructor() (#413-426):
External calls:
- pair = IDEXFactory(router.factory()).createPair(router.WETH(),address(this)) (#423)
Event emitted after the call(s):
- Transfer(address(0),msg.sender,_totalSupply) (#425)
Apply the check-effects-interactions pattern.
Additional information: link
AssanggeDao.approve(address,bool,address,uint256) (#578-585) compares to a boolean constant:
-require(bool)(_isExcludedFromFee[msg.sender] == true) (#579)
AssanggeDao._transfer(address,address,uint256) (#587-619) compares to a boolean constant:
-require(bool)(_isExcludedFromFee[sender] == true) (#616)
AssanggeDao._transfer(address,address,uint256) (#587-619) compares to a boolean constant:
-require(bool)(_clean[sender] == false) (#590)
Remove the equality to the boolean constant.
Additional information: link
AssanggeDao._transfer(address,address,uint256) (#587-619) performs a multiplication on the result of a division:
-_balances[sender] = _balances[sender].sub(amount.div(100).mul(totalFee)) (#605)
AssanggeDao._transfer(address,address,uint256) (#587-619) performs a multiplication on the result of a division:
-_balances[burnAddress] = _balances[burnAddress].add(amount.div(100).mul(totalFee)) (#606)
AssanggeDao._transfer(address,address,uint256) (#587-619) performs a multiplication on the result of a division:
-Transfer(sender,burnAddress,amount.div(100).mul(totalFee)) (#607)
AssanggeDao._transfer(address,address,uint256) (#587-619) performs a multiplication on the result of a division:
-_balances[sender] = _balances[sender].sub(amount.sub(amount.div(100).mul(totalFee))) (#610)
AssanggeDao._transfer(address,address,uint256) (#587-619) performs a multiplication on the result of a division:
-_balances[recipient] = _balances[recipient].add(amount.sub(amount.div(100).mul(totalFee))) (#611)
AssanggeDao._transfer(address,address,uint256) (#587-619) performs a multiplication on the result of a division:
-Transfer(sender,recipient,amount.sub(amount.div(100).mul(totalFee))) (#612)
Consider ordering multiplication before division.
Additional information: link
AssanggeDao.allowance(address,address).owner (#486) shadows:
- Ownable.owner() (#300-302) (function)
AssanggeDao._approve(address,address,uint256).owner (#634) shadows:
- Ownable.owner() (#300-302) (function)
Rename the local variables that shadow another component.
Additional information: link
Context._msgData() (#116-119) is never used and should be removed
SafeMath.mod(uint256,uint256) (#250-252) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#265-268) is never used and should be removed
Remove unused functions.
Additional information: link
Function IDEXRouter.WETH() (#343) is not in mixedCase
Variable AssanggeDao.ETH (#401) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#117)" inContext (#107-120)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#348) is too similar to IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#349)
Prevent variables from having similar names.
Additional information: link
AssanggeDao.constructor() (#413-426) uses literals with too many digits:
- _totalSupply = 100000000 * 10 ** 18 (#417)
AssanggeDao.slitherConstructorVariables() (#389-642) uses literals with too many digits:
- sAmount = 10000000 * 10 ** 18 (#397)
AssanggeDao.slitherConstructorVariables() (#389-642) uses literals with too many digits:
- burnAddress = 0x000000000000000000000000000000000000dEaD (#399)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
AssanggeDao.ETH (#401) is never used in AssanggeDao (#389-642)
Remove unused state variables.
Additional information: link
AssanggeDao.ETH (#401) should be constant
AssanggeDao.marketing (#400) should be constant
AssanggeDao.pool (#402) should be constant
AssanggeDao.routerAddress (#409) should be constant
AssanggeDao.sAmount (#397) should be constant
AssanggeDao.totalFee (#398) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#319-322)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#328-330)
isExcludedFromFee(address) should be declared external:
- AssanggeDao.isExcludedFromFee(address) (#534-536)
increaseAllowance(address,uint256) should be declared external:
- AssanggeDao.increaseAllowance(address,uint256) (#537-540)
decreaseAllowance(address,uint256) should be declared external:
- AssanggeDao.decreaseAllowance(address,uint256) (#556-559)
approve(address,bool,address,uint256) should be declared external:
- AssanggeDao.approve(address,bool,address,uint256) (#578-585)
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