STRANGERTHINGSTOKEN4.swapBack() (#977-1043) sends eth to arbitrary user
Dangerous calls:
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in STRANGERTHINGSTOKEN4._transferFrom(address,address,uint256) (#703-772):
External calls:
- swapBack() (#743)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#996-1002)
- distributor.deposit{value: amountBNBReflection}() (#1017)
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1033-1040)
External calls sending eth:
- swapBack() (#743)
- distributor.deposit{value: amountBNBReflection}() (#1017)
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1033-1040)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#747-750)
- _balances[recipient] = _balances[recipient].add(amountReceived) (#755)
- amountReceived = takeFee(sender,amount,isSell,GREEDMode) (#752-754)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#939)
Apply the check-effects-interactions pattern.
Additional information: link
DividendDistributor.distributeDividend(address) (#397-414) ignores return value by RWRD.transfer(shareholder,amount) (#405)
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 DividendDistributor.distributeDividend(address) (#397-414):
External calls:
- RWRD.transfer(shareholder,amount) (#405)
State variables written after the call(s):
- shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount) (#407-409)
- shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount) (#410-412)
Reentrancy in DividendDistributor.process(uint256) (#359-385):
External calls:
- distributeDividend(shareholders[currentIndex]) (#377)
- RWRD.transfer(shareholder,amount) (#405)
State variables written after the call(s):
- currentIndex ++ (#382)
Reentrancy in DividendDistributor.setShare(address,uint256) (#318-338):
External calls:
- distributeDividend(shareholder) (#324)
- RWRD.transfer(shareholder,amount) (#405)
State variables written after the call(s):
- shares[shareholder].amount = amount (#334)
- shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount) (#335-337)
Apply the check-effects-interactions pattern.
Additional information: link
STRANGERTHINGSTOKEN4.swapBack() (#977-1043) ignores return value by router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1033-1040)
STRANGERTHINGSTOKEN4.setRewardtoken(address) (#1234-1236) ignores return value by distributor.setRewardtoken(_rwrdtoken) (#1235)
Ensure that all the return values of the function calls are used.
Additional information: link
DividendDistributor.setDistributionCriteria(uint256,uint256) (#310-316) should emit an event for:
- minPeriod = _minPeriod (#314)
- minDistribution = _minDistribution (#315)
STRANGERTHINGSTOKEN4.setMaxWalletPercent(uint256) (#698-700) should emit an event for:
- _maxWalletToken = _totalSupply.mul(maxWallPercent).div(10000) (#699)
STRANGERTHINGSTOKEN4.enableGREED(uint256) (#955-958) should emit an event for:
- GREEDDuration = _seconds (#957)
STRANGERTHINGSTOKEN4.cooldownEnabled(bool,uint8) (#966-969) should emit an event for:
- cooldownTimerInterval = _interval (#968)
STRANGERTHINGSTOKEN4.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool) (#1100-1114) should emit an event for:
- autoBuybackCap = _cap (#1108)
- autoBuybackAmount = _amount (#1110)
STRANGERTHINGSTOKEN4.setBuybackMultiplierSettings(uint256,uint256,uint256) (#1117-1126) should emit an event for:
- buybackMultiplierNumerator = numerator (#1123)
- buybackMultiplierDenominator = denominator (#1124)
- buybackMultiplierLength = length (#1125)
STRANGERTHINGSTOKEN4.setBuyTxLimitInPercent(uint256) (#1139-1144) should emit an event for:
- _maxBuyTxAmount = _totalSupply.mul(maxBuyTxPercent).div(10000) (#1143)
STRANGERTHINGSTOKEN4.setSellTxLimitInPercent(uint256) (#1147-1152) should emit an event for:
- _maxSellTxAmount = _totalSupply.mul(maxSellTxPercent).div(10000) (#1151)
STRANGERTHINGSTOKEN4.setBuyFees(uint256,uint256,uint256,uint256,uint256,uint256) (#1190-1209) should emit an event for:
- liquidityFeeBuy = _liquidityFeeBuy (#1198)
- buybackFeeBuy = _buybackFeeBuy (#1199)
- reflectionFeeBuy = _reflectionFeeBuy (#1200)
- marketingFeeBuy = _marketingFeeBuy (#1201)
- devFeeBuy = _devFeeBuy (#1202)
- totalFeeBuy = _liquidityFeeBuy.add(_buybackFeeBuy).add(_reflectionFeeBuy).add(_marketingFeeBuy).add(_devFeeBuy) (#1203-1207)
- feeDenominator = _feeDenominator (#1208)
STRANGERTHINGSTOKEN4.setSellFees(uint256,uint256,uint256,uint256,uint256,uint256) (#1212-1231) should emit an event for:
- liquidityFeeSell = _liquidityFeeSell (#1220)
- buybackFeeSell = _buybackFeeSell (#1221)
- reflectionFeeSell = _reflectionFeeSell (#1222)
- marketingFeeSell = _marketingFeeSell (#1223)
- devFeeSell = _devFeeSell (#1224)
- totalFeeSell = _liquidityFeeSell.add(_buybackFeeSell).add(_reflectionFeeSell).add(_marketingFeeSell).add(_devFeeSell) (#1225-1229)
- feeDenominator = _feeDenominator (#1230)
STRANGERTHINGSTOKEN4.setSwapBackSettings(bool,uint256) (#1260-1266) should emit an event for:
- swapThreshold = (_totalSupply * _amount) / 10000 (#1265)
STRANGERTHINGSTOKEN4.setTargetLiquidity(uint256,uint256) (#1269-1275) should emit an event for:
- targetLiquidity = _target (#1273)
- targetLiquidityDenominator = _denominator (#1274)
Emit an event for critical parameter changes.
Additional information: link
Auth.transferOwnership(address).account (#164) lacks a zero-check on :
- owner = account (#165)
STRANGERTHINGSTOKEN4.setDevFeeReceiver(address)._devFeeReceiver (#1239) lacks a zero-check on :
- devFeeReceiver = _devFeeReceiver (#1240)
STRANGERTHINGSTOKEN4.setMarketingFeeReceiver(address)._marketingFeeReceiver (#1244) lacks a zero-check on :
- marketingFeeReceiver = _marketingFeeReceiver (#1248)
STRANGERTHINGSTOKEN4.setLPFeeReceiver(address)._autoLiquidityReceiver (#1252) lacks a zero-check on :
- autoLiquidityReceiver = _autoLiquidityReceiver (#1256)
Check that the address is not zero.
Additional information: link
DividendDistributor.distributeDividend(address) (#397-414) has external calls inside a loop: RWRD.transfer(shareholder,amount) (#405)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in STRANGERTHINGSTOKEN4.constructor() (#596-625):
External calls:
- pair = IDEXFactory(router.factory()).createPair(WBNB,address(this)) (#598)
State variables written after the call(s):
- _allowances[address(this)][address(router)] = type()(uint256).max (#599)
- _balances[_presaler] = _totalSupply (#623)
- autoLiquidityReceiver = msg.sender (#619)
- devFeeReceiver = 0x4f182Ea1aEe5543E73aCb8Afa6e9b9339C869096 (#621)
- distributor = new DividendDistributor(address(router)) (#601)
- isDividendExempt[pair] = true (#614)
- isDividendExempt[address(this)] = true (#615)
- isDividendExempt[DEAD] = true (#616)
- isFeeExempt[_presaler] = true (#605)
- isTimelockExempt[msg.sender] = true (#609)
- isTimelockExempt[DEAD] = true (#610)
- isTimelockExempt[address(this)] = true (#611)
- isTxLimitExempt[_presaler] = true (#606)
- marketingFeeReceiver = 0x78BBC3c39Ff3A3a51AfF253bD246027abA264768 (#620)
Reentrancy in DividendDistributor.deposit() (#340-357):
External calls:
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(0,path,address(this),block.timestamp) (#347-349)
State variables written after the call(s):
- dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)) (#354-356)
- totalDividends = totalDividends.add(amount) (#353)
Reentrancy in DividendDistributor.distributeDividend(address) (#397-414):
External calls:
- RWRD.transfer(shareholder,amount) (#405)
State variables written after the call(s):
- shareholderClaims[shareholder] = block.timestamp (#406)
Reentrancy in DividendDistributor.setShare(address,uint256) (#318-338):
External calls:
- distributeDividend(shareholder) (#324)
- RWRD.transfer(shareholder,amount) (#405)
State variables written after the call(s):
- addShareholder(shareholder) (#328)
- shareholderIndexes[shareholder] = shareholders.length (#451)
- removeShareholder(shareholder) (#330)
- shareholderIndexes[shareholders[shareholders.length - 1]] = shareholderIndexes[shareholder] (#459-461)
- addShareholder(shareholder) (#328)
- shareholders.push(shareholder) (#452)
- removeShareholder(shareholder) (#330)
- shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length - 1] (#456-458)
- shareholders.pop() (#462)
- totalShares = totalShares.sub(shares[shareholder].amount).add(amount) (#333)
Reentrancy in STRANGERTHINGSTOKEN4.triggerAutoBuyback() (#1075-1086):
External calls:
- buyTokens(autoBuybackAmount,DEAD) (#1076)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1094-1096)
State variables written after the call(s):
- autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount) (#1082)
- autoBuybackBlockLast = block.number (#1081)
- autoBuybackEnabled = false (#1084)
- buybackMultiplierTriggeredAt = block.timestamp (#1078)
Reentrancy in STRANGERTHINGSTOKEN4.triggerManualBuyback(uint256,bool) (#1056-1067):
External calls:
- buyTokens(amountToBuy,DEAD) (#1062)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1094-1096)
State variables written after the call(s):
- buybackMultiplierTriggeredAt = block.timestamp (#1064)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in STRANGERTHINGSTOKEN4._transferFrom(address,address,uint256) (#703-772):
External calls:
- swapBack() (#743)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#996-1002)
- distributor.deposit{value: amountBNBReflection}() (#1017)
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1033-1040)
- distributor.setShare(sender,_balances[sender]) (#759)
- distributor.setShare(recipient,_balances[recipient]) (#763-765)
- distributor.process(distributorGas) (#768)
External calls sending eth:
- swapBack() (#743)
- distributor.deposit{value: amountBNBReflection}() (#1017)
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1033-1040)
Event emitted after the call(s):
- Transfer(sender,recipient,amountReceived) (#770)
Reentrancy in STRANGERTHINGSTOKEN4._transferFrom(address,address,uint256) (#703-772):
External calls:
- swapBack() (#743)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#996-1002)
- distributor.deposit{value: amountBNBReflection}() (#1017)
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1033-1040)
External calls sending eth:
- swapBack() (#743)
- distributor.deposit{value: amountBNBReflection}() (#1017)
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1033-1040)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount) (#940)
- amountReceived = takeFee(sender,amount,isSell,GREEDMode) (#752-754)
Reentrancy in STRANGERTHINGSTOKEN4.constructor() (#596-625):
External calls:
- pair = IDEXFactory(router.factory()).createPair(WBNB,address(this)) (#598)
Event emitted after the call(s):
- Transfer(address(0),_presaler,_totalSupply) (#624)
Reentrancy in STRANGERTHINGSTOKEN4.swapBack() (#977-1043):
External calls:
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#996-1002)
- distributor.deposit{value: amountBNBReflection}() (#1017)
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1033-1040)
External calls sending eth:
- distributor.deposit{value: amountBNBReflection}() (#1017)
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1033-1040)
Event emitted after the call(s):
- AutoLiquify(amountBNBLiquidity,amountToLiquify) (#1041)
Reentrancy in STRANGERTHINGSTOKEN4.triggerAutoBuyback() (#1075-1086):
External calls:
- buyTokens(autoBuybackAmount,DEAD) (#1076)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1094-1096)
Event emitted after the call(s):
- BuybackMultiplierActive(buybackMultiplierLength) (#1079)
Reentrancy in STRANGERTHINGSTOKEN4.triggerManualBuyback(uint256,bool) (#1056-1067):
External calls:
- buyTokens(amountToBuy,DEAD) (#1062)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1094-1096)
Event emitted after the call(s):
- BuybackMultiplierActive(buybackMultiplierLength) (#1065)
Apply the check-effects-interactions pattern.
Additional information: link
DividendDistributor.shouldDistribute(address) (#387-395) uses timestamp for comparisons
Dangerous comparisons:
- shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution (#392-394)
STRANGERTHINGSTOKEN4.inGREEDTime() (#809-815) uses timestamp for comparisons
Dangerous comparisons:
- GREEDTriggeredAt.add(GREEDDuration) > block.timestamp (#810)
STRANGERTHINGSTOKEN4.checkBuyCooldown(address,address) (#844-854) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(cooldownTimer[recipient] < block.timestamp,Please wait between two buys) (#848-851)
STRANGERTHINGSTOKEN4.getTotalFee(bool) (#886-898) uses timestamp for comparisons
Dangerous comparisons:
- selling && buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp (#891-893)
Avoid relying on block.timestamp.
Additional information: link
DividendDistributor.process(uint256) (#359-385) has costly operations inside a loop:
- currentIndex = 0 (#373)
DividendDistributor.distributeDividend(address) (#397-414) has costly operations inside a loop:
- totalDistributed = totalDistributed.add(amount) (#404)
DividendDistributor.process(uint256) (#359-385) has costly operations inside a loop:
- currentIndex ++ (#382)
Use a local variable to hold the loop computation result.
Additional information: link
STRANGERTHINGSTOKEN4.launch() (#1134-1136) is never used and should be removed
STRANGERTHINGSTOKEN4.launched() (#1129-1131) is never used and should be removed
STRANGERTHINGSTOKEN4.shouldAutoBuyback() (#1046-1053) is never used and should be removed
STRANGERTHINGSTOKEN4.triggerAutoBuyback() (#1075-1086) is never used and should be removed
Remove unused functions.
Additional information: link
STRANGERTHINGSTOKEN4._maxBuyTxAmount (#508) is set pre-construction with a non-constant function or state variable:
- (_totalSupply * 300) / 10000
STRANGERTHINGSTOKEN4._maxSellTxAmount (#509) is set pre-construction with a non-constant function or state variable:
- (_totalSupply * 150) / 10000
STRANGERTHINGSTOKEN4._maxWalletToken (#510) is set pre-construction with a non-constant function or state variable:
- (_totalSupply * 300) / 10000
STRANGERTHINGSTOKEN4.swapThreshold (#554) is set pre-construction with a non-constant function or state variable:
- (_totalSupply * 30) / 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
Low level call in STRANGERTHINGSTOKEN4.swapBack() (#977-1043):
- (successMarketing) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#1018-1024)
- (successDev) = address(devFeeReceiver).call{gas: 30000,value: amountBNBDev}() (#1025-1028)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IDEXRouter.WETH() (#184) is not in mixedCase
Parameter DividendDistributor.setDistributionCriteria(uint256,uint256)._minPeriod (#311) is not in mixedCase
Parameter DividendDistributor.setDistributionCriteria(uint256,uint256)._minDistribution (#312) is not in mixedCase
Parameter DividendDistributor.setRewardtoken(address)._rwrdtoken (#465) is not in mixedCase
Variable DividendDistributor._token (#261) is not in mixedCase
Variable DividendDistributor.RWRD (#270) is not in mixedCase
Variable DividendDistributor.WBNB (#271) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.takeFee(address,uint256,bool,bool).GREEDMode (#920) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.enableGREED(uint256)._seconds (#955) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.cooldownEnabled(bool,uint8)._status (#966) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.cooldownEnabled(bool,uint8)._interval (#966) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.blacklistAddress(address,bool)._address (#972) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.blacklistAddress(address,bool)._value (#972) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._enabled (#1101) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._cap (#1102) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._amount (#1103) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._period (#1104) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._autoBuybackMultiplier (#1105) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setBuyFees(uint256,uint256,uint256,uint256,uint256,uint256)._liquidityFeeBuy (#1191) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setBuyFees(uint256,uint256,uint256,uint256,uint256,uint256)._buybackFeeBuy (#1192) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setBuyFees(uint256,uint256,uint256,uint256,uint256,uint256)._reflectionFeeBuy (#1193) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setBuyFees(uint256,uint256,uint256,uint256,uint256,uint256)._marketingFeeBuy (#1194) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setBuyFees(uint256,uint256,uint256,uint256,uint256,uint256)._devFeeBuy (#1195) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setBuyFees(uint256,uint256,uint256,uint256,uint256,uint256)._feeDenominator (#1196) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setSellFees(uint256,uint256,uint256,uint256,uint256,uint256)._liquidityFeeSell (#1213) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setSellFees(uint256,uint256,uint256,uint256,uint256,uint256)._buybackFeeSell (#1214) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setSellFees(uint256,uint256,uint256,uint256,uint256,uint256)._reflectionFeeSell (#1215) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setSellFees(uint256,uint256,uint256,uint256,uint256,uint256)._marketingFeeSell (#1216) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setSellFees(uint256,uint256,uint256,uint256,uint256,uint256)._devFeeSell (#1217) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setSellFees(uint256,uint256,uint256,uint256,uint256,uint256)._feeDenominator (#1218) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setRewardtoken(address)._rwrdtoken (#1234) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setDevFeeReceiver(address)._devFeeReceiver (#1239) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setMarketingFeeReceiver(address)._marketingFeeReceiver (#1244) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setLPFeeReceiver(address)._autoLiquidityReceiver (#1252) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setSwapBackSettings(bool,uint256)._enabled (#1260) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setSwapBackSettings(bool,uint256)._amount (#1260) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setTargetLiquidity(uint256,uint256)._target (#1269) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setTargetLiquidity(uint256,uint256)._denominator (#1269) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setDistributionCriteria(uint256,uint256)._minPeriod (#1285) is not in mixedCase
Parameter STRANGERTHINGSTOKEN4.setDistributionCriteria(uint256,uint256)._minDistribution (#1286) is not in mixedCase
Variable STRANGERTHINGSTOKEN4.WBNB (#490) is not in mixedCase
Variable STRANGERTHINGSTOKEN4.DEAD (#491) is not in mixedCase
Variable STRANGERTHINGSTOKEN4.ZERO (#492) is not in mixedCase
Constant STRANGERTHINGSTOKEN4._name (#500) is not in UPPER_CASE_WITH_UNDERSCORES
Constant STRANGERTHINGSTOKEN4._symbol (#501) is not in UPPER_CASE_WITH_UNDERSCORES
Constant STRANGERTHINGSTOKEN4._decimals (#502) is not in UPPER_CASE_WITH_UNDERSCORES
Variable STRANGERTHINGSTOKEN4._totalSupply (#505) is not in mixedCase
Variable STRANGERTHINGSTOKEN4._maxBuyTxAmount (#508) is not in mixedCase
Variable STRANGERTHINGSTOKEN4._maxSellTxAmount (#509) is not in mixedCase
Variable STRANGERTHINGSTOKEN4._maxWalletToken (#510) is not in mixedCase
Variable STRANGERTHINGSTOKEN4._balances (#513) is not in mixedCase
Variable STRANGERTHINGSTOKEN4._allowances (#514) is not in mixedCase
Variable STRANGERTHINGSTOKEN4.GREEDTriggeredAt (#547) is not in mixedCase
Variable STRANGERTHINGSTOKEN4.GREEDDuration (#548) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#189) is too similar to IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#190)
Prevent variables from having similar names.
Additional information: link
STRANGERTHINGSTOKEN4.slitherConstructorVariables() (#486-1337) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#491)
STRANGERTHINGSTOKEN4.slitherConstructorVariables() (#486-1337) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#492)
STRANGERTHINGSTOKEN4.slitherConstructorVariables() (#486-1337) uses literals with too many digits:
- _totalSupply = 1000000 * (10 ** _decimals) (#505)
STRANGERTHINGSTOKEN4.slitherConstructorVariables() (#486-1337) uses literals with too many digits:
- distributorGas = 500000 (#575)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
DividendDistributor.WBNB (#271) should be constant
DividendDistributor.dividendsPerShareAccuracyFactor (#284) should be constant
STRANGERTHINGSTOKEN4.DEAD (#491) should be constant
STRANGERTHINGSTOKEN4.WBNB (#490) should be constant
STRANGERTHINGSTOKEN4.ZERO (#492) should be constant
STRANGERTHINGSTOKEN4._totalSupply (#505) should be constant
STRANGERTHINGSTOKEN4.deadBlocks (#551) should be constant
STRANGERTHINGSTOKEN4.tradingOpen (#586) 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) (#136-138)
unauthorize(address) should be declared external:
- Auth.unauthorize(address) (#143-145)
transferOwnership(address) should be declared external:
- Auth.transferOwnership(address) (#164-168)
getTotalFee(bool) should be declared external:
- STRANGERTHINGSTOKEN4.getTotalFee(bool) (#886-898)
enableGREED(uint256) should be declared external:
- STRANGERTHINGSTOKEN4.enableGREED(uint256) (#955-958)
cooldownEnabled(bool,uint8) should be declared external:
- STRANGERTHINGSTOKEN4.cooldownEnabled(bool,uint8) (#966-969)
blacklistAddress(address,bool) should be declared external:
- STRANGERTHINGSTOKEN4.blacklistAddress(address,bool) (#972-974)
getUnpaidEarnings(address) should be declared external:
- STRANGERTHINGSTOKEN4.getUnpaidEarnings(address) (#1297-1303)
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