A multiplayer tower defense - ORACLE GAME inspired by many widely-known tower defense games. ✅Crypto Warz is available on both Android & iOS
WARZ._owner (#429) shadows:
- Ownable._owner (#67)
Remove the state variable shadowing.
Additional information: link
Reentrancy in WARZ._transfer(address,address,uint256) (#525-580):
External calls:
- swapAndLiquify(contractTokenBalance) (#547)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#601-607)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#547)
- address(marketingaddress).transfer(address(this).balance) (#587)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#567)
- _balances[recipient] = _balances[recipient].add(TotalSent) (#568)
- _balances[address(this)] = _balances[address(this)].add(taxAmount) (#569)
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#575)
- _balances[recipient] = _balances[recipient].add(amount) (#576)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Address.isContract(address) (#146-152) uses assembly
- INLINE ASM (#150)
Do not use evm assembly.
Additional information: link
Address.isContract(address) (#146-152) is never used and should be removed
SafeBEP20.callOptionalReturn(IBEP20,bytes) (#173-184) is never used and should be removed
SafeBEP20.safeApprove(IBEP20,address,uint256) (#167-172) is never used and should be removed
SafeBEP20.safeTransfer(IBEP20,address,uint256) (#159-161) is never used and should be removed
SafeBEP20.safeTransferFrom(IBEP20,address,address,uint256) (#163-165) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in SafeBEP20.callOptionalReturn(IBEP20,bytes) (#173-184):
- (success,returndata) = address(token).call(data) (#177)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#262) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#263)
Prevent variables from having similar names.
Additional information: link
WARZ.setBuyMarketingFeePercent(uint256) (#484-488) should emit an event for:
- buyMarketingFee = updatedBuyMarketingFee (#486)
WARZ.setSellMarketingFeePercent(uint256) (#490-494) should emit an event for:
- sellMarketingFee = updatedSellMarketingFee (#492)
WARZ.changeNumTokensSellToFee(uint256) (#508-512) should emit an event for:
- numTokensSellToFee = _numTokensSellToFee (#511)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in WARZ._transfer(address,address,uint256) (#525-580):
External calls:
- swapAndLiquify(contractTokenBalance) (#547)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#601-607)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#547)
- address(marketingaddress).transfer(address(this).balance) (#587)
State variables written after the call(s):
- marketingFee = buyMarketingFee (#563)
- marketingFee = sellMarketingFee (#564)
Reentrancy in WARZ.constructor() (#431-451):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#439-440)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#446)
- _isExcludedFromFee[address(this)] = true (#447)
- _isExcludedFromFee[marketingaddress] = true (#448)
- uniswapV2Router = _uniswapV2Router (#443)
Reentrancy in WARZ.transferFrom(address,address,uint256) (#470-474):
External calls:
- _transfer(sender,recipient,amount) (#471)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#601-607)
External calls sending eth:
- _transfer(sender,recipient,amount) (#471)
- address(marketingaddress).transfer(address(this).balance) (#587)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#472)
- _allowances[towner][spender] = amount (#614)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in WARZ._transfer(address,address,uint256) (#525-580):
External calls:
- swapAndLiquify(contractTokenBalance) (#547)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#601-607)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#547)
- address(marketingaddress).transfer(address(this).balance) (#587)
Event emitted after the call(s):
- Transfer(sender,recipient,TotalSent) (#570)
- Transfer(sender,address(this),taxAmount) (#571)
- Transfer(sender,recipient,amount) (#577)
Reentrancy in WARZ.constructor() (#431-451):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#439-440)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_totalSupply) (#450)
Reentrancy in WARZ.swapAndLiquify(uint256) (#582-590):
External calls:
- swapTokensForEth(contractTokenBalance) (#585)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#601-607)
External calls sending eth:
- address(marketingaddress).transfer(address(this).balance) (#587)
Event emitted after the call(s):
- SwapAndLiquify(contractTokenBalance,address(this).balance) (#589)
Reentrancy in WARZ.transferFrom(address,address,uint256) (#470-474):
External calls:
- _transfer(sender,recipient,amount) (#471)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#601-607)
External calls sending eth:
- _transfer(sender,recipient,amount) (#471)
- address(marketingaddress).transfer(address(this).balance) (#587)
Event emitted after the call(s):
- Approval(towner,spender,amount) (#615)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#472)
Apply the check-effects-interactions pattern.
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#219) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#220) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#237) is not in mixedCase
Function IUniswapV2Router01.WETH() (#257) is not in mixedCase
Parameter WARZ.setSwapAndLiquifyEnabled(bool)._enabled (#503) is not in mixedCase
Parameter WARZ.changeNumTokensSellToFee(uint256)._numTokensSellToFee (#508) is not in mixedCase
Variable WARZ._balances (#398) is not in mixedCase
Variable WARZ._allowances (#399) is not in mixedCase
Variable WARZ._totalSupply (#402) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Reentrancy in WARZ._transfer(address,address,uint256) (#525-580):
External calls:
- swapAndLiquify(contractTokenBalance) (#547)
- address(marketingaddress).transfer(address(this).balance) (#587)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#567)
- _balances[recipient] = _balances[recipient].add(TotalSent) (#568)
- _balances[address(this)] = _balances[address(this)].add(taxAmount) (#569)
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#575)
- _balances[recipient] = _balances[recipient].add(amount) (#576)
- marketingFee = buyMarketingFee (#563)
- marketingFee = sellMarketingFee (#564)
Event emitted after the call(s):
- Transfer(sender,recipient,TotalSent) (#570)
- Transfer(sender,address(this),taxAmount) (#571)
- Transfer(sender,recipient,amount) (#577)
Reentrancy in WARZ.swapAndLiquify(uint256) (#582-590):
External calls:
- address(marketingaddress).transfer(address(this).balance) (#587)
Event emitted after the call(s):
- SwapAndLiquify(contractTokenBalance,address(this).balance) (#589)
Reentrancy in WARZ.transferFrom(address,address,uint256) (#470-474):
External calls:
- _transfer(sender,recipient,amount) (#471)
- address(marketingaddress).transfer(address(this).balance) (#587)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#472)
- _allowances[towner][spender] = amount (#614)
Event emitted after the call(s):
- Approval(towner,spender,amount) (#615)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#472)
Apply the check-effects-interactions pattern.
Additional information: link
WARZ.constructor() (#431-451) uses literals with too many digits:
- _totalSupply = 5000000 * (10 ** 18) (#433)
WARZ.changeNumTokensSellToFee(uint256) (#508-512) uses literals with too many digits:
- require(bool,string)(_numTokensSellToFee >= 1000 * 10 ** 18 && _numTokensSellToFee <= 500000 * 10 ** 18,Threshold must be set within 1,000 to 500,000 tokens) (#510)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#102-105)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#111-115)
name() should be declared external:
- BEP20Detailed.name() (#132-134)
symbol() should be declared external:
- BEP20Detailed.symbol() (#135-137)
decimals() should be declared external:
- BEP20Detailed.decimals() (#138-140)
totalSupply() should be declared external:
- WARZ.totalSupply() (#453-455)
transfer(address,uint256) should be declared external:
- WARZ.transfer(address,uint256) (#459-462)
allowance(address,address) should be declared external:
- WARZ.allowance(address,address) (#463-465)
approve(address,uint256) should be declared external:
- WARZ.approve(address,uint256) (#466-469)
transferFrom(address,address,uint256) should be declared external:
- WARZ.transferFrom(address,address,uint256) (#470-474)
increaseAllowance(address,uint256) should be declared external:
- WARZ.increaseAllowance(address,uint256) (#475-478)
decreaseAllowance(address,uint256) should be declared external:
- WARZ.decreaseAllowance(address,uint256) (#479-482)
setSwapAndLiquifyEnabled(bool) should be declared external:
- WARZ.setSwapAndLiquifyEnabled(bool) (#503-506)
excludeFromFee(address) should be declared external:
- WARZ.excludeFromFee(address) (#514-516)
includeInFee(address) should be declared external:
- WARZ.includeInFee(address) (#518-520)
Use the external attribute for functions never called from the contract.
Additional information: link
Pragma version^0.8.15 (#7) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.16 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
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
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
Unable to find Blog account (Reddit or Medium)