Angel Lelga is the great figure behind Angel Token who is a talented artist, singer and successful businesswoman. Her interest in Cryptocurrency is a great inspiration to make more social impact for all people in the creation of Angel Token.
angeltoken.swapETHForTokens(uint256) (#775-788) sends eth to arbitrary user
Dangerous calls:
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
angeltoken.addLiquidity(uint256,uint256) (#816-829) sends eth to arbitrary user
Dangerous calls:
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in angeltoken._transfer(address,address,uint256) (#696-741):
External calls:
- buyBackTokens(balance.div(100)) (#732)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- swapAndLiquify(swapTokensAtAmount) (#735)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#840-846)
External calls sending eth:
- buyBackTokens(balance.div(100)) (#732)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- swapAndLiquify(swapTokensAtAmount) (#735)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- address(operationsAddress).transfer(operationsAmt) (#812)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- _rOwned[marketingAddress] += rMarketing (#620)
- _rOwned[address(this)] += rOperations (#589)
- _rOwned[address(this)] += rLiquidity (#610)
- _rOwned[address(this)] += rBuyback (#600)
- _rOwned[sender] = _rOwned[sender] - s.rAmount (#756)
- _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount (#757)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- _rTotal -= rRfi (#580)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- _tOwned[address(this)] += tBuyback (#598)
- _tOwned[marketingAddress] += tMarketing (#618)
- _tOwned[address(this)] += tOperations (#587)
- _tOwned[sender] = _tOwned[sender] - tAmount (#750)
- _tOwned[address(this)] += tLiquidity (#608)
- _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount (#753)
- swapAndLiquify(swapTokensAtAmount) (#735)
- swapping = true (#408)
- swapping = false (#410)
Apply the check-effects-interactions pattern.
Additional information: link
angeltoken.rescueBEP20Tokens(address) (#899-901) ignores return value by IERC20(tokenAddress).transfer(msg.sender,IERC20(tokenAddress).balanceOf(address(this))) (#900)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Combination 1: Reentrancy vulnerabilities + 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.
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.
Combination 3: Reentrancy vulnerabilities + Unchecked transfer vulnerability. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
angeltoken.swapAndLiquify(uint256) (#790-814) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - feeRates.liquidity) (#801)
-bnbToAddLiquidityWith = unitBalance * feeRates.liquidity (#802)
angeltoken.swapAndLiquify(uint256) (#790-814) performs a multiplication on the result of a division:
-unitBalance = deltaBalance / (denominator - feeRates.liquidity) (#801)
-operationsAmt = unitBalance * 2 * feeRates.operations (#810)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in angeltoken.setRouterAddress(address) (#904-915):
External calls:
- pair = IFactory(_newRouter.factory()).createPair(address(this),_newRouter.WETH()) (#909)
State variables written after the call(s):
- router = _newRouter (#914)
Apply the check-effects-interactions pattern.
Additional information: link
angeltoken._transfer(address,address,uint256).isSale (#737) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
angeltoken.addLiquidity(uint256,uint256) (#816-829) ignores return value by router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
Ensure that all the return values of the function calls are used.
Additional information: link
angeltoken.allowance(address,address).owner (#455) shadows:
- Ownable.owner() (#250-252) (function)
angeltoken._approve(address,address,uint256).owner (#689) shadows:
- Ownable.owner() (#250-252) (function)
Rename the local variables that shadow another component.
Additional information: link
angeltoken.setMaxWalletPercent(uint256) (#555-559) should emit an event for:
- _maxWalletSize = _tTotal.mul(maxWallPercent).div(10 ** 2) (#556-558)
angeltoken.setMaxBuyAndSellAmount(uint256,uint256) (#863-866) should emit an event for:
- maxBuyAmount = _maxBuyamount * 10 ** 9 (#864)
- maxSellAmount = _maxSellAmount * 10 ** 9 (#865)
angeltoken.updateSwapTokensAtAmount(uint256) (#868-870) should emit an event for:
- swapTokensAtAmount = amount * 10 ** _decimals (#869)
angeltoken.setBuybackUpperLimit(uint256) (#885-887) should emit an event for:
- buyBackUpperLimit = buyBackLimit * 10 ** 15 (#886)
Emit an event for critical parameter changes.
Additional information: link
angeltoken.constructor(address)._pair (#415-416) lacks a zero-check on :
- pair = _pair (#419)
Check that the address is not zero.
Additional information: link
Reentrancy in angeltoken._transfer(address,address,uint256) (#696-741):
External calls:
- buyBackTokens(balance.div(100)) (#732)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- swapAndLiquify(swapTokensAtAmount) (#735)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#840-846)
External calls sending eth:
- buyBackTokens(balance.div(100)) (#732)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- swapAndLiquify(swapTokensAtAmount) (#735)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- address(operationsAddress).transfer(operationsAmt) (#812)
State variables written after the call(s):
- swapAndLiquify(swapTokensAtAmount) (#735)
- _allowances[owner][spender] = amount (#692)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- totFeesPaid.buyBack += tBuyback (#594)
- totFeesPaid.operations += tOperations (#585)
- totFeesPaid.marketing += tMarketing (#614)
- totFeesPaid.liquidity += tLiquidity (#604)
- totFeesPaid.rfi += tRfi (#581)
Reentrancy in angeltoken.constructor(address) (#413-427):
External calls:
- _pair = IFactory(_router.factory()).createPair(address(this),_router.WETH()) (#415-416)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#422)
- _isExcludedFromFee[marketingAddress] = true (#423)
- _isExcludedFromFee[operationsAddress] = true (#424)
- _rOwned[owner()] = _rTotal (#421)
- pair = _pair (#419)
- router = _router (#418)
Reentrancy in angeltoken.swapAndLiquify(uint256) (#790-814):
External calls:
- swapTokensForBNB(toSwap) (#798)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#840-846)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#806)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
External calls sending eth:
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#806)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
State variables written after the call(s):
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#806)
- _allowances[owner][spender] = amount (#692)
Reentrancy in angeltoken.transferFrom(address,address,uint256) (#464-468):
External calls:
- _transfer(sender,recipient,amount) (#465)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#840-846)
External calls sending eth:
- _transfer(sender,recipient,amount) (#465)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- address(operationsAddress).transfer(operationsAmt) (#812)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#466)
- _allowances[owner][spender] = amount (#692)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in angeltoken._transfer(address,address,uint256) (#696-741):
External calls:
- buyBackTokens(balance.div(100)) (#732)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- swapAndLiquify(swapTokensAtAmount) (#735)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#840-846)
External calls sending eth:
- buyBackTokens(balance.div(100)) (#732)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- swapAndLiquify(swapTokensAtAmount) (#735)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- address(operationsAddress).transfer(operationsAmt) (#812)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#693)
- swapAndLiquify(swapTokensAtAmount) (#735)
- Transfer(sender,recipient,s.tTransferAmount) (#763)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- Transfer(sender,address(this),s.tLiquidity + s.tOperations + s.tBuyback) (#764)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- Transfer(sender,marketingAddress,s.tMarketing) (#765)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
Reentrancy in angeltoken.constructor(address) (#413-427):
External calls:
- _pair = IFactory(_router.factory()).createPair(address(this),_router.WETH()) (#415-416)
Event emitted after the call(s):
- Transfer(address(0),owner(),_tTotal) (#426)
Reentrancy in angeltoken.swapAndLiquify(uint256) (#790-814):
External calls:
- swapTokensForBNB(toSwap) (#798)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#840-846)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#806)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
External calls sending eth:
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#806)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#693)
- addLiquidity(tokensToAddLiquidityWith,bnbToAddLiquidityWith) (#806)
Reentrancy in angeltoken.transferFrom(address,address,uint256) (#464-468):
External calls:
- _transfer(sender,recipient,amount) (#465)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#840-846)
External calls sending eth:
- _transfer(sender,recipient,amount) (#465)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- address(operationsAddress).transfer(operationsAmt) (#812)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#693)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#466)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#138-145) uses assembly
- INLINE ASM (#141-143)
Address._verifyCallResult(bool,bytes,string) (#217-235) uses assembly
- INLINE ASM (#227-230)
Do not use evm assembly.
Additional information: link
angeltoken.includeInReward(address) (#528-539) has costly operations inside a loop:
- _excluded.pop() (#535)
Use a local variable to hold the loop computation result.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#217-235) is never used and should be removed
Address.functionCall(address,bytes) (#154-156) is never used and should be removed
Address.functionCall(address,bytes,string) (#158-164) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#166-172) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#174-185) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#202-204) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#206-215) is never used and should be removed
Address.functionStaticCall(address,bytes) (#187-189) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#191-200) is never used and should be removed
Address.isContract(address) (#138-145) is never used and should be removed
Address.sendValue(address,uint256) (#147-152) is never used and should be removed
Context._msgData() (#129-132) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#99-108) is never used and should be removed
SafeMath.mod(uint256,uint256) (#84-86) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#110-119) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#30-36) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#54-59) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#61-66) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#45-52) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#38-43) is never used and should be removed
Remove unused functions.
Additional information: link
angeltoken._rTotal (#337) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
angeltoken.maxBuyAmount (#339) is set pre-construction with a non-constant function or state variable:
- _tTotal.mul(2).div(100)
angeltoken.maxSellAmount (#340) is set pre-construction with a non-constant function or state variable:
- _tTotal.mul(1).div(100)
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.0 (#2) allows old versions
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) (#147-152):
- (success) = recipient.call{value: amount}() (#150)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#174-185):
- (success,returndata) = target.call{value: value}(data) (#183)
Low level call in Address.functionStaticCall(address,bytes,string) (#191-200):
- (success,returndata) = target.staticcall(data) (#198)
Low level call in Address.functionDelegateCall(address,bytes,string) (#206-215):
- (success,returndata) = target.delegatecall(data) (#213)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IRouter.WETH() (#282) is not in mixedCase
Contract angeltoken (#311-920) is not in CapWords
Struct angeltoken.feeRatesStruct (#353-359) is not in CapWords
Struct angeltoken.valuesFromGetValues (#387-401) is not in CapWords
Parameter angeltoken.setFeeRates(uint256,uint256,uint256,uint256,uint256)._rfi (#561) is not in mixedCase
Parameter angeltoken.setFeeRates(uint256,uint256,uint256,uint256,uint256)._operations (#561) is not in mixedCase
Parameter angeltoken.setFeeRates(uint256,uint256,uint256,uint256,uint256)._marketing (#561) is not in mixedCase
Parameter angeltoken.setFeeRates(uint256,uint256,uint256,uint256,uint256)._liquidity (#561) is not in mixedCase
Parameter angeltoken.setFeeRates(uint256,uint256,uint256,uint256,uint256)._buyback (#561) is not in mixedCase
Parameter angeltoken.setSellFeeRates(uint256,uint256,uint256,uint256,uint256)._rfi (#570) is not in mixedCase
Parameter angeltoken.setSellFeeRates(uint256,uint256,uint256,uint256,uint256)._operations (#570) is not in mixedCase
Parameter angeltoken.setSellFeeRates(uint256,uint256,uint256,uint256,uint256)._marketing (#570) is not in mixedCase
Parameter angeltoken.setSellFeeRates(uint256,uint256,uint256,uint256,uint256)._liquidity (#570) is not in mixedCase
Parameter angeltoken.setSellFeeRates(uint256,uint256,uint256,uint256,uint256)._buyback (#570) is not in mixedCase
Parameter angeltoken.setMaxBuyAndSellAmount(uint256,uint256)._maxBuyamount (#863) is not in mixedCase
Parameter angeltoken.setMaxBuyAndSellAmount(uint256,uint256)._maxSellAmount (#863) is not in mixedCase
Parameter angeltoken.updateSwapEnabled(bool)._enabled (#872) is not in mixedCase
Parameter angeltoken.updateBuybackEnabled(bool)._enabled (#876) is not in mixedCase
Parameter angeltoken.setAntibot(address,bool)._bot (#880) is not in mixedCase
Constant angeltoken._decimals (#333) is not in UPPER_CASE_WITH_UNDERSCORES
Variable angeltoken._maxWalletSize (#342) is not in mixedCase
Constant angeltoken.deadAddress (#347) is not in UPPER_CASE_WITH_UNDERSCORES
Constant angeltoken._name (#349) is not in UPPER_CASE_WITH_UNDERSCORES
Constant angeltoken._symbol (#350) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#130)" inContext (#124-133)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in angeltoken._transfer(address,address,uint256) (#696-741):
External calls:
- swapAndLiquify(swapTokensAtAmount) (#735)
- address(operationsAddress).transfer(operationsAmt) (#812)
External calls sending eth:
- buyBackTokens(balance.div(100)) (#732)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- swapAndLiquify(swapTokensAtAmount) (#735)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- address(operationsAddress).transfer(operationsAmt) (#812)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- _rOwned[marketingAddress] += rMarketing (#620)
- _rOwned[address(this)] += rOperations (#589)
- _rOwned[address(this)] += rLiquidity (#610)
- _rOwned[address(this)] += rBuyback (#600)
- _rOwned[sender] = _rOwned[sender] - s.rAmount (#756)
- _rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount (#757)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- _rTotal -= rRfi (#580)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- _tOwned[address(this)] += tBuyback (#598)
- _tOwned[marketingAddress] += tMarketing (#618)
- _tOwned[address(this)] += tOperations (#587)
- _tOwned[sender] = _tOwned[sender] - tAmount (#750)
- _tOwned[address(this)] += tLiquidity (#608)
- _tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount (#753)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- totFeesPaid.buyBack += tBuyback (#594)
- totFeesPaid.operations += tOperations (#585)
- totFeesPaid.marketing += tMarketing (#614)
- totFeesPaid.liquidity += tLiquidity (#604)
- totFeesPaid.rfi += tRfi (#581)
Event emitted after the call(s):
- Transfer(sender,recipient,s.tTransferAmount) (#763)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- Transfer(sender,address(this),s.tLiquidity + s.tOperations + s.tBuyback) (#764)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
- Transfer(sender,marketingAddress,s.tMarketing) (#765)
- _tokenTransfer(from,to,amount,! (_isExcludedFromFee[from] || _isExcludedFromFee[to]),isSale) (#740)
Reentrancy in angeltoken.transferFrom(address,address,uint256) (#464-468):
External calls:
- _transfer(sender,recipient,amount) (#465)
- address(operationsAddress).transfer(operationsAmt) (#812)
External calls sending eth:
- _transfer(sender,recipient,amount) (#465)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#821-828)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#782-787)
- address(operationsAddress).transfer(operationsAmt) (#812)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#466)
- _allowances[owner][spender] = amount (#692)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#693)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#466)
Apply the check-effects-interactions pattern.
Additional information: link
Variable angeltoken.setSellFeeRates(uint256,uint256,uint256,uint256,uint256)._operations (#570) is too similar to angeltoken._getRValues(angeltoken.valuesFromGetValues,uint256,bool,uint256).rOperations (#656)
Variable angeltoken.setSellFeeRates(uint256,uint256,uint256,uint256,uint256)._operations (#570) is too similar to angeltoken._takeOperations(uint256,uint256).rOperations (#584)
Variable angeltoken.setSellFeeRates(uint256,uint256,uint256,uint256,uint256)._operations (#570) is too similar to angeltoken._takeOperations(uint256,uint256).tOperations (#584)
Variable angeltoken.setFeeRates(uint256,uint256,uint256,uint256,uint256)._operations (#561) is too similar to angeltoken._getRValues(angeltoken.valuesFromGetValues,uint256,bool,uint256).rOperations (#656)
Variable angeltoken.setFeeRates(uint256,uint256,uint256,uint256,uint256)._operations (#561) is too similar to angeltoken._takeOperations(uint256,uint256).rOperations (#584)
Variable angeltoken._takeOperations(uint256,uint256).rOperations (#584) is too similar to angeltoken._takeOperations(uint256,uint256).tOperations (#584)
Variable angeltoken.setFeeRates(uint256,uint256,uint256,uint256,uint256)._operations (#561) is too similar to angeltoken._takeOperations(uint256,uint256).tOperations (#584)
Variable angeltoken._getRValues(angeltoken.valuesFromGetValues,uint256,bool,uint256).rOperations (#656) is too similar to angeltoken._takeOperations(uint256,uint256).tOperations (#584)
Prevent variables from having similar names.
Additional information: link
angeltoken.slitherConstructorVariables() (#311-920) uses literals with too many digits:
- _tTotal = 1000000000000 * 10 ** _decimals (#336)
angeltoken.slitherConstructorVariables() (#311-920) uses literals with too many digits:
- swapTokensAtAmount = 50000000 * 10 ** _decimals (#341)
angeltoken.slitherConstructorVariables() (#311-920) uses literals with too many digits:
- _maxWalletSize = 20000000000 * 10 ** 9 (#342)
angeltoken.slitherConstructorConstantVariables() (#311-920) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#347)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
angeltoken._tTotal (#336) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#259-261)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#263-266)
name() should be declared external:
- angeltoken.name() (#430-432)
symbol() should be declared external:
- angeltoken.symbol() (#433-435)
decimals() should be declared external:
- angeltoken.decimals() (#436-438)
totalSupply() should be declared external:
- angeltoken.totalSupply() (#441-443)
transfer(address,uint256) should be declared external:
- angeltoken.transfer(address,uint256) (#450-453)
allowance(address,address) should be declared external:
- angeltoken.allowance(address,address) (#455-457)
approve(address,uint256) should be declared external:
- angeltoken.approve(address,uint256) (#459-462)
transferFrom(address,address,uint256) should be declared external:
- angeltoken.transferFrom(address,address,uint256) (#464-468)
increaseAllowance(address,uint256) should be declared external:
- angeltoken.increaseAllowance(address,uint256) (#470-473)
decreaseAllowance(address,uint256) should be declared external:
- angeltoken.decreaseAllowance(address,uint256) (#475-478)
isExcludedFromReward(address) should be declared external:
- angeltoken.isExcludedFromReward(address) (#480-482)
deliver(uint256) should be declared external:
- angeltoken.deliver(uint256) (#484-491)
reflectionFromToken(uint256,bool) should be declared external:
- angeltoken.reflectionFromToken(uint256,bool) (#494-503)
excludeFromReward(address) should be declared external:
- angeltoken.excludeFromReward(address) (#519-526)
excludeFromFee(address) should be declared external:
- angeltoken.excludeFromFee(address) (#542-544)
includeInFee(address) should be declared external:
- angeltoken.includeInFee(address) (#546-548)
isExcludedFromFee(address) should be declared external:
- angeltoken.isExcludedFromFee(address) (#551-553)
isBot(address) should be declared external:
- angeltoken.isBot(address) (#889-891)
Use the external attribute for functions never called from the contract.
Additional information: link
Young tokens have high risks of scam / price dump / death
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 Blog account (Reddit or Medium)
Unable to find Discord account