Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
KYC.clearStuckBalance() (#639-641) sends eth to arbitrary user
Dangerous calls:
- address(feeaddress).transfer(address(this).balance) (#640)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
KYC.claimERCtoknes(IERC20) (#643-645) ignores return value by tokenAddress.transfer(feeaddress,tokenAddress.balanceOf(address(this))) (#644)
KYC.depositLPFee(uint256,address) (#853-865) ignores return value by IERC20(token).transferFrom(msg.sender,address(this),amount) (#861)
KYC.depositLPFee(uint256,address) (#853-865) ignores return value by IERC20(token).transfer(feeaddress,amount) (#862)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Combination 2: Unchecked transfer + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.
KYC.allowance(address,address).owner (#519) shadows:
- Ownable.owner() (#153-155) (function)
KYC._approve(address,address,uint256).owner (#759) shadows:
- Ownable.owner() (#153-155) (function)
Rename the local variables that shadow another component.
Additional information: link
KYC.constructor() (#472-491) ignores return value by IPYESwapPair(pyeSwapPair).updateTotalFee(1200) (#488)
KYC._updatePairsFee(uint256) (#611-615) ignores return value by IPYESwapPair(pairs[j]).updateTotalFee(fee) (#613)
KYC.addPair(address,address) (#875-880) ignores return value by IPYESwapPair(_pair).updateTotalFee(_totalTax) (#878)
Ensure that all the return values of the function calls are used.
Additional information: link
KYC._setmaxwalletamount(uint256) (#629-632) should emit an event for:
- _maxWallet = amount * 10 ** 9 (#631)
KYC.setmaxTxAmount(uint256) (#634-637) should emit an event for:
- _maxTxAmount = amount * 10 ** 9 (#636)
KYC.setFees(uint256,uint256) (#666-672) should emit an event for:
- _taxFee = _tax (#668)
- _developmentFee = _developmentTax (#669)
Emit an event for critical parameter changes.
Additional information: link
KYC.setfeeaddress(address).walletAddress (#625) lacks a zero-check on :
- feeaddress = walletAddress (#626)
KYC.EnableTrading(address)._address (#661) lacks a zero-check on :
- feeaddress = _address (#663)
Check that the address is not zero.
Additional information: link
Reentrancy in KYC.addPair(address,address) (#875-880):
External calls:
- IPYESwapPair(_pair).updateTotalFee(_totalTax) (#878)
State variables written after the call(s):
- tokens[pairsLength] = _token (#879)
Reentrancy in KYC.constructor() (#472-491):
External calls:
- pyeSwapPair = IPYESwapFactory(pyeSwapRouter.factory()).createPair(address(this),WBNB,true) (#477-478)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#485)
- _isExcludedFromFee[address(this)] = true (#486)
- depwallet = _msgSender() (#484)
- pairs[pairsLength] = pyeSwapPair (#481)
- pairsLength += 1 (#482)
- tokens[pairsLength] = WBNB (#480)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in KYC.constructor() (#472-491):
External calls:
- pyeSwapPair = IPYESwapFactory(pyeSwapRouter.factory()).createPair(address(this),WBNB,true) (#477-478)
- IPYESwapPair(pyeSwapPair).updateTotalFee(1200) (#488)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#490)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#184-189) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#186)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#93-98) uses assembly
- INLINE ASM (#96)
Address._functionCallWithValue(address,bytes,uint256,string) (#123-139) uses assembly
- INLINE ASM (#131-134)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.5.0', '>=0.6.2', '^0.8.9']
- ^0.8.9 (#3)
- >=0.5.0 (#20)
- >=0.5.0 (#192)
- >=0.5.0 (#212)
- >=0.6.2 (#268)
- >=0.6.2 (#363)
Use one Solidity version.
Additional information: link
KYC.includeInReward(address) (#588-599) has costly operations inside a loop:
- _excluded.pop() (#595)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#123-139) is never used and should be removed
Address.functionCall(address,bytes) (#106-108) is never used and should be removed
Address.functionCall(address,bytes,string) (#110-112) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#114-116) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#118-121) is never used and should be removed
Address.isContract(address) (#93-98) is never used and should be removed
Address.sendValue(address,uint256) (#99-104) is never used and should be removed
Context._msgData() (#85-88) is never used and should be removed
SafeMath.mod(uint256,uint256) (#70-72) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#74-77) is never used and should be removed
Remove unused functions.
Additional information: link
KYC._rTotal (#433) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
KYC._previousTaxFee (#442) is set pre-construction with a non-constant function or state variable:
- _taxFee
KYC._previousLiquidityFee (#445) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
KYC._totalTax (#448) is set pre-construction with a non-constant function or state variable:
- (_taxFee * 100) + _developmentFee
KYC._maxTxAmount (#456) is set pre-construction with a non-constant function or state variable:
- _tTotal * 4 / 200
KYC._maxWallet (#457) is set pre-construction with a non-constant function or state variable:
- _tTotal * 4 / 200
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
Pragma version^0.8.9 (#3) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version>=0.5.0 (#20) allows old versions
Pragma version>=0.5.0 (#192) allows old versions
Pragma version>=0.5.0 (#212) allows old versions
Pragma version>=0.6.2 (#268) allows old versions
Pragma version>=0.6.2 (#363) allows old versions
solc-0.8.9 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) (#99-104):
- (success) = recipient.call{value: amount}() (#102)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#123-139):
- (success,returndata) = target.call{value: weiValue}(data) (#126)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IPYESwapPair.DOMAIN_SEPARATOR() (#231) is not in mixedCase
Function IPYESwapPair.PERMIT_TYPEHASH() (#232) is not in mixedCase
Function IPYESwapPair.MINIMUM_LIQUIDITY() (#249) is not in mixedCase
Function IPYESwapRouter01.WETH() (#271) is not in mixedCase
Function KYC._setmaxwalletamount(uint256) (#629-632) is not in mixedCase
Function KYC.EnableTrading(address) (#661-664) is not in mixedCase
Parameter KYC.EnableTrading(address)._address (#661) is not in mixedCase
Parameter KYC.setFees(uint256,uint256)._tax (#666) is not in mixedCase
Parameter KYC.setFees(uint256,uint256)._developmentTax (#666) is not in mixedCase
Parameter KYC.calculateTaxFee(uint256)._amount (#728) is not in mixedCase
Parameter KYC.calculateLiquidityFee(uint256)._amount (#734) is not in mixedCase
Parameter KYC.addPair(address,address)._pair (#875) is not in mixedCase
Parameter KYC.addPair(address,address)._token (#875) is not in mixedCase
Variable KYC.WBNB (#419) is not in mixedCase
Variable KYC._totalTax (#448) is not in mixedCase
Variable KYC._maxTxAmount (#456) is not in mixedCase
Variable KYC._maxWallet (#457) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#86)" inContext (#80-89)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IPYESwapRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#276) is too similar to IPYESwapRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#277)
Variable KYC._transferFromExcluded(address,address,uint256).rTransferAmount (#844) is too similar to KYC._transferBothExcluded(address,address,uint256).tTransferAmount (#601)
Variable KYC._transferFromExcluded(address,address,uint256).rTransferAmount (#844) is too similar to KYC._transferToExcluded(address,address,uint256).tTransferAmount (#834)
Variable KYC._transferToExcluded(address,address,uint256).rTransferAmount (#834) is too similar to KYC._transferBothExcluded(address,address,uint256).tTransferAmount (#601)
Variable KYC._transferToExcluded(address,address,uint256).rTransferAmount (#834) is too similar to KYC._transferToExcluded(address,address,uint256).tTransferAmount (#834)
Variable KYC._transferStandard(address,address,uint256).rTransferAmount (#825) is too similar to KYC._transferStandard(address,address,uint256).tTransferAmount (#825)
Variable KYC._transferBothExcluded(address,address,uint256).rTransferAmount (#601) is too similar to KYC._transferStandard(address,address,uint256).tTransferAmount (#825)
Variable KYC.reflectionFromToken(uint256,bool).rTransferAmount (#567) is too similar to KYC._transferBothExcluded(address,address,uint256).tTransferAmount (#601)
Variable KYC._getValues(uint256).rTransferAmount (#684) is too similar to KYC._getValues(uint256).tTransferAmount (#683)
Variable KYC._getValues(uint256).rTransferAmount (#684) is too similar to KYC._transferStandard(address,address,uint256).tTransferAmount (#825)
Variable KYC._transferFromExcluded(address,address,uint256).rTransferAmount (#844) is too similar to KYC._transferStandard(address,address,uint256).tTransferAmount (#825)
Variable KYC._transferToExcluded(address,address,uint256).rTransferAmount (#834) is too similar to KYC._transferStandard(address,address,uint256).tTransferAmount (#825)
Variable KYC._getValues(uint256).rTransferAmount (#684) is too similar to KYC._getTValues(uint256).tTransferAmount (#691)
Variable KYC._getValues(uint256).rTransferAmount (#684) is too similar to KYC._transferFromExcluded(address,address,uint256).tTransferAmount (#844)
Variable KYC._transferStandard(address,address,uint256).rTransferAmount (#825) is too similar to KYC._transferBothExcluded(address,address,uint256).tTransferAmount (#601)
Variable KYC._transferBothExcluded(address,address,uint256).rTransferAmount (#601) is too similar to KYC._transferBothExcluded(address,address,uint256).tTransferAmount (#601)
Variable KYC._transferFromExcluded(address,address,uint256).rTransferAmount (#844) is too similar to KYC._transferFromExcluded(address,address,uint256).tTransferAmount (#844)
Variable KYC._transferToExcluded(address,address,uint256).rTransferAmount (#834) is too similar to KYC._transferFromExcluded(address,address,uint256).tTransferAmount (#844)
Variable KYC.reflectionFromToken(uint256,bool).rTransferAmount (#567) is too similar to KYC._transferStandard(address,address,uint256).tTransferAmount (#825)
Variable KYC._getValues(uint256).rTransferAmount (#684) is too similar to KYC._transferToExcluded(address,address,uint256).tTransferAmount (#834)
Variable KYC._getValues(uint256).rTransferAmount (#684) is too similar to KYC._transferBothExcluded(address,address,uint256).tTransferAmount (#601)
Variable KYC._transferStandard(address,address,uint256).rTransferAmount (#825) is too similar to KYC._getValues(uint256).tTransferAmount (#683)
Variable KYC._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#699) is too similar to KYC._transferBothExcluded(address,address,uint256).tTransferAmount (#601)
Variable KYC.reflectionFromToken(uint256,bool).rTransferAmount (#567) is too similar to KYC._transferFromExcluded(address,address,uint256).tTransferAmount (#844)
Variable KYC._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#699) is too similar to KYC._transferFromExcluded(address,address,uint256).tTransferAmount (#844)
Variable KYC.reflectionFromToken(uint256,bool).rTransferAmount (#567) is too similar to KYC._getTValues(uint256).tTransferAmount (#691)
Variable KYC._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#699) is too similar to KYC._getTValues(uint256).tTransferAmount (#691)
Variable KYC._transferBothExcluded(address,address,uint256).rTransferAmount (#601) is too similar to KYC._getTValues(uint256).tTransferAmount (#691)
Variable KYC._transferBothExcluded(address,address,uint256).rTransferAmount (#601) is too similar to KYC._transferFromExcluded(address,address,uint256).tTransferAmount (#844)
Variable KYC._transferFromExcluded(address,address,uint256).rTransferAmount (#844) is too similar to KYC._getValues(uint256).tTransferAmount (#683)
Variable KYC._transferToExcluded(address,address,uint256).rTransferAmount (#834) is too similar to KYC._getTValues(uint256).tTransferAmount (#691)
Variable KYC.reflectionFromToken(uint256,bool).rTransferAmount (#567) is too similar to KYC._transferToExcluded(address,address,uint256).tTransferAmount (#834)
Variable KYC._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#699) is too similar to KYC._transferToExcluded(address,address,uint256).tTransferAmount (#834)
Variable KYC._transferBothExcluded(address,address,uint256).rTransferAmount (#601) is too similar to KYC._transferToExcluded(address,address,uint256).tTransferAmount (#834)
Variable KYC._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#699) is too similar to KYC._getValues(uint256).tTransferAmount (#683)
Variable KYC._transferBothExcluded(address,address,uint256).rTransferAmount (#601) is too similar to KYC._getValues(uint256).tTransferAmount (#683)
Variable KYC.reflectionFromToken(uint256,bool).rTransferAmount (#567) is too similar to KYC._getValues(uint256).tTransferAmount (#683)
Variable KYC._transferToExcluded(address,address,uint256).rTransferAmount (#834) is too similar to KYC._getValues(uint256).tTransferAmount (#683)
Variable KYC._transferStandard(address,address,uint256).rTransferAmount (#825) is too similar to KYC._transferFromExcluded(address,address,uint256).tTransferAmount (#844)
Variable KYC._transferStandard(address,address,uint256).rTransferAmount (#825) is too similar to KYC._getTValues(uint256).tTransferAmount (#691)
Variable KYC._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#699) is too similar to KYC._transferStandard(address,address,uint256).tTransferAmount (#825)
Variable KYC._transferStandard(address,address,uint256).rTransferAmount (#825) is too similar to KYC._transferToExcluded(address,address,uint256).tTransferAmount (#834)
Variable KYC._transferFromExcluded(address,address,uint256).rTransferAmount (#844) is too similar to KYC._getTValues(uint256).tTransferAmount (#691)
Prevent variables from having similar names.
Additional information: link
KYC.slitherConstructorVariables() (#408-883) uses literals with too many digits:
- _tTotal = 1000000000000 * 10 ** 9 (#432)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
KYC._decimals (#439) should be constant
KYC._name (#437) should be constant
KYC._symbol (#438) should be constant
KYC._tTotal (#432) should be constant
KYC.botscantrade (#427) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#162-165)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#167-171)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#173-175)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#177-182)
unlock() should be declared external:
- Ownable.unlock() (#184-189)
name() should be declared external:
- KYC.name() (#493-495)
symbol() should be declared external:
- KYC.symbol() (#497-499)
decimals() should be declared external:
- KYC.decimals() (#501-503)
totalSupply() should be declared external:
- KYC.totalSupply() (#505-507)
transfer(address,uint256) should be declared external:
- KYC.transfer(address,uint256) (#514-517)
allowance(address,address) should be declared external:
- KYC.allowance(address,address) (#519-521)
approve(address,uint256) should be declared external:
- KYC.approve(address,uint256) (#523-526)
transferFrom(address,address,uint256) should be declared external:
- KYC.transferFrom(address,address,uint256) (#528-532)
increaseAllowance(address,uint256) should be declared external:
- KYC.increaseAllowance(address,uint256) (#534-537)
decreaseAllowance(address,uint256) should be declared external:
- KYC.decreaseAllowance(address,uint256) (#539-542)
isExcludedFromReward(address) should be declared external:
- KYC.isExcludedFromReward(address) (#544-546)
totalFees() should be declared external:
- KYC.totalFees() (#548-550)
deliver(uint256) should be declared external:
- KYC.deliver(uint256) (#552-559)
reflectionFromToken(uint256,bool) should be declared external:
- KYC.reflectionFromToken(uint256,bool) (#561-570)
excludeFromReward(address) should be declared external:
- KYC.excludeFromReward(address) (#578-586)
excludeFromFee(address) should be declared external:
- KYC.excludeFromFee(address) (#617-619)
includeInFee(address) should be declared external:
- KYC.includeInFee(address) (#621-623)
setfeeaddress(address) should be declared external:
- KYC.setfeeaddress(address) (#625-627)
clearStuckBalance() should be declared external:
- KYC.clearStuckBalance() (#639-641)
getBotWalletStatus(address) should be declared external:
- KYC.getBotWalletStatus(address) (#657-659)
setFees(uint256,uint256) should be declared external:
- KYC.setFees(uint256,uint256) (#666-672)
isExcludedFromFee(address) should be declared external:
- KYC.isExcludedFromFee(address) (#755-757)
depositLPFee(uint256,address) should be declared external:
- KYC.depositLPFee(uint256,address) (#853-865)
addPair(address,address) should be declared external:
- KYC.addPair(address,address) (#875-880)
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