ARCADiO is a GameFi, P2E, NFT platform with 100s of fun games powered by inflation resistant high reward $ARDO without owning any complex in-game NFTs. NFT holders earn rental yield forever from leasing it to Arcadio network.
Reentrancy in ARCADIO._addBigLiquidity(uint256) (#1332-1350):
External calls:
- __addBigLiquidity(liqEthAmount,liqTokenAmount) (#1347)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
- IWETH(WETH).transfer(_uniswapV2Pair,ethAmount) (#1495)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1497)
External calls sending eth:
- __addBigLiquidity(liqEthAmount,liqTokenAmount) (#1347)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
State variables written after the call(s):
- _lastLiqTime = block.number (#1349)
Reentrancy in ARCADIO._specialTransfer(address,address,uint256) (#994-1093):
External calls:
- _rebase() (#1040)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1245)
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1467-1473)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
External calls sending eth:
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
State variables written after the call(s):
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- inSwap = true (#661)
- inSwap = false (#663)
Reentrancy in ARCADIO._specialTransfer(address,address,uint256) (#994-1093):
External calls:
- _rebase() (#1040)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1245)
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1467-1473)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
- _addBigLiquidity(r1) (#1077)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
- IWETH(WETH).transfer(_uniswapV2Pair,ethAmount) (#1495)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1497)
External calls sending eth:
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
- _addBigLiquidity(r1) (#1077)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
State variables written after the call(s):
- _addBigLiquidity(r1) (#1077)
- _tOwned[sender] = _tOwned[sender].sub(fAmount) (#1101)
- _tOwned[recipient] = _tOwned[recipient].add(fAmount) (#1102)
- _tOwned[sender] = _tOwned[sender].sub(fAmount) (#1082)
- fAmount = _takeFee(sender,recipient,r1,fAmount) (#1086)
- _tOwned[address(this)] = _tOwned[address(this)].add(fAmount_) (#1423)
- _tOwned[recipient] = _tOwned[recipient].add(fAmount) (#1089)
- _addBigLiquidity(r1) (#1077)
- inSwap = true (#661)
- inSwap = false (#663)
Apply the check-effects-interactions pattern.
Additional information: link
ARCADIO._initialized (#550) shadows:
- Initializable._initialized (#261)
Remove the state variable shadowing.
Additional information: link
ARCADIO._addLiquidity(uint256,uint256) (#1477-1499) ignores return value by IWETH(WETH).transfer(_uniswapV2Pair,ethAmount) (#1495)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
ARCADIO._addLiquidity(uint256,uint256) (#1477-1499) uses a dangerous strict equality:
- tokenAmount == 0 (#1481)
ARCADIO._addLiquidity(uint256,uint256) (#1477-1499) uses a dangerous strict equality:
- ethAmount == 0 (#1485)
ARCADIO._buyBackAndBurn(uint256,uint256) (#1295-1307) uses a dangerous strict equality:
- autoBurnEthAmount == 0 (#1299)
ARCADIO._maxTxCheck(address,address,uint256,uint256) (#957-975) uses a dangerous strict equality:
- impact == 0 (#967)
ARCADIO._rebase() (#1226-1249) uses a dangerous strict equality:
- _lastRebaseBlock == block.number (#1236)
ARCADIO._swapBackAndSplitTax(uint256) (#1251-1293) uses a dangerous strict equality:
- fAmount == 0 (#1260)
ARCADIO._swapEthForTokens(uint256,address) (#1432-1454) uses a dangerous strict equality:
- ethAmount == 0 (#1436)
ARCADIO._swapTokensForEth(uint256) (#1456-1474) uses a dangerous strict equality:
- tokenAmount == 0 (#1457)
ARCADIO.quote(uint256,uint256,uint256) (#1545-1555) uses a dangerous strict equality:
- amountA == 0 (#1550)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
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.
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
ARCADIO.initialize(address).owner_ (#671) lacks a zero-check on :
- _owner = owner_ (#672)
ARCADIO.setLPAddress(address).pairAddress_ (#804) lacks a zero-check on :
- _uniswapV2Pair = pairAddress_ (#805)
Check that the address is not zero.
Additional information: link
ARCADIO._rebaseAmount(uint256) (#1169-1224) performs a multiplication on the result of a division:
-tmpTotal = tmpTotal.mul(deno.mul(100).add(rebaseRate)).div(deno.mul(100)) (#1180-1182)
-tmpTotal = tmpTotal.mul(deno.mul(100).add(minuteRebaseRate)).div(deno.mul(100)) (#1191-1193)
ARCADIO._rebaseAmount(uint256) (#1169-1224) performs a multiplication on the result of a division:
-tmpTotal = tmpTotal.mul(deno.mul(100).add(minuteRebaseRate)).div(deno.mul(100)) (#1191-1193)
-tmpTotal = tmpTotal.mul(deno.mul(100).add(hourRebaseRate)).div(deno.mul(100)) (#1206-1208)
ARCADIO._rebaseAmount(uint256) (#1169-1224) performs a multiplication on the result of a division:
-tmpTotal = tmpTotal.mul(deno.mul(100).add(hourRebaseRate)).div(deno.mul(100)) (#1206-1208)
-tmpTotal = tmpTotal.mul(deno.mul(100).add(dayRebaseRate)).div(deno.mul(100)) (#1217-1219)
ARCADIO._takeFee(address,address,uint256,uint256) (#1353-1429) performs a multiplication on the result of a division:
-fAmount_ = fAmount.div(10000).mul(totalFee) (#1422)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in ARCADIO._rebase() (#1226-1249):
External calls:
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1245)
State variables written after the call(s):
- _lastRebaseBlock = block.number (#1246)
Reentrancy in ARCADIO.runInit() (#688-750):
External calls:
- uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(uniswapV2Router.WETH(),address(this)) (#721-722)
State variables written after the call(s):
- _initialized = true (#749)
Apply the check-effects-interactions pattern.
Additional information: link
ARCADIO.setRebaseRate(uint256) (#752-754) should emit an event for:
- _rebaseRate = rebaseRate_ (#753)
ARCADIO.setSellFee(uint256) (#756-758) should emit an event for:
- _moreSellFee = sellFee_ (#757)
ARCADIO.setLessBuyFee(uint256) (#760-762) should emit an event for:
- _lessBuyFee = lessBuyFee_ (#761)
ARCADIO.setCircuitFee(uint256) (#764-766) should emit an event for:
- _circuitFee = circuitFee_ (#765)
ARCADIO.setAllowedTxImpact(uint256) (#768-770) should emit an event for:
- _allowedTxImpact = allowedTxImpact_ (#769)
ARCADIO.setCircuitPriceImpact(uint256) (#772-777) should emit an event for:
- _circuitPriceImpact = allowedPriceImpact_ (#776)
ARCADIO.setBuySellDuration(uint256) (#779-781) should emit an event for:
- _buySellDuration = buySellDuration_ (#780)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in ARCADIO._buyBackAndBurn(uint256,uint256) (#1295-1307):
External calls:
- _swapEthForTokens(autoBurnEthAmount.mul(6000).div(10000),_firePot) (#1305)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
- _swapEthForTokens(autoBurnEthAmount.mul(4000).div(10000),_firePot) (#1306)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
State variables written after the call(s):
- _swapEthForTokens(autoBurnEthAmount.mul(4000).div(10000),_firePot) (#1306)
- inSwap = true (#661)
- inSwap = false (#663)
Reentrancy in ARCADIO._specialTransfer(address,address,uint256) (#994-1093):
External calls:
- _rebase() (#1040)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1245)
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1467-1473)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
External calls sending eth:
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
State variables written after the call(s):
- antiBotSystem(sender) (#1054)
- _buySellTimer[target] = block.timestamp (#913)
- antiBotSystem(msg.sender) (#1056)
- _buySellTimer[target] = block.timestamp (#913)
- antiBotSystem(recipient) (#1060)
- _buySellTimer[target] = block.timestamp (#913)
- accuTaxSystem(amount) (#1065)
- _circuitBreakerFlag = 1 (#1111)
- _circuitBreakerFlag = 2 (#1157)
- accuTaxSystem(amount) (#1065)
- _circuitBreakerTime = block.timestamp (#1158)
- accuTaxSystem(amount) (#1065)
- _taxAccuTaxCheckGlobal = 1 (#1113)
- _taxAccuTaxCheckGlobal = taxAccuTaxCheckGlobal_ (#1163)
- accuTaxSystem(amount) (#1065)
- _timeAccuTaxCheckGlobal = block.timestamp.sub(1) (#1114)
- _timeAccuTaxCheckGlobal = timeAccuTaxCheckGlobal_ (#1164)
Reentrancy in ARCADIO.runInit() (#688-750):
External calls:
- uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(uniswapV2Router.WETH(),address(this)) (#721-722)
State variables written after the call(s):
- _allowances[address(this)][address(_uniswapV2RouterAddress)] = ~ uint256(0) (#724-726)
- _frag = _rTotal.div(_tTotal) (#731)
- _initRebaseTime = block.timestamp (#740)
- _lastRebaseBlock = block.number (#742)
- _lastRebaseTime = block.timestamp (#741)
- _projectSupports[_owner] = 2 (#744)
- _projectSupports[_stabilizer] = 2 (#745)
- _projectSupports[_treasury] = 2 (#746)
- _projectSupports[address(this)] = 2 (#747)
- _tOwned[address(this)] = 0 (#734)
- _tOwned[_owner] = 0 (#735)
- _tOwned[_stabilizer] = 0 (#736)
- _tOwned[_treasury] = _rTotal (#737)
- _tTotal = _INIT_TOTAL_SUPPLY (#730)
- _uniswapV2Pair = uniswapV2Pair (#728)
- _uniswapV2Router = uniswapV2Router (#727)
Reentrancy in ARCADIO.transferFrom(address,address,uint256) (#840-855):
External calls:
- _transfer(sender,recipient,amount) (#845)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
- _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1467-1473)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
- IWETH(WETH).transfer(_uniswapV2Pair,ethAmount) (#1495)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1497)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1245)
External calls sending eth:
- _transfer(sender,recipient,amount) (#845)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
State variables written after the call(s):
- _approve(sender,msg.sender,_allowances[sender][msg.sender].sub(amount,BEP20: transfer amount exceeds allowance)) (#846-853)
- _allowances[owner][spender] = amount (#894)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in ARCADIO._rebase() (#1226-1249):
External calls:
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1245)
Event emitted after the call(s):
- Rebased(block.number,_tTotal) (#1248)
Reentrancy in ARCADIO._specialTransfer(address,address,uint256) (#994-1093):
External calls:
- _rebase() (#1040)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1245)
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1467-1473)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
External calls sending eth:
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
Event emitted after the call(s):
- CircuitBreakerActivated() (#1160)
- accuTaxSystem(amount) (#1065)
Reentrancy in ARCADIO._specialTransfer(address,address,uint256) (#994-1093):
External calls:
- _rebase() (#1040)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1245)
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1467-1473)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
- _addBigLiquidity(r1) (#1077)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
- IWETH(WETH).transfer(_uniswapV2Pair,ethAmount) (#1495)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1497)
External calls sending eth:
- (autoBurnEthAmount,buybackEthAmount) = _swapBackAndSplitTax(r1) (#1043-1046)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _buyBackAndBurn(autoBurnEthAmount,buybackEthAmount) (#1047)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
- _addBigLiquidity(r1) (#1077)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#1104)
- _addBigLiquidity(r1) (#1077)
- Transfer(sender,address(this),fAmount_.div(_frag)) (#1424)
- fAmount = _takeFee(sender,recipient,r1,fAmount) (#1086)
- Transfer(sender,recipient,fAmount.div(_frag)) (#1090)
Reentrancy in ARCADIO.runInit() (#688-750):
External calls:
- uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(uniswapV2Router.WETH(),address(this)) (#721-722)
Event emitted after the call(s):
- Transfer(_owner,_treasury,_rTotal) (#738)
Reentrancy in ARCADIO.transferFrom(address,address,uint256) (#840-855):
External calls:
- _transfer(sender,recipient,amount) (#845)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
- _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1467-1473)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
- IWETH(WETH).transfer(_uniswapV2Pair,ethAmount) (#1495)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1497)
- IPancakeSwapPair(_uniswapV2Pair).sync() (#1245)
External calls sending eth:
- _transfer(sender,recipient,amount) (#845)
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
- _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(0,path,to,block.timestamp) (#1446-1453)
- IWETH(WETH).deposit{value: ethAmount}() (#1494)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#895)
- _approve(sender,msg.sender,_allowances[sender][msg.sender].sub(amount,BEP20: transfer amount exceeds allowance)) (#846-853)
Apply the check-effects-interactions pattern.
Additional information: link
ARCADIO.antiBotSystem(address) (#899-914) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_buySellTimer[target].add(_buySellDuration) <= block.timestamp,No sequential bot related process allowed) (#909-912)
ARCADIO.accuTaxSystem(uint256) (#1120-1167) uses timestamp for comparisons
Dangerous comparisons:
- _circuitBreakerTime + 3600 < block.timestamp (#1126)
- timeDiffGlobal < 3600 (#1140)
Avoid relying on block.timestamp.
Additional information: link
AddressUpgradeable.verifyCallResult(bool,bytes,string) (#176-196) uses assembly
- INLINE ASM (#188-191)
ARCADIO._isContract(address) (#1512-1518) uses assembly
- INLINE ASM (#1514-1516)
Do not use evm assembly.
Additional information: link
ARCADIO.runInit() (#688-750) compares to a boolean constant:
-require(bool,string)(_initialized == false,Already Initialized) (#689)
Remove the equality to the boolean constant.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.8.2', '^0.8.1', '^0.8.2']
- ^0.8.1 (#6)
- ^0.8.2 (#204)
- >=0.8.2 (#378)
Use one Solidity version.
Additional information: link
AddressUpgradeable.functionCall(address,bytes) (#87-89) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (#97-103) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (#116-122) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (#130-141) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (#149-151) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (#159-168) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (#62-67) is never used and should be removed
AddressUpgradeable.verifyCallResult(bool,bytes,string) (#176-196) is never used and should be removed
Initializable._disableInitializers() (#328-330) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.1 (#6) allows old versions
Pragma version^0.8.2 (#204) allows old versions
Pragma version>=0.8.2 (#378) 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 AddressUpgradeable.sendValue(address,uint256) (#62-67):
- (success) = recipient.call{value: amount}() (#65)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (#130-141):
- (success,returndata) = target.call{value: value}(data) (#139)
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (#159-168):
- (success,returndata) = target.staticcall(data) (#166)
Low level call in ARCADIO.SENDBNB(address,uint256) (#1506-1510):
- (v) = recipent.call{value: amount}(new bytes(0)) (#1508)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
ARCADIO (#536-1616) should inherit from IERC20 (#444-460)
Inherit from the missing interface or contract.
Additional information: link
Function IUniswapV2Router01.WETH() (#475) is not in mixedCase
Function ARCADIO.__addBigLiquidity(uint256,uint256) (#1316-1330) is not in mixedCase
Function ARCADIO.STOPTRANSACTION() (#1502-1504) is not in mixedCase
Function ARCADIO.SENDBNB(address,uint256) (#1506-1510) is not in mixedCase
Variable ARCADIO._owner (#540) is not in mixedCase
Variable ARCADIO._uniswapV2Router (#552) is not in mixedCase
Variable ARCADIO._uniswapV2RouterAddress (#553) is not in mixedCase
Variable ARCADIO._uniswapV2Pair (#554) is not in mixedCase
Variable ARCADIO.MAX (#560) is not in mixedCase
Variable ARCADIO._isLaunched (#567) is not in mixedCase
Variable ARCADIO._minReservesAmount (#570) is not in mixedCase
Variable ARCADIO._curReservesAmount (#571) is not in mixedCase
Variable ARCADIO._rewardTotalBNB (#574) is not in mixedCase
Variable ARCADIO._adjustBuyBNB (#575) is not in mixedCase
Variable ARCADIO._adjustSellBNB (#576) is not in mixedCase
Variable ARCADIO._buySellTimer (#579) is not in mixedCase
Variable ARCADIO._buySellDuration (#580) is not in mixedCase
Variable ARCADIO._lastLpSupply (#583) is not in mixedCase
Variable ARCADIO._blacklisted (#586) is not in mixedCase
Variable ARCADIO.DAY (#588) is not in mixedCase
Variable ARCADIO._timeAccuTaxCheckGlobal (#590) is not in mixedCase
Variable ARCADIO._taxAccuTaxCheckGlobal (#591) is not in mixedCase
Variable ARCADIO._timeAccuTaxCheck (#593) is not in mixedCase
Variable ARCADIO._taxAccuTaxCheck (#594) is not in mixedCase
Variable ARCADIO._circuitBreakerFlag (#597) is not in mixedCase
Variable ARCADIO._circuitBreakerTime (#598) is not in mixedCase
Variable ARCADIO._circuitPriceImpact (#599) is not in mixedCase
Variable ARCADIO._projectSupports (#605) is not in mixedCase
Variable ARCADIO._liquifier (#608) is not in mixedCase
Variable ARCADIO._stabilizer (#609) is not in mixedCase
Variable ARCADIO._treasury (#610) is not in mixedCase
Variable ARCADIO._firePot (#611) is not in mixedCase
Variable ARCADIO._liquifierFee (#614) is not in mixedCase
Variable ARCADIO._stabilizerFee (#615) is not in mixedCase
Variable ARCADIO._treasuryFee (#616) is not in mixedCase
Variable ARCADIO._firePotFee (#617) is not in mixedCase
Variable ARCADIO._moreSellFee (#618) is not in mixedCase
Variable ARCADIO._lessBuyFee (#619) is not in mixedCase
Variable ARCADIO._circuitFee (#620) is not in mixedCase
Variable ARCADIO._INIT_TOTAL_SUPPLY (#623) is not in mixedCase
Variable ARCADIO._MAX_TOTAL_SUPPLY (#624) is not in mixedCase
Variable ARCADIO._frag (#626) is not in mixedCase
Variable ARCADIO._initRebaseTime (#627) is not in mixedCase
Variable ARCADIO._lastRebaseTime (#628) is not in mixedCase
Variable ARCADIO._lastRebaseBlock (#629) is not in mixedCase
Variable ARCADIO._lastLiqTime (#632) is not in mixedCase
Variable ARCADIO._rebaseEnabled (#635) is not in mixedCase
Variable ARCADIO._autoBuyBackBurn (#636) is not in mixedCase
Variable ARCADIO._isTxControl (#638) is not in mixedCase
Variable ARCADIO._priceRate (#639) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "sender (#963)" inARCADIO (#536-1616)
Redundant expression "recipient (#964)" inARCADIO (#536-1616)
Redundant expression "sender (#982)" inARCADIO (#536-1616)
Redundant expression "recipient (#983)" inARCADIO (#536-1616)
Redundant expression "buybackEthAmount (#1303)" inARCADIO (#536-1616)
Redundant expression "r1 (#1334)" inARCADIO (#536-1616)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable ARCADIO._circuitBreakerFlag (#597) is too similar to ARCADIO.accuTaxSystem(uint256).circuitBreakerFlag_ (#1123)
Variable ARCADIO._allowedTxImpact (#602) is too similar to ARCADIO.setAllowedTxImpact(uint256).allowedTxImpact_ (#768)
Variable ARCADIO.getRequiredLiqAmount(uint256,uint256).amountADesired (#1559) is too similar to ARCADIO.getRequiredLiqAmount(uint256,uint256).amountBDesired (#1560)
Variable ARCADIO.getRequiredLiqAmount(uint256,uint256).amountAOptimal (#1574) is too similar to ARCADIO.getRequiredLiqAmount(uint256,uint256).amountBOptimal (#1570)
Variable ARCADIO._buySellDuration (#580) is too similar to ARCADIO.setBuySellDuration(uint256).buySellDuration_ (#779)
Variable ARCADIO._circuitFee (#620) is too similar to ARCADIO.setCircuitFee(uint256).circuitFee_ (#764)
Variable ARCADIO._rebaseAmount(uint256).idx_scope_0 (#1189) is too similar to ARCADIO._rebaseAmount(uint256).idx_scope_1 (#1201)
Variable ARCADIO._rebaseAmount(uint256).idx_scope_0 (#1189) is too similar to ARCADIO._rebaseAmount(uint256).idx_scope_2 (#1215)
Variable ARCADIO._rebaseAmount(uint256).idx_scope_1 (#1201) is too similar to ARCADIO._rebaseAmount(uint256).idx_scope_2 (#1215)
Variable ARCADIO._lessBuyFee (#619) is too similar to ARCADIO.setLessBuyFee(uint256).lessBuyFee_ (#760)
Variable ARCADIO._rebaseRate (#564) is too similar to ARCADIO.setRebaseRate(uint256).rebaseRate_ (#752)
Variable ARCADIO._taxAccuTaxCheckGlobal (#591) is too similar to ARCADIO.accuTaxSystem(uint256).taxAccuTaxCheckGlobal_ (#1132)
Variable ARCADIO._timeAccuTaxCheckGlobal (#590) is too similar to ARCADIO.accuTaxSystem(uint256).timeAccuTaxCheckGlobal_ (#1133)
Prevent variables from having similar names.
Additional information: link
ARCADIO._tFeeTotal (#563) is never used in ARCADIO (#536-1616)
Remove unused state variables.
Additional information: link
ARCADIO.DAY (#588) should be constant
ARCADIO._curReservesAmount (#571) should be constant
ARCADIO._isLaunched (#567) should be constant
ARCADIO._minReservesAmount (#570) should be constant
ARCADIO._rewardTotalBNB (#574) should be constant
ARCADIO._tFeeTotal (#563) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
initialize(address) should be declared external:
- ARCADIO.initialize(address) (#671-685)
name() should be declared external:
- ARCADIO.name() (#814-816)
symbol() should be declared external:
- ARCADIO.symbol() (#818-820)
decimals() should be declared external:
- ARCADIO.decimals() (#822-824)
totalSupply() should be declared external:
- ARCADIO.totalSupply() (#826-828)
transfer(address,uint256) should be declared external:
- ARCADIO.transfer(address,uint256) (#835-838)
transferFrom(address,address,uint256) should be declared external:
- ARCADIO.transferFrom(address,address,uint256) (#840-855)
allowance(address,address) should be declared external:
- ARCADIO.allowance(address,address) (#873-879)
approve(address,uint256) should be declared external:
- ARCADIO.approve(address,uint256) (#881-884)
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 audit link on the website
Unable to find whitepaper 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
Unable to find code repository for the project
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
Token has no active CoinMarketCap listing / rank
Unable to find Discord account