Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
DeAi._transfer(address,address,uint256) (#977-1045) performs a multiplication on the result of a division:
-sellAmount = amount.mul(_ownerSellPercent).div(10 ** 4) (#1004)
-rSellAmount = sellAmount.mul(currentRate) (#1008)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in DeAi._transfer(address,address,uint256) (#977-1045):
External calls:
- swapTokensForEth(contractTokenBalance) (#1032)
- pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,owner(),block.timestamp) (#1056-1063)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1044)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1100)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1108)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1127)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1101)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1118)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1110)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1119)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1129)
- _tokenTransfer(from,to,amount,takeFee) (#1044)
- _rTotal = _rTotal.sub(rFee) (#895)
- _tokenTransfer(from,to,amount,takeFee) (#1044)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1126)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1117)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1109)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1128)
Apply the check-effects-interactions pattern.
Additional information: link
DeAi.allowance(address,address).owner (#761) shadows:
- Ownable.owner() (#581-583) (function)
DeAi._approve(address,address,uint256).owner (#957) shadows:
- Ownable.owner() (#581-583) (function)
Rename the local variables that shadow another component.
Additional information: link
DeAi.setTaxFeePercent(uint256) (#860-862) should emit an event for:
- _taxFee = taxFee (#861)
DeAi.setOwnerSellPercent(uint256) (#864-866) should emit an event for:
- _ownerSellPercent = ownerSell (#865)
DeAi.setMaxTxPercent(uint256) (#868-872) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 4) (#869-871)
Emit an event for critical parameter changes.
Additional information: link
DeAi.transferContractValue(address).recipient (#1071) lacks a zero-check on :
- (success) = recipient.call{value: amount}() (#1073)
Check that the address is not zero.
Additional information: link
Reentrancy in DeAi._transfer(address,address,uint256) (#977-1045):
External calls:
- swapTokensForEth(contractTokenBalance) (#1032)
- pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,owner(),block.timestamp) (#1056-1063)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1044)
- _previousTaxFee = _taxFee (#944)
- _tokenTransfer(from,to,amount,takeFee) (#1044)
- _tFeeTotal = _tFeeTotal.add(tFee) (#896)
- _tokenTransfer(from,to,amount,takeFee) (#1044)
- _taxFee = _previousTaxFee (#950)
- _taxFee = 0 (#946)
Reentrancy in DeAi.constructor() (#713-733):
External calls:
- pancakeswapV2Pair = IPancakeswapV2Factory(_pancakeswapV2Router.factory()).createPair(address(this),_pancakeswapV2Router.WETH()) (#720)
State variables written after the call(s):
- _isExcluded[pancakeswapV2Pair] = true (#729)
- _isExcluded[address(this)] = true (#730)
- _isExcludedFromFee[owner()] = true (#726)
- _isExcludedFromFee[address(this)] = true (#727)
- pancakeswapV2Router = _pancakeswapV2Router (#723)
Reentrancy in DeAi.transferFrom(address,address,uint256) (#770-774):
External calls:
- _transfer(sender,recipient,amount) (#771)
- pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,owner(),block.timestamp) (#1056-1063)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#772)
- _allowances[owner][spender] = amount (#961)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in DeAi._transfer(address,address,uint256) (#977-1045):
External calls:
- swapTokensForEth(contractTokenBalance) (#1032)
- pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,owner(),block.timestamp) (#1056-1063)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1103)
- _tokenTransfer(from,to,amount,takeFee) (#1044)
- Transfer(sender,recipient,tTransferAmount) (#1112)
- _tokenTransfer(from,to,amount,takeFee) (#1044)
- Transfer(sender,recipient,tTransferAmount) (#1121)
- _tokenTransfer(from,to,amount,takeFee) (#1044)
- Transfer(sender,recipient,tTransferAmount) (#1131)
- _tokenTransfer(from,to,amount,takeFee) (#1044)
Reentrancy in DeAi.constructor() (#713-733):
External calls:
- pancakeswapV2Pair = IPancakeswapV2Factory(_pancakeswapV2Router.factory()).createPair(address(this),_pancakeswapV2Router.WETH()) (#720)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#732)
Reentrancy in DeAi.transferFrom(address,address,uint256) (#770-774):
External calls:
- _transfer(sender,recipient,amount) (#771)
- pancakeswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,owner(),block.timestamp) (#1056-1063)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#962)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#772)
Apply the check-effects-interactions pattern.
Additional information: link
DeAi.checkIDOCondition() (#882-889) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp > (launchAt + IDOUnlockTime) (#883)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#362-372) uses assembly
- INLINE ASM (#368-370)
Address.verifyCallResult(bool,bytes,string) (#531-551) uses assembly
- INLINE ASM (#543-546)
Do not use evm assembly.
Additional information: link
DeAi.includeInReward(address) (#829-840) has costly operations inside a loop:
- _excluded.pop() (#836)
Use a local variable to hold the loop computation result.
Additional information: link
Address.functionCall(address,bytes) (#415-417) is never used and should be removed
Address.functionCall(address,bytes,string) (#425-431) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#444-450) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#458-469) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#504-506) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#514-523) is never used and should be removed
Address.functionStaticCall(address,bytes) (#477-479) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#487-496) is never used and should be removed
Address.isContract(address) (#362-372) is never used and should be removed
Address.sendValue(address,uint256) (#390-395) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (#531-551) is never used and should be removed
Context._msgData() (#335-337) is never used and should be removed
DeAi.deliver(uint256) (#794-801) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#282-291) is never used and should be removed
SafeMath.mod(uint256,uint256) (#242-244) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#308-317) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#113-119) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#155-160) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#167-172) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#138-148) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#126-131) is never used and should be removed
Remove unused functions.
Additional information: link
DeAi._rTotal (#683) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
DeAi._previousTaxFee (#695) is set pre-construction with a non-constant function or state variable:
- _taxFee
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
Low level call in Address.sendValue(address,uint256) (#390-395):
- (success) = recipient.call{value: amount}() (#393)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#458-469):
- (success,returndata) = target.call{value: value}(data) (#467)
Low level call in Address.functionStaticCall(address,bytes,string) (#487-496):
- (success,returndata) = target.staticcall(data) (#494)
Low level call in Address.functionDelegateCall(address,bytes,string) (#514-523):
- (success,returndata) = target.delegatecall(data) (#521)
Low level call in DeAi.transferContractValue(address) (#1071-1075):
- (success) = recipient.call{value: amount}() (#1073)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IPancakeswapV2Router01.WETH() (#629) is not in mixedCase
Parameter DeAi.calculateTaxFee(uint256)._amount (#935) is not in mixedCase
Variable DeAi.IDOEnabled (#690) is not in mixedCase
Variable DeAi.IDOThresholdAmount (#691) is not in mixedCase
Variable DeAi.IDOUnlockTime (#692) is not in mixedCase
Variable DeAi._taxFee (#694) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable DeAi._getRValues(uint256,uint256,uint256).rTransferAmount (#914) is too similar to DeAi._transferFromExcluded(address,address,uint256).tTransferAmount (#1116)
Variable DeAi._transferBothExcluded(address,address,uint256).rTransferAmount (#1125) is too similar to DeAi._getTValues(uint256).tTransferAmount (#907)
Variable DeAi._transferStandard(address,address,uint256).rTransferAmount (#1099) is too similar to DeAi._transferFromExcluded(address,address,uint256).tTransferAmount (#1116)
Variable DeAi._transferToExcluded(address,address,uint256).rTransferAmount (#1107) is too similar to DeAi._getTValues(uint256).tTransferAmount (#907)
Variable DeAi.reflectionFromToken(uint256,bool).rTransferAmount (#809) is too similar to DeAi._transferStandard(address,address,uint256).tTransferAmount (#1099)
Variable DeAi._transferBothExcluded(address,address,uint256).rTransferAmount (#1125) is too similar to DeAi._transferBothExcluded(address,address,uint256).tTransferAmount (#1125)
Variable DeAi._getValues(uint256).rTransferAmount (#901) is too similar to DeAi._getTValues(uint256).tTransferAmount (#907)
Variable DeAi.reflectionFromToken(uint256,bool).rTransferAmount (#809) is too similar to DeAi._getValues(uint256).tTransferAmount (#900)
Variable DeAi._transferBothExcluded(address,address,uint256).rTransferAmount (#1125) is too similar to DeAi._transferToExcluded(address,address,uint256).tTransferAmount (#1107)
Variable DeAi._transferFromExcluded(address,address,uint256).rTransferAmount (#1116) is too similar to DeAi._transferFromExcluded(address,address,uint256).tTransferAmount (#1116)
Variable DeAi._getRValues(uint256,uint256,uint256).rTransferAmount (#914) is too similar to DeAi._transferStandard(address,address,uint256).tTransferAmount (#1099)
Variable DeAi._transferToExcluded(address,address,uint256).rTransferAmount (#1107) is too similar to DeAi._transferToExcluded(address,address,uint256).tTransferAmount (#1107)
Variable DeAi.reflectionFromToken(uint256,bool).rTransferAmount (#809) is too similar to DeAi._getTValues(uint256).tTransferAmount (#907)
Variable DeAi._transferBothExcluded(address,address,uint256).rTransferAmount (#1125) is too similar to DeAi._transferFromExcluded(address,address,uint256).tTransferAmount (#1116)
Variable DeAi._transferStandard(address,address,uint256).rTransferAmount (#1099) is too similar to DeAi._transferStandard(address,address,uint256).tTransferAmount (#1099)
Variable DeAi._getValues(uint256).rTransferAmount (#901) is too similar to DeAi._transferToExcluded(address,address,uint256).tTransferAmount (#1107)
Variable DeAi._transferToExcluded(address,address,uint256).rTransferAmount (#1107) is too similar to DeAi._transferFromExcluded(address,address,uint256).tTransferAmount (#1116)
Variable DeAi.reflectionFromToken(uint256,bool).rTransferAmount (#809) is too similar to DeAi._transferBothExcluded(address,address,uint256).tTransferAmount (#1125)
Variable DeAi._getValues(uint256).rTransferAmount (#901) is too similar to DeAi._transferFromExcluded(address,address,uint256).tTransferAmount (#1116)
Variable DeAi._getRValues(uint256,uint256,uint256).rTransferAmount (#914) is too similar to DeAi._getTValues(uint256).tTransferAmount (#907)
Variable DeAi.reflectionFromToken(uint256,bool).rTransferAmount (#809) is too similar to DeAi._transferToExcluded(address,address,uint256).tTransferAmount (#1107)
Variable DeAi._transferStandard(address,address,uint256).rTransferAmount (#1099) is too similar to DeAi._getTValues(uint256).tTransferAmount (#907)
Variable DeAi.reflectionFromToken(uint256,bool).rTransferAmount (#809) is too similar to DeAi._transferFromExcluded(address,address,uint256).tTransferAmount (#1116)
Variable DeAi._transferBothExcluded(address,address,uint256).rTransferAmount (#1125) is too similar to DeAi._transferStandard(address,address,uint256).tTransferAmount (#1099)
Variable DeAi._transferBothExcluded(address,address,uint256).rTransferAmount (#1125) is too similar to DeAi._getValues(uint256).tTransferAmount (#900)
Variable DeAi._transferToExcluded(address,address,uint256).rTransferAmount (#1107) is too similar to DeAi._transferStandard(address,address,uint256).tTransferAmount (#1099)
Variable DeAi._getValues(uint256).rTransferAmount (#901) is too similar to DeAi._transferStandard(address,address,uint256).tTransferAmount (#1099)
Variable DeAi._transferFromExcluded(address,address,uint256).rTransferAmount (#1116) is too similar to DeAi._getTValues(uint256).tTransferAmount (#907)
Variable DeAi._transferStandard(address,address,uint256).rTransferAmount (#1099) is too similar to DeAi._transferBothExcluded(address,address,uint256).tTransferAmount (#1125)
Variable DeAi._getRValues(uint256,uint256,uint256).rTransferAmount (#914) is too similar to DeAi._transferToExcluded(address,address,uint256).tTransferAmount (#1107)
Variable DeAi._getRValues(uint256,uint256,uint256).rTransferAmount (#914) is too similar to DeAi._transferBothExcluded(address,address,uint256).tTransferAmount (#1125)
Variable DeAi._transferStandard(address,address,uint256).rTransferAmount (#1099) is too similar to DeAi._getValues(uint256).tTransferAmount (#900)
Variable DeAi._transferFromExcluded(address,address,uint256).rTransferAmount (#1116) is too similar to DeAi._transferStandard(address,address,uint256).tTransferAmount (#1099)
Variable DeAi._getRValues(uint256,uint256,uint256).rTransferAmount (#914) is too similar to DeAi._getValues(uint256).tTransferAmount (#900)
Variable DeAi._getValues(uint256).rTransferAmount (#901) is too similar to DeAi._transferBothExcluded(address,address,uint256).tTransferAmount (#1125)
Variable DeAi._transferToExcluded(address,address,uint256).rTransferAmount (#1107) is too similar to DeAi._transferBothExcluded(address,address,uint256).tTransferAmount (#1125)
Variable DeAi._transferFromExcluded(address,address,uint256).rTransferAmount (#1116) is too similar to DeAi._transferToExcluded(address,address,uint256).tTransferAmount (#1107)
Variable DeAi._transferFromExcluded(address,address,uint256).rTransferAmount (#1116) is too similar to DeAi._transferBothExcluded(address,address,uint256).tTransferAmount (#1125)
Variable DeAi._getValues(uint256).rTransferAmount (#901) is too similar to DeAi._getValues(uint256).tTransferAmount (#900)
Variable DeAi._transferToExcluded(address,address,uint256).rTransferAmount (#1107) is too similar to DeAi._getValues(uint256).tTransferAmount (#900)
Variable DeAi._transferFromExcluded(address,address,uint256).rTransferAmount (#1116) is too similar to DeAi._getValues(uint256).tTransferAmount (#900)
Variable DeAi._transferStandard(address,address,uint256).rTransferAmount (#1099) is too similar to DeAi._transferToExcluded(address,address,uint256).tTransferAmount (#1107)
Prevent variables from having similar names.
Additional information: link
DeAi.slitherConstructorVariables() (#664-1134) uses literals with too many digits:
- IDOThresholdAmount = 250000000 (#691)
DeAi.slitherConstructorVariables() (#664-1134) uses literals with too many digits:
- IDOUnlockTime = 18400000 (#692)
DeAi.slitherConstructorVariables() (#664-1134) uses literals with too many digits:
- _maxTxAmount = 50000000 * 10 ** 18 (#699)
DeAi.slitherConstructorVariables() (#664-1134) uses literals with too many digits:
- _maxTxAmountIDO = 5000000 * 10 ** 18 (#700)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
DeAi.IDOThresholdAmount (#691) should be constant
DeAi.IDOUnlockTime (#692) should be constant
DeAi._decimals (#688) should be constant
DeAi._maxTxAmountIDO (#700) should be constant
DeAi._name (#686) should be constant
DeAi._symbol (#687) should be constant
DeAi._tTotal (#682) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#600-602)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#608-611)
name() should be declared external:
- DeAi.name() (#735-737)
symbol() should be declared external:
- DeAi.symbol() (#739-741)
decimals() should be declared external:
- DeAi.decimals() (#743-745)
totalSupply() should be declared external:
- DeAi.totalSupply() (#747-749)
transfer(address,uint256) should be declared external:
- DeAi.transfer(address,uint256) (#756-759)
allowance(address,address) should be declared external:
- DeAi.allowance(address,address) (#761-763)
approve(address,uint256) should be declared external:
- DeAi.approve(address,uint256) (#765-768)
transferFrom(address,address,uint256) should be declared external:
- DeAi.transferFrom(address,address,uint256) (#770-774)
increaseAllowance(address,uint256) should be declared external:
- DeAi.increaseAllowance(address,uint256) (#776-779)
decreaseAllowance(address,uint256) should be declared external:
- DeAi.decreaseAllowance(address,uint256) (#781-784)
isExcludedFromReward(address) should be declared external:
- DeAi.isExcludedFromReward(address) (#786-788)
totalFees() should be declared external:
- DeAi.totalFees() (#790-792)
reflectionFromToken(uint256,bool) should be declared external:
- DeAi.reflectionFromToken(uint256,bool) (#803-812)
excludeFromReward(address) should be declared external:
- DeAi.excludeFromReward(address) (#820-827)
excludeFromFee(address) should be declared external:
- DeAi.excludeFromFee(address) (#842-844)
includeInFee(address) should be declared external:
- DeAi.includeInFee(address) (#846-848)
isExcludedFromFee(address) should be declared external:
- DeAi.isExcludedFromFee(address) (#953-955)
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 price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts