AntiRugN DAO is the first project to combine voting on decentralised solutions, technology fundamentals and a charity-based function. ✅Signed a strategic partnership with a digital marketing agency - Zo Agency. (ARN) is the tradable, native and liquid token that will contribute to the protocol by filling the DAO Treasury, for distribution to ARN holders and funding of investments in solutions. ✅DApp Released. ✅KYC by SwissShield. ✅Fully audited by InterFi. 🌐Listing on CEX (P2PB2B) 23 August 6PM (UTC).
Reentrancy in ARN._transferFrom(address,address,uint256) (#742-772):
External calls:
- swapBackInBnb() (#756)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#919-925)
- (marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
External calls sending eth:
- swapBackInBnb() (#756)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
- (marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#760-763)
- _balances[recipient] = _balances[recipient].add(amountReceived) (#768)
- amountReceived = takeFee(sender,amount,recipient) (#765-767)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#811)
Apply the check-effects-interactions pattern.
Additional information: link
ARN.swapBackInBnb().marketingSuccess (#876) is written in both
(marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
marketingSuccess = false (#880)
Fix or remove the writes.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Contract ownership is not renounced (belongs to a wallet)
ARN.addLiquidity(uint256,uint256) (#928-940) ignores return value by router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
Ensure that all the return values of the function calls are used.
Additional information: link
ARN._approve(address,address,uint256).owner (#706) shadows:
- Ownable.owner() (#540-542) (function)
Rename the local variables that shadow another component.
Additional information: link
ARN.updateBuyFees(uint256,uint256) (#831-835) should emit an event for:
- buyTotalFees = dev.add(liquidity) (#834)
ARN.updateSellFees(uint256,uint256) (#837-841) should emit an event for:
- sellTotalFees = dev.add(liquidity) (#840)
ARN.updateSwapPercentages(uint256,uint256) (#843-850) should emit an event for:
- liquiditySwap = liquidity (#848)
- totalSwap = dev.add(liquidity) (#849)
Emit an event for critical parameter changes.
Additional information: link
ARN.setFeeReceivers(address)._wallet (#946) lacks a zero-check on :
- devFeeReceiver = _wallet (#947)
Check that the address is not zero.
Additional information: link
Reentrancy in ARN.constructor() (#645-662):
External calls:
- pair = IUniswapV2Factory(router.factory()).createPair(WBNB,address(this)) (#647-650)
State variables written after the call(s):
- _allowances[address(this)][address(router)] = type()(uint256).max (#651)
- _balances[deployer] = _totalSupply (#660)
- devFeeReceiver = 0xc0976e73A93BCF421b4243F3D0365C87aC8a2d51 (#658)
- isAuthorized[deployer] = true (#657)
- isFeeExempt[deployer] = true (#655)
Reentrancy in ARN.swapAndLiquify(uint256) (#889-910):
External calls:
- swapTokensForEth(half) (#901)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#919-925)
- addLiquidity(otherHalf,newBalance) (#907)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#907)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#907)
- _allowances[owner][spender] = amount (#713)
Reentrancy in ARN.swapBackInBnb() (#862-887):
External calls:
- swapTokensForEth(tokensToSwap) (#871)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#919-925)
- (marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
- swapAndLiquify(tokensToLiquidity) (#885)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#919-925)
External calls sending eth:
- (marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
- swapAndLiquify(tokensToLiquidity) (#885)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
State variables written after the call(s):
- swapAndLiquify(tokensToLiquidity) (#885)
- _allowances[owner][spender] = amount (#713)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in ARN._transferFrom(address,address,uint256) (#742-772):
External calls:
- swapBackInBnb() (#756)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#919-925)
- (marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
External calls sending eth:
- swapBackInBnb() (#756)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
- (marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount) (#812)
- amountReceived = takeFee(sender,amount,recipient) (#765-767)
- Transfer(sender,recipient,amountReceived) (#770)
Reentrancy in ARN.constructor() (#645-662):
External calls:
- pair = IUniswapV2Factory(router.factory()).createPair(WBNB,address(this)) (#647-650)
Event emitted after the call(s):
- Transfer(address(0),deployer,_totalSupply) (#661)
Reentrancy in ARN.swapAndLiquify(uint256) (#889-910):
External calls:
- swapTokensForEth(half) (#901)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#919-925)
- addLiquidity(otherHalf,newBalance) (#907)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#907)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#714)
- addLiquidity(otherHalf,newBalance) (#907)
- AutoLiquify(newBalance,otherHalf) (#909)
Reentrancy in ARN.swapBackInBnb() (#862-887):
External calls:
- swapTokensForEth(tokensToSwap) (#871)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#919-925)
- (marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
- swapAndLiquify(tokensToLiquidity) (#885)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#919-925)
External calls sending eth:
- (marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
- swapAndLiquify(tokensToLiquidity) (#885)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#932-939)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#714)
- swapAndLiquify(tokensToLiquidity) (#885)
- AutoLiquify(newBalance,otherHalf) (#909)
- swapAndLiquify(tokensToLiquidity) (#885)
Apply the check-effects-interactions pattern.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.5.0', '>=0.6.2', '^0.8.0', '^0.8.7']
- >=0.5.0 (#1)
- >=0.6.2 (#21)
- >=0.6.2 (#119)
- ^0.8.0 (#168)
- ^0.8.0 (#398)
- ^0.8.0 (#483)
- ^0.8.0 (#510)
- ^0.8.7 (#587)
Use one Solidity version.
Additional information: link
Context._msgData() (#500-502) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#355-364) is never used and should be removed
SafeMath.mod(uint256,uint256) (#315-317) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#381-390) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#186-192) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#228-233) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#240-245) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#211-221) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#199-204) is never used and should be removed
Remove unused functions.
Additional information: link
ARN.swapThreshold (#637) is set pre-construction with a non-constant function or state variable:
- (_totalSupply * 10) / 10000
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.5.0 (#1) allows old versions
Pragma version>=0.6.2 (#21) allows old versions
Pragma version>=0.6.2 (#119) allows old versions
Pragma version^0.8.0 (#168) allows old versions
Pragma version^0.8.0 (#398) allows old versions
Pragma version^0.8.0 (#483) allows old versions
Pragma version^0.8.0 (#510) 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 ARN.swapBackInBnb() (#862-887):
- (marketingSuccess) = address(devFeeReceiver).call{gas: 30000,value: swappedBnbAmount}() (#876-879)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Router01.WETH() (#25) is not in mixedCase
Parameter ARN.tradingStatus(bool)._status (#853) is not in mixedCase
Parameter ARN.whitelistPreSale(address)._preSale (#857) is not in mixedCase
Parameter ARN.setFeeReceivers(address)._wallet (#946) is not in mixedCase
Parameter ARN.setSwapBackSettings(bool,uint256)._enabled (#950) is not in mixedCase
Parameter ARN.setSwapBackSettings(bool,uint256)._amount (#950) is not in mixedCase
Variable ARN.WBNB (#597) is not in mixedCase
Variable ARN.DEAD (#598) is not in mixedCase
Variable ARN.ZERO (#599) is not in mixedCase
Constant ARN._name (#601) is not in UPPER_CASE_WITH_UNDERSCORES
Constant ARN._symbol (#602) is not in UPPER_CASE_WITH_UNDERSCORES
Constant ARN._decimals (#603) is not in UPPER_CASE_WITH_UNDERSCORES
Variable ARN._totalSupply (#605) is not in mixedCase
Variable ARN._balances (#607) is not in mixedCase
Variable ARN._allowances (#608) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#30) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#31)
Prevent variables from having similar names.
Additional information: link
ARN.slitherConstructorVariables() (#594-958) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#598)
ARN.slitherConstructorVariables() (#594-958) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#599)
ARN.slitherConstructorVariables() (#594-958) uses literals with too many digits:
- _totalSupply = 300000 * (10 ** _decimals) (#605)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
ARN.DEAD (#598) is never used in ARN (#594-958)
ARN.ZERO (#599) is never used in ARN (#594-958)
Remove unused state variables.
Additional information: link
ARN.DEAD (#598) should be constant
ARN.WBNB (#597) should be constant
ARN.ZERO (#599) should be constant
ARN._totalSupply (#605) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#559-561)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#567-570)
name() should be declared external:
- ARN.name() (#670-672)
symbol() should be declared external:
- ARN.symbol() (#674-676)
decimals() should be declared external:
- ARN.decimals() (#678-680)
balanceOf(address) should be declared external:
- ARN.balanceOf(address) (#682-684)
updateBuyFees(uint256,uint256) should be declared external:
- ARN.updateBuyFees(uint256,uint256) (#831-835)
updateSellFees(uint256,uint256) should be declared external:
- ARN.updateSellFees(uint256,uint256) (#837-841)
updateSwapPercentages(uint256,uint256) should be declared external:
- ARN.updateSwapPercentages(uint256,uint256) (#843-850)
tradingStatus(bool) should be declared external:
- ARN.tradingStatus(bool) (#853-855)
whitelistPreSale(address) should be declared external:
- ARN.whitelistPreSale(address) (#857-860)
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 KYC or doxxing proof
Unable to find Telegram link on the website
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Unable to find token on CoinHunt
Additional information: link
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 Blog account (Reddit or Medium)
Unable to find Discord account