Vaultarium.swapBack() (#595-637) sends eth to arbitrary user
Dangerous calls:
- distributor.deposit{value: amountBNBReflection}() (#621)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#622)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
Vaultarium.buyTokens(uint256,address) (#666-677) sends eth to arbitrary user
Dangerous calls:
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in Vaultarium._transferFrom(address,address,uint256) (#520-543):
External calls:
- swapBack() (#525)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#605-611)
- distributor.deposit{value: amountBNBReflection}() (#621)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
- triggerAutoBuyback() (#526)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
External calls sending eth:
- swapBack() (#525)
- distributor.deposit{value: amountBNBReflection}() (#621)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#622)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
- triggerAutoBuyback() (#526)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#530)
- _balances[recipient] = _balances[recipient].add(amountReceived) (#534)
- amountReceived = takeFee(sender,recipient,amount) (#532)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#582)
- triggerAutoBuyback() (#526)
- inSwap = true (#459)
- inSwap = false (#459)
Apply the check-effects-interactions pattern.
Additional information: link
DividendDistributor.distributeDividend(address) (#351-362) ignores return value by BUSD.transfer(shareholder,amount) (#357)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
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.
Contract ownership is not renounced (belongs to a wallet)
Reentrancy in Vaultarium.constructor(address) (#461-485):
External calls:
- pair = IDEXFactory(router.factory()).createPair(WBNB,address(this)) (#465)
State variables written after the call(s):
- WBNB = router.WETH() (#467)
Reentrancy in DividendDistributor.distributeDividend(address) (#351-362):
External calls:
- BUSD.transfer(shareholder,amount) (#357)
State variables written after the call(s):
- shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount) (#359)
- shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount) (#360)
Reentrancy in DividendDistributor.process(uint256) (#320-344):
External calls:
- distributeDividend(shareholders[currentIndex]) (#336)
- BUSD.transfer(shareholder,amount) (#357)
State variables written after the call(s):
- currentIndex ++ (#341)
Reentrancy in DividendDistributor.setShare(address,uint256) (#284-298):
External calls:
- distributeDividend(shareholder) (#286)
- BUSD.transfer(shareholder,amount) (#357)
State variables written after the call(s):
- shares[shareholder].amount = amount (#296)
- shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount) (#297)
Apply the check-effects-interactions pattern.
Additional information: link
Vaultarium.swapBack() (#595-637) ignores return value by router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
Ensure that all the return values of the function calls are used.
Additional information: link
DividendDistributor.setDistributionCriteria(uint256,uint256) (#279-282) should emit an event for:
- minPeriod = _minPeriod (#280)
- minDistribution = _minDistribution (#281)
Vaultarium.setAutoBuybackSettings(bool,uint256,uint256,uint256) (#679-686) should emit an event for:
- autoBuybackCap = _cap (#681)
- autoBuybackAmount = _amount (#683)
Vaultarium.setBuybackMultiplierSettings(uint256,uint256,uint256) (#688-693) should emit an event for:
- buybackMultiplierNumerator = numerator (#690)
- buybackMultiplierDenominator = denominator (#691)
- buybackMultiplierLength = length (#692)
Vaultarium.setTxLimit(uint256) (#705-708) should emit an event for:
- _maxTxAmount = amount (#707)
Vaultarium.setFees(uint256,uint256,uint256,uint256,uint256) (#728-736) should emit an event for:
- liquidityFee = _liquidityFee (#729)
- reflectionFee = _reflectionFee (#731)
- marketingFee = _marketingFee (#732)
- totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingFee) (#733)
- feeDenominator = _feeDenominator (#734)
Vaultarium.setSwapBackSettings(bool,uint256) (#743-746) should emit an event for:
- swapThreshold = _amount (#745)
Vaultarium.setTargetLiquidity(uint256,uint256) (#748-751) should emit an event for:
- targetLiquidity = _target (#749)
- targetLiquidityDenominator = _denominator (#750)
Emit an event for critical parameter changes.
Additional information: link
Auth.transferOwnership(address).adr (#161) lacks a zero-check on :
- owner = adr (#162)
Vaultarium.setFeeReceivers(address,address)._autoLiquidityReceiver (#738) lacks a zero-check on :
- autoLiquidityReceiver = _autoLiquidityReceiver (#739)
Vaultarium.setFeeReceivers(address,address)._marketingFeeReceiver (#738) lacks a zero-check on :
- marketingFeeReceiver = _marketingFeeReceiver (#740)
Check that the address is not zero.
Additional information: link
DividendDistributor.distributeDividend(address) (#351-362) has external calls inside a loop: BUSD.transfer(shareholder,amount) (#357)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in Vaultarium.constructor(address) (#461-485):
External calls:
- pair = IDEXFactory(router.factory()).createPair(WBNB,address(this)) (#465)
State variables written after the call(s):
- _allowances[address(this)][address(router)] = _totalSupply (#466)
- approve(_dexRouter,_totalSupply) (#481)
- _allowances[msg.sender][spender] = amount (#499)
- approve(address(pair),_totalSupply) (#482)
- _allowances[msg.sender][spender] = amount (#499)
- _balances[msg.sender] = _totalSupply (#483)
- autoLiquidityReceiver = msg.sender (#478)
- buyBacker[msg.sender] = true (#476)
- distributor = new DividendDistributor(_dexRouter) (#468)
- distributorAddress = address(distributor) (#469)
- isDividendExempt[pair] = true (#473)
- isDividendExempt[address(this)] = true (#474)
- isDividendExempt[DEAD] = true (#475)
- isFeeExempt[msg.sender] = true (#471)
- isTxLimitExempt[msg.sender] = true (#472)
- marketingFeeReceiver = msg.sender (#479)
Reentrancy in DividendDistributor.deposit() (#300-318):
External calls:
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(0,path,address(this),block.timestamp) (#307-312)
State variables written after the call(s):
- dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)) (#317)
- totalDividends = totalDividends.add(amount) (#316)
Reentrancy in DividendDistributor.distributeDividend(address) (#351-362):
External calls:
- BUSD.transfer(shareholder,amount) (#357)
State variables written after the call(s):
- shareholderClaims[shareholder] = block.timestamp (#358)
Reentrancy in DividendDistributor.setShare(address,uint256) (#284-298):
External calls:
- distributeDividend(shareholder) (#286)
- BUSD.transfer(shareholder,amount) (#357)
State variables written after the call(s):
- addShareholder(shareholder) (#290)
- shareholderIndexes[shareholder] = shareholders.length (#384)
- removeShareholder(shareholder) (#292)
- shareholderIndexes[shareholders[shareholders.length - 1]] = shareholderIndexes[shareholder] (#390)
- addShareholder(shareholder) (#290)
- shareholders.push(shareholder) (#385)
- removeShareholder(shareholder) (#292)
- shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length - 1] (#389)
- shareholders.pop() (#391)
- totalShares = totalShares.sub(shares[shareholder].amount).add(amount) (#295)
Reentrancy in Vaultarium.triggerAutoBuyback() (#659-664):
External calls:
- buyTokens(autoBuybackAmount,DEAD) (#660)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
State variables written after the call(s):
- autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount) (#662)
- autoBuybackBlockLast = block.number (#661)
- autoBuybackEnabled = false (#663)
Reentrancy in Vaultarium.triggerBuyback(uint256,bool) (#647-653):
External calls:
- buyTokens(amount,DEAD) (#648)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
State variables written after the call(s):
- buybackMultiplierTriggeredAt = block.timestamp (#650)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Vaultarium._transferFrom(address,address,uint256) (#520-543):
External calls:
- swapBack() (#525)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#605-611)
- distributor.deposit{value: amountBNBReflection}() (#621)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
- triggerAutoBuyback() (#526)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
- distributor.setShare(sender,_balances[sender]) (#536)
- distributor.setShare(recipient,_balances[recipient]) (#537)
- distributor.process(distributorGas) (#539)
External calls sending eth:
- swapBack() (#525)
- distributor.deposit{value: amountBNBReflection}() (#621)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#622)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
- triggerAutoBuyback() (#526)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
Event emitted after the call(s):
- Transfer(sender,recipient,amountReceived) (#541)
Reentrancy in Vaultarium._transferFrom(address,address,uint256) (#520-543):
External calls:
- swapBack() (#525)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#605-611)
- distributor.deposit{value: amountBNBReflection}() (#621)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
- triggerAutoBuyback() (#526)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
External calls sending eth:
- swapBack() (#525)
- distributor.deposit{value: amountBNBReflection}() (#621)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#622)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
- triggerAutoBuyback() (#526)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount) (#583)
- amountReceived = takeFee(sender,recipient,amount) (#532)
Reentrancy in Vaultarium.constructor(address) (#461-485):
External calls:
- pair = IDEXFactory(router.factory()).createPair(WBNB,address(this)) (#465)
Event emitted after the call(s):
- Approval(msg.sender,spender,amount) (#500)
- approve(address(pair),_totalSupply) (#482)
- Approval(msg.sender,spender,amount) (#500)
- approve(_dexRouter,_totalSupply) (#481)
- Transfer(address(0),msg.sender,_totalSupply) (#484)
Reentrancy in Vaultarium.swapBack() (#595-637):
External calls:
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#605-611)
- distributor.deposit{value: amountBNBReflection}() (#621)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
External calls sending eth:
- distributor.deposit{value: amountBNBReflection}() (#621)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#622)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
Event emitted after the call(s):
- AutoLiquify(amountBNBLiquidity,amountToLiquify) (#635)
Reentrancy in Vaultarium.triggerBuyback(uint256,bool) (#647-653):
External calls:
- buyTokens(amount,DEAD) (#648)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
Event emitted after the call(s):
- BuybackMultiplierActive(buybackMultiplierLength) (#651)
Apply the check-effects-interactions pattern.
Additional information: link
DividendDistributor.shouldDistribute(address) (#346-349) uses timestamp for comparisons
Dangerous comparisons:
- shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution (#347-348)
Vaultarium.getMultipliedFee() (#568-577) uses timestamp for comparisons
Dangerous comparisons:
- launchedAtTimestamp + 86400 > block.timestamp (#569)
- buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp (#571)
Vaultarium.shouldSwapBack() (#588-593) uses timestamp for comparisons
Dangerous comparisons:
- msg.sender != pair && ! inSwap && swapEnabled && _balances[address(this)] >= swapThreshold (#589-592)
Vaultarium.isOverLiquified(uint256,uint256) (#770-772) uses timestamp for comparisons
Dangerous comparisons:
- getLiquidityBacking(accuracy) > target (#771)
Avoid relying on block.timestamp.
Additional information: link
Vaultarium.onlyBuybacker() (#494) compares to a boolean constant:
-require(bool,string)(buyBacker[msg.sender] == true,) (#494)
Remove the equality to the boolean constant.
Additional information: link
DividendDistributor.process(uint256) (#320-344) has costly operations inside a loop:
- currentIndex = 0 (#332)
DividendDistributor.distributeDividend(address) (#351-362) has costly operations inside a loop:
- totalDistributed = totalDistributed.add(amount) (#356)
DividendDistributor.process(uint256) (#320-344) has costly operations inside a loop:
- currentIndex ++ (#341)
Use a local variable to hold the loop computation result.
Additional information: link
SafeMath.div(uint256,uint256,string) (#77-82) is never used and should be removed
SafeMath.mod(uint256,uint256) (#66-68) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#84-89) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#9-15) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#36-41) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#43-48) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#24-34) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#17-22) is never used and should be removed
Vaultarium.launched() (#695-697) is never used and should be removed
Remove unused functions.
Additional information: link
Vaultarium._maxTxAmount (#410) is set pre-construction with a non-constant function or state variable:
- _totalSupply.div(400)
Vaultarium.swapThreshold (#457) is set pre-construction with a non-constant function or state variable:
- _totalSupply / 2000
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.13 (#3) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.13 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
Function IDEXRouter.WETH() (#176) is not in mixedCase
Parameter DividendDistributor.setDistributionCriteria(uint256,uint256)._minPeriod (#279) is not in mixedCase
Parameter DividendDistributor.setDistributionCriteria(uint256,uint256)._minDistribution (#279) is not in mixedCase
Variable DividendDistributor._token (#232) is not in mixedCase
Variable DividendDistributor.BUSD (#240) is not in mixedCase
Variable DividendDistributor.WBNB (#241) is not in mixedCase
Parameter Vaultarium.setAutoBuybackSettings(bool,uint256,uint256,uint256)._enabled (#679) is not in mixedCase
Parameter Vaultarium.setAutoBuybackSettings(bool,uint256,uint256,uint256)._cap (#679) is not in mixedCase
Parameter Vaultarium.setAutoBuybackSettings(bool,uint256,uint256,uint256)._amount (#679) is not in mixedCase
Parameter Vaultarium.setAutoBuybackSettings(bool,uint256,uint256,uint256)._period (#679) is not in mixedCase
Parameter Vaultarium.setFees(uint256,uint256,uint256,uint256,uint256)._liquidityFee (#728) is not in mixedCase
Parameter Vaultarium.setFees(uint256,uint256,uint256,uint256,uint256)._buybackFee (#728) is not in mixedCase
Parameter Vaultarium.setFees(uint256,uint256,uint256,uint256,uint256)._reflectionFee (#728) is not in mixedCase
Parameter Vaultarium.setFees(uint256,uint256,uint256,uint256,uint256)._marketingFee (#728) is not in mixedCase
Parameter Vaultarium.setFees(uint256,uint256,uint256,uint256,uint256)._feeDenominator (#728) is not in mixedCase
Parameter Vaultarium.setFeeReceivers(address,address)._autoLiquidityReceiver (#738) is not in mixedCase
Parameter Vaultarium.setFeeReceivers(address,address)._marketingFeeReceiver (#738) is not in mixedCase
Parameter Vaultarium.setSwapBackSettings(bool,uint256)._enabled (#743) is not in mixedCase
Parameter Vaultarium.setSwapBackSettings(bool,uint256)._amount (#743) is not in mixedCase
Parameter Vaultarium.setTargetLiquidity(uint256,uint256)._target (#748) is not in mixedCase
Parameter Vaultarium.setTargetLiquidity(uint256,uint256)._denominator (#748) is not in mixedCase
Parameter Vaultarium.setDistributionCriteria(uint256,uint256)._minPeriod (#753) is not in mixedCase
Parameter Vaultarium.setDistributionCriteria(uint256,uint256)._minDistribution (#753) is not in mixedCase
Variable Vaultarium.BUSD (#399) is not in mixedCase
Variable Vaultarium.WBNB (#400) is not in mixedCase
Variable Vaultarium.DEAD (#401) is not in mixedCase
Variable Vaultarium.ZERO (#402) is not in mixedCase
Variable Vaultarium.DEAD_NON_CHECKSUM (#403) is not in mixedCase
Constant Vaultarium._name (#405) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Vaultarium._symbol (#406) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Vaultarium._decimals (#407) is not in UPPER_CASE_WITH_UNDERSCORES
Variable Vaultarium._totalSupply (#409) is not in mixedCase
Variable Vaultarium._maxTxAmount (#410) is not in mixedCase
Variable Vaultarium._balances (#412) is not in mixedCase
Variable Vaultarium._allowances (#413) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Reentrancy in Vaultarium._transferFrom(address,address,uint256) (#520-543):
External calls:
- swapBack() (#525)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#622)
External calls sending eth:
- swapBack() (#525)
- distributor.deposit{value: amountBNBReflection}() (#621)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#622)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
- triggerAutoBuyback() (#526)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#671-676)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#530)
- _balances[recipient] = _balances[recipient].add(amountReceived) (#534)
- amountReceived = takeFee(sender,recipient,amount) (#532)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#582)
- triggerAutoBuyback() (#526)
- autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount) (#662)
- triggerAutoBuyback() (#526)
- autoBuybackBlockLast = block.number (#661)
- triggerAutoBuyback() (#526)
- autoBuybackEnabled = false (#663)
- triggerAutoBuyback() (#526)
- inSwap = true (#459)
- inSwap = false (#459)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount) (#583)
- amountReceived = takeFee(sender,recipient,amount) (#532)
- Transfer(sender,recipient,amountReceived) (#541)
Reentrancy in Vaultarium.swapBack() (#595-637):
External calls:
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#622)
External calls sending eth:
- distributor.deposit{value: amountBNBReflection}() (#621)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#622)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#627-634)
Event emitted after the call(s):
- AutoLiquify(amountBNBLiquidity,amountToLiquify) (#635)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#181) is too similar to IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#182)
Prevent variables from having similar names.
Additional information: link
Vaultarium.slitherConstructorVariables() (#395-777) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#401)
Vaultarium.slitherConstructorVariables() (#395-777) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#402)
Vaultarium.slitherConstructorVariables() (#395-777) uses literals with too many digits:
- DEAD_NON_CHECKSUM = 0x000000000000000000000000000000000000dEaD (#403)
Vaultarium.slitherConstructorVariables() (#395-777) uses literals with too many digits:
- distributorGas = 500000 (#454)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Vaultarium.BUSD (#399) is never used in Vaultarium (#395-777)
Vaultarium.DEAD_NON_CHECKSUM (#403) is never used in Vaultarium (#395-777)
Remove unused state variables.
Additional information: link
DividendDistributor.WBNB (#241) should be constant
DividendDistributor.dividendsPerShareAccuracyFactor (#254) should be constant
Vaultarium.BUSD (#399) should be constant
Vaultarium.DEAD (#401) should be constant
Vaultarium.DEAD_NON_CHECKSUM (#403) should be constant
Vaultarium.ZERO (#402) should be constant
Vaultarium._totalSupply (#409) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
authorize(address) should be declared external:
- Auth.authorize(address) (#133-135)
unauthorize(address) should be declared external:
- Auth.unauthorize(address) (#140-142)
transferOwnership(address) should be declared external:
- Auth.transferOwnership(address) (#161-165)
launch() should be declared external:
- Vaultarium.launch() (#699-703)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
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 Telegram and Twitter accounts