ShibarmyZilla($SZILLA) is a meme token + reward-yielding token. Hold ShibarmyZilla($SZILLA) and earn passive income paid in $SHIBARMY.
ShibarmyZilla.swapBack(uint256) (#1659-1686) sends eth to arbitrary user
Dangerous calls:
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in ShibarmyZilla._transfer(address,address,uint256) (#1508-1621):
External calls:
- swapBack(sellTokens) (#1578)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1633-1639)
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
External calls sending eth:
- swapBack(sellTokens) (#1578)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
State variables written after the call(s):
- super._transfer(from,address(0xdead),fees * 4) (#1596)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#426)
- _balances[recipient] = _balances[recipient].add(amount) (#427)
- super._transfer(from,address(this),fees) (#1597)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#426)
- _balances[recipient] = _balances[recipient].add(amount) (#427)
- super._transfer(from,address(this),fees) (#1603)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#426)
- _balances[recipient] = _balances[recipient].add(amount) (#427)
- super._transfer(from,to,amount) (#1608)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#426)
- _balances[recipient] = _balances[recipient].add(amount) (#427)
- swapping = false (#1581)
Apply the check-effects-interactions pattern.
Additional information: link
DividendPayingToken._withdrawDividendOfUser(address,address) (#1072-1082) ignores return value by IERC20(_rewardToken).transfer(user,_withdrawableDividend) (#1077)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Too many vulnerabilities (Unchecked transfer, Reentrancy vulnerability, etc.). High risk of a scam. DYOR & manual audit are advised.
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) uses a dangerous strict equality:
- from != owner() && to != uniswapV2Pair && block.number == tradingActiveBlock (#1534)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
ShibarmyZilla.swapBack(uint256).success (#1679) is written in both
(success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
(success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
Fix or remove the writes.
Additional information: link
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.
ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) performs a multiplication on the result of a division:
-fees = amount.mul(totalFees).div(100) (#1592)
-super._transfer(from,address(0xdead),fees * 4) (#1596)
ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) performs a multiplication on the result of a division:
-fees = amount.mul(totalFees).div(100) (#1592)
-fees = fees * 5 (#1598)
ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) performs a multiplication on the result of a division:
-fees = amount.mul(totalFees).div(100) (#1592)
-fees = fees.mul(sellFeeIncreaseFactor).div(100) (#1601)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in ShibarmyZilla.constructor() (#1246-1305):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1274-1275)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1280)
- dividendTracker.excludeFromDividends(pair) (#1411)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (#1283)
- dividendTracker.excludeFromDividends(address(this)) (#1284)
- dividendTracker.excludeFromDividends(newOwner) (#1285)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (#1286)
- dividendTracker.excludeFromDividends(address(0xdead)) (#1287)
State variables written after the call(s):
- transferOwnership(newOwner) (#1304)
- _owner = newOwner (#761)
Apply the check-effects-interactions pattern.
Additional information: link
ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) uses tx.origin for authorization: require(bool,string)(_holderLastTransferTimestamp[tx.origin] < block.number,_transfer:: Transfer Delay enabled. Only one purchase per block allowed.) (#1542)
Do not use tx.origin for authorization.
Additional information: link
ShibarmyZilla._transfer(address,address,uint256).iterations (#1616) is a local variable never initialized
ShibarmyZilla._transfer(address,address,uint256).claims (#1616) is a local variable never initialized
ShibarmyZilla._transfer(address,address,uint256).lastProcessedIndex (#1616) is a local variable never initialized
DividendTracker.processAccount(address,bool).paid (#1912) 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
ShibarmyZilla.claim() (#1485-1487) ignores return value by dividendTracker.processAccount(address(msg.sender),false) (#1486)
ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) ignores return value by dividendTracker.process(gas) (#1616-1619)
ShibarmyZilla.addLiquidity(uint256,uint256) (#1643-1657) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
Ensure that all the return values of the function calls are used.
Additional information: link
DividendPayingToken.dividendOf(address,address)._owner (#1088) shadows:
- Ownable._owner (#714) (state variable)
DividendPayingToken.withdrawableDividendOf(address,address)._owner (#1095) shadows:
- Ownable._owner (#714) (state variable)
DividendPayingToken.withdrawnDividendOf(address,address)._owner (#1102) shadows:
- Ownable._owner (#714) (state variable)
DividendPayingToken.accumulativeDividendOf(address,address)._owner (#1112) shadows:
- Ownable._owner (#714) (state variable)
ShibarmyZilla.constructor().totalSupply (#1254) shadows:
- ERC20.totalSupply() (#300-302) (function)
- IERC20.totalSupply() (#148) (function)
Rename the local variables that shadow another component.
Additional information: link
ShibarmyZilla.updateMaxAmount(uint256) (#1357-1360) should emit an event for:
- maxTransactionAmount = newNum * (10 ** 18) (#1359)
ShibarmyZilla.updateMaxWalletAmount(uint256) (#1362-1365) should emit an event for:
- maxWallet = newNum * (10 ** 18) (#1364)
ShibarmyZilla.updateFees(uint256,uint256,uint256) (#1367-1373) should emit an event for:
- marketingFee = _marketingFee (#1368)
- rewardsFee = _rewardsFee (#1369)
- liquidityFee = _liquidityFee (#1370)
- totalFees = marketingFee + rewardsFee + liquidityFee (#1371)
ShibarmyZilla.updateSellPenalty(uint256) (#1375-1378) should emit an event for:
- sellFeeIncreaseFactor = sellFactor (#1377)
ShibarmyZilla.updateSwapTokensAtAmount(uint256) (#1689-1695) should emit an event for:
- swapTokensAtAmount = newAmount (#1693)
Emit an event for critical parameter changes.
Additional information: link
ShibarmyZilla.addPresaleAddressForExclusions(address,address)._presaleAddress (#1312) lacks a zero-check on :
- presaleAddress = _presaleAddress (#1313)
ShibarmyZilla.addPresaleAddressForExclusions(address,address)._presaleRouterAddress (#1312) lacks a zero-check on :
- presaleRouterAddress = _presaleRouterAddress (#1317)
ShibarmyZilla.emergencyPresaleAddressUpdate(address,address)._presaleAddress (#1323) lacks a zero-check on :
- presaleAddress = _presaleAddress (#1324)
ShibarmyZilla.emergencyPresaleAddressUpdate(address,address)._presaleRouterAddress (#1323) lacks a zero-check on :
- presaleRouterAddress = _presaleRouterAddress (#1325)
ShibarmyZilla.updateMarketingWallet(address).newMarketingWallet (#1417) lacks a zero-check on :
- marketingWallet = newMarketingWallet (#1420)
Check that the address is not zero.
Additional information: link
Variable 'ShibarmyZilla._transfer(address,address,uint256).lastProcessedIndex (#1616)' in ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1617)
Variable 'ShibarmyZilla._transfer(address,address,uint256).iterations (#1616)' in ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1617)
Variable 'ShibarmyZilla._transfer(address,address,uint256).claims (#1616)' in ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1617)
Move all variable declarations prior to any usage of the variable, and ensure that reaching a variable declaration does not depend on some conditional if it is used unconditionally.
Additional information: link
Reentrancy in ShibarmyZilla.addPresaleAddressForExclusions(address,address) (#1312-1321):
External calls:
- dividendTracker.excludeFromDividends(_presaleAddress) (#1315)
State variables written after the call(s):
- excludeFromFees(_presaleRouterAddress,true) (#1318)
- _isExcludedFromFees[account] = excluded (#1386)
- excludeFromMaxTransaction(_presaleAddress,true) (#1316)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1381)
- presaleRouterAddress = _presaleRouterAddress (#1317)
Reentrancy in ShibarmyZilla.addPresaleAddressForExclusions(address,address) (#1312-1321):
External calls:
- dividendTracker.excludeFromDividends(_presaleAddress) (#1315)
- dividendTracker.excludeFromDividends(_presaleRouterAddress) (#1319)
State variables written after the call(s):
- excludeFromMaxTransaction(_presaleRouterAddress,true) (#1320)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1381)
Reentrancy in ShibarmyZilla.constructor() (#1246-1305):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1274-1275)
State variables written after the call(s):
- uniswapV2Pair = _uniswapV2Pair (#1278)
- uniswapV2Router = _uniswapV2Router (#1277)
Reentrancy in ShibarmyZilla.constructor() (#1246-1305):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1274-1275)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1280)
- dividendTracker.excludeFromDividends(pair) (#1411)
State variables written after the call(s):
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1280)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1381)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1280)
- automatedMarketMakerPairs[pair] = value (#1406)
Reentrancy in ShibarmyZilla.constructor() (#1246-1305):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1274-1275)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1280)
- dividendTracker.excludeFromDividends(pair) (#1411)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (#1283)
- dividendTracker.excludeFromDividends(address(this)) (#1284)
- dividendTracker.excludeFromDividends(newOwner) (#1285)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (#1286)
- dividendTracker.excludeFromDividends(address(0xdead)) (#1287)
State variables written after the call(s):
- _mint(address(newOwner),totalSupply) (#1303)
- _balances[account] = _balances[account].add(amount) (#446)
- excludeFromFees(newOwner,true) (#1290)
- _isExcludedFromFees[account] = excluded (#1386)
- excludeFromFees(address(this),true) (#1291)
- _isExcludedFromFees[account] = excluded (#1386)
- excludeFromFees(address(0xdead),true) (#1292)
- _isExcludedFromFees[account] = excluded (#1386)
- excludeFromMaxTransaction(newOwner,true) (#1293)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1381)
- excludeFromMaxTransaction(address(this),true) (#1294)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1381)
- excludeFromMaxTransaction(address(dividendTracker),true) (#1295)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1381)
- excludeFromMaxTransaction(address(_uniswapV2Router),true) (#1296)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1381)
- excludeFromMaxTransaction(address(0xdead),true) (#1297)
- _isExcludedMaxTransactionAmount[updAds] = isEx (#1381)
- _mint(address(newOwner),totalSupply) (#1303)
- _totalSupply = _totalSupply.add(amount) (#445)
Reentrancy in DividendPayingToken.distributeDividends() (#1033-1046):
External calls:
- buyTokens(address(this).balance) (#1036)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: bnbAmountInWei}(0,path,address(this),block.timestamp) (#1056-1061)
State variables written after the call(s):
- magnifiedDividendPerShare[rewardToken] = magnifiedDividendPerShare[rewardToken].add((newBalance).mul(magnitude) / totalBalance) (#1039-1041)
- totalDividendsDistributed[rewardToken] = totalDividendsDistributed[rewardToken].add(newBalance) (#1044)
Reentrancy in DividendTracker.processAccount(address,bool) (#1910-1921):
External calls:
- amount = _withdrawDividendOfUser(account,rewardToken) (#1913)
- IERC20(_rewardToken).transfer(user,_withdrawableDividend) (#1077)
State variables written after the call(s):
- lastClaimTimes[account] = block.timestamp (#1915)
Reentrancy in ShibarmyZilla.swapBack(uint256) (#1659-1686):
External calls:
- swapTokensForEth(amountToSwap) (#1669)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1633-1639)
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
- addLiquidity(amountToLiquify,amountBNBLiquidity) (#1684)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
External calls sending eth:
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
- addLiquidity(amountToLiquify,amountBNBLiquidity) (#1684)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
State variables written after the call(s):
- addLiquidity(amountToLiquify,amountBNBLiquidity) (#1684)
- _allowances[owner][spender] = amount (#492)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in ShibarmyZilla._setAutomatedMarketMakerPair(address,bool) (#1405-1415):
External calls:
- dividendTracker.excludeFromDividends(pair) (#1411)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (#1414)
Reentrancy in ShibarmyZilla._transfer(address,address,uint256) (#1508-1621):
External calls:
- swapBack(sellTokens) (#1578)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1633-1639)
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
External calls sending eth:
- swapBack(sellTokens) (#1578)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#428)
- super._transfer(from,address(0xdead),fees * 4) (#1596)
- Transfer(sender,recipient,amount) (#428)
- super._transfer(from,address(this),fees) (#1603)
- Transfer(sender,recipient,amount) (#428)
- super._transfer(from,address(this),fees) (#1597)
- Transfer(sender,recipient,amount) (#428)
- super._transfer(from,to,amount) (#1608)
Reentrancy in ShibarmyZilla._transfer(address,address,uint256) (#1508-1621):
External calls:
- swapBack(sellTokens) (#1578)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1633-1639)
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
- dividendTracker.setBalance(address(from),balanceOf(from)) (#1610)
- dividendTracker.setBalance(address(to),balanceOf(to)) (#1611)
- dividendTracker.process(gas) (#1616-1619)
External calls sending eth:
- swapBack(sellTokens) (#1578)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1617)
Reentrancy in ShibarmyZilla.addPresaleAddressForExclusions(address,address) (#1312-1321):
External calls:
- dividendTracker.excludeFromDividends(_presaleAddress) (#1315)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#1388)
- excludeFromFees(_presaleRouterAddress,true) (#1318)
- ExcludedMaxTransactionAmount(updAds,isEx) (#1382)
- excludeFromMaxTransaction(_presaleAddress,true) (#1316)
Reentrancy in ShibarmyZilla.addPresaleAddressForExclusions(address,address) (#1312-1321):
External calls:
- dividendTracker.excludeFromDividends(_presaleAddress) (#1315)
- dividendTracker.excludeFromDividends(_presaleRouterAddress) (#1319)
Event emitted after the call(s):
- ExcludedMaxTransactionAmount(updAds,isEx) (#1382)
- excludeFromMaxTransaction(_presaleRouterAddress,true) (#1320)
Reentrancy in ShibarmyZilla.constructor() (#1246-1305):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1274-1275)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1280)
- dividendTracker.excludeFromDividends(pair) (#1411)
Event emitted after the call(s):
- ExcludedMaxTransactionAmount(updAds,isEx) (#1382)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1280)
- SetAutomatedMarketMakerPair(pair,value) (#1414)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1280)
Reentrancy in ShibarmyZilla.constructor() (#1246-1305):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1274-1275)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1280)
- dividendTracker.excludeFromDividends(pair) (#1411)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (#1283)
- dividendTracker.excludeFromDividends(address(this)) (#1284)
- dividendTracker.excludeFromDividends(newOwner) (#1285)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (#1286)
- dividendTracker.excludeFromDividends(address(0xdead)) (#1287)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#1388)
- excludeFromFees(address(0xdead),true) (#1292)
- ExcludeFromFees(account,excluded) (#1388)
- excludeFromFees(address(this),true) (#1291)
- ExcludeFromFees(account,excluded) (#1388)
- excludeFromFees(newOwner,true) (#1290)
- ExcludedMaxTransactionAmount(updAds,isEx) (#1382)
- excludeFromMaxTransaction(address(0xdead),true) (#1297)
- ExcludedMaxTransactionAmount(updAds,isEx) (#1382)
- excludeFromMaxTransaction(address(dividendTracker),true) (#1295)
- ExcludedMaxTransactionAmount(updAds,isEx) (#1382)
- excludeFromMaxTransaction(address(_uniswapV2Router),true) (#1296)
- ExcludedMaxTransactionAmount(updAds,isEx) (#1382)
- excludeFromMaxTransaction(address(this),true) (#1294)
- ExcludedMaxTransactionAmount(updAds,isEx) (#1382)
- excludeFromMaxTransaction(newOwner,true) (#1293)
- OwnershipTransferred(_owner,newOwner) (#760)
- transferOwnership(newOwner) (#1304)
- Transfer(address(0),account,amount) (#447)
- _mint(address(newOwner),totalSupply) (#1303)
Reentrancy in DividendPayingToken.distributeDividends() (#1033-1046):
External calls:
- buyTokens(address(this).balance) (#1036)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: bnbAmountInWei}(0,path,address(this),block.timestamp) (#1056-1061)
Event emitted after the call(s):
- DividendsDistributed(msg.sender,newBalance) (#1042)
Reentrancy in DividendTracker.processAccount(address,bool) (#1910-1921):
External calls:
- amount = _withdrawDividendOfUser(account,rewardToken) (#1913)
- IERC20(_rewardToken).transfer(user,_withdrawableDividend) (#1077)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1916)
Reentrancy in ShibarmyZilla.processDividendTracker(uint256) (#1480-1483):
External calls:
- (iterations,claims,lastProcessedIndex) = dividendTracker.process(gas) (#1481)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,false,gas,tx.origin) (#1482)
Reentrancy in ShibarmyZilla.swapBack(uint256) (#1659-1686):
External calls:
- swapTokensForEth(amountToSwap) (#1669)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1633-1639)
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
- addLiquidity(amountToLiquify,amountBNBLiquidity) (#1684)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
External calls sending eth:
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
- addLiquidity(amountToLiquify,amountBNBLiquidity) (#1684)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0xdead),block.timestamp) (#1648-1655)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#493)
- addLiquidity(amountToLiquify,amountBNBLiquidity) (#1684)
Apply the check-effects-interactions pattern.
Additional information: link
ShibarmyZilla._transfer(address,address,uint256) (#1508-1621) uses timestamp for comparisons
Dangerous comparisons:
- boughtEarly[from] && automatedMarketMakerPairs[to] && earlyBuyPenaltyEnd > block.timestamp (#1595)
DividendTracker.getAccount(address,address) (#1767-1810) uses timestamp for comparisons
Dangerous comparisons:
- nextClaimTime > block.timestamp (#1807-1809)
DividendTracker.canAutoClaim(uint256) (#1831-1837) uses timestamp for comparisons
Dangerous comparisons:
- lastClaimTime > block.timestamp (#1832)
- block.timestamp.sub(lastClaimTime) >= claimWait (#1836)
Avoid relying on block.timestamp.
Additional information: link
Context._msgData() (#10-13) is never used and should be removed
ERC20._burn(address,uint256) (#461-469) is never used and should be removed
SafeMath.mod(uint256,uint256) (#691-693) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#707-710) is never used and should be removed
SafeMathInt.abs(int256) (#815-818) is never used and should be removed
SafeMathInt.div(int256,int256) (#786-792) is never used and should be removed
SafeMathInt.mul(int256,int256) (#774-781) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version0.8.9 (#3) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6
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 ShibarmyZilla.swapBack(uint256) (#1659-1686):
- (success) = address(dividendTracker).call{value: amountBNBReflection}() (#1679)
- (success,None) = address(marketingWallet).call{value: amountBNBMarketing}() (#1681)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#31) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#32) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#49) is not in mixedCase
Function IUniswapV2Router01.WETH() (#838) is not in mixedCase
Parameter DividendPayingToken.withdrawDividend(address)._rewardToken (#1066) is not in mixedCase
Parameter DividendPayingToken.dividendOf(address,address)._owner (#1088) is not in mixedCase
Parameter DividendPayingToken.dividendOf(address,address)._rewardToken (#1088) is not in mixedCase
Parameter DividendPayingToken.withdrawableDividendOf(address,address)._owner (#1095) is not in mixedCase
Parameter DividendPayingToken.withdrawableDividendOf(address,address)._rewardToken (#1095) is not in mixedCase
Parameter DividendPayingToken.withdrawnDividendOf(address,address)._owner (#1102) is not in mixedCase
Parameter DividendPayingToken.withdrawnDividendOf(address,address)._rewardToken (#1102) is not in mixedCase
Parameter DividendPayingToken.accumulativeDividendOf(address,address)._owner (#1112) is not in mixedCase
Parameter DividendPayingToken.accumulativeDividendOf(address,address)._rewardToken (#1112) is not in mixedCase
Constant DividendPayingToken.magnitude (#979) is not in UPPER_CASE_WITH_UNDERSCORES
Event ShibarmyZillamarketingWalletUpdated(address,address) (#1218) is not in CapWords
Parameter ShibarmyZilla.addPresaleAddressForExclusions(address,address)._presaleAddress (#1312) is not in mixedCase
Parameter ShibarmyZilla.addPresaleAddressForExclusions(address,address)._presaleRouterAddress (#1312) is not in mixedCase
Parameter ShibarmyZilla.emergencyPresaleAddressUpdate(address,address)._presaleAddress (#1323) is not in mixedCase
Parameter ShibarmyZilla.emergencyPresaleAddressUpdate(address,address)._presaleRouterAddress (#1323) is not in mixedCase
Parameter ShibarmyZilla.updateFees(uint256,uint256,uint256)._marketingFee (#1367) is not in mixedCase
Parameter ShibarmyZilla.updateFees(uint256,uint256,uint256)._rewardsFee (#1367) is not in mixedCase
Parameter ShibarmyZilla.updateFees(uint256,uint256,uint256)._liquidityFee (#1367) is not in mixedCase
Variable ShibarmyZilla._isExcludedMaxTransactionAmount (#1202) is not in mixedCase
Parameter DividendTracker.getAccount(address,address)._account (#1767) is not in mixedCase
Parameter DividendTracker.getAccount(address,address)._rewardToken (#1767) is not in mixedCase
Parameter DividendTracker.getAccountAtIndex(uint256,address)._rewardToken (#1812) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#11)" inContext (#5-14)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#843) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#844)
Variable DividendPayingToken._withdrawDividendOfUser(address,address)._withdrawableDividend (#1073) is too similar to DividendTracker.getAccount(address,address).withdrawableDividends (#1772)
Prevent variables from having similar names.
Additional information: link
ShibarmyZilla.updateGasForProcessing(uint256) (#1423-1428) uses literals with too many digits:
- require(bool,string)(newValue <= 500000, gasForProcessing must be between 200,000 and 500,000) (#1424)
ShibarmyZilla.updateSwapTokensAtAmount(uint256) (#1689-1695) uses literals with too many digits:
- require(bool,string)(newAmount >= totalSupply() * 1 / 100000,Swap amount cannot be lower than 0.001% total supply.) (#1691)
ShibarmyZilla.slitherConstructorVariables() (#1153-1712) uses literals with too many digits:
- gasForProcessing = 300000 (#1195)
DividendTracker.getAccountAtIndex(uint256,address) (#1812-1829) uses literals with too many digits:
- (0x0000000000000000000000000000000000000000,- 1,- 1,0,0,0,0,0) (#1823)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#769) is never used in SafeMathInt (#767-825)
Remove unused state variables.
Additional information: link
ShibarmyZilla.liquidityActiveBlock (#1172) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
get(IterableMapping.Map,address) should be declared external:
- IterableMapping.get(IterableMapping.Map,address) (#92-94)
getIndexOfKey(IterableMapping.Map,address) should be declared external:
- IterableMapping.getIndexOfKey(IterableMapping.Map,address) (#96-101)
getKeyAtIndex(IterableMapping.Map,uint256) should be declared external:
- IterableMapping.getKeyAtIndex(IterableMapping.Map,uint256) (#103-105)
size(IterableMapping.Map) should be declared external:
- IterableMapping.size(IterableMapping.Map) (#109-111)
name() should be declared external:
- ERC20.name() (#268-270)
symbol() should be declared external:
- ERC20.symbol() (#276-278)
decimals() should be declared external:
- ERC20.decimals() (#293-295)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#319-322)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#327-329)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#338-341)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#356-364)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#378-381)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#397-400)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#749-752)
setAutomatedMarketMakerPair(address,bool) should be declared external:
- ShibarmyZilla.setAutomatedMarketMakerPair(address,bool) (#1399-1403)
isExcludedFromFees(address) should be declared external:
- ShibarmyZilla.isExcludedFromFees(address) (#1442-1444)
withdrawableDividendOf(address,address) should be declared external:
- ShibarmyZilla.withdrawableDividendOf(address,address) (#1446-1448)
dividendTokenBalanceOf(address) should be declared external:
- ShibarmyZilla.dividendTokenBalanceOf(address) (#1450-1452)
Use the external attribute for functions never called from the contract.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find token on CoinGecko
Additional information: link
Unable to find token/project description on the website or on BscScan, CoinMarketCap
Unable to find whitepaper link on the website
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Young tokens have high risks of price dump / death
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Young tokens have high risks of price dump / death
Token has relatively low CoinMarketCap rank
Twitter account link seems to be invalid
Telegram account has relatively few subscribers
Unable to find Discord account