PROMISINGCOIN.swapBack() (#554-584) sends eth to arbitrary user
Dangerous calls:
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in PROMISINGCOIN._transferFrom(address,address,uint256) (#455-505):
External calls:
- swapBack() (#478)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#565)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
External calls sending eth:
- swapBack() (#478)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
State variables written after the call(s):
- _balances[sender] = _balances[sender].sub(amountWithFee,Insufficient Balance) (#484)
- _burn(sender,burnFeeAmount) (#485)
- _balances[account] = _balances[account].sub(amount) (#675)
- _balances[recipient] = _balances[recipient].add(amountReceived) (#488)
- amountReceived = takeFee(sender,recipient,amountWithFee) (#487)
- _balances[address(this)] = _balances[address(this)].add(feeAmount) (#542)
- _burn(sender,burnFeeAmount) (#485)
- _totalSupply = _totalSupply.sub(amount) (#676)
- triggerAutoBuyback() (#480)
- inSwap = true (#395)
- inSwap = false (#395)
Apply the check-effects-interactions pattern.
Additional information: link
DividendDistributor.distributeDividend(address) (#276-287) ignores return value by REWARD.transfer(shareholder,amount) (#282)
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) (#276-287):
External calls:
- REWARD.transfer(shareholder,amount) (#282)
State variables written after the call(s):
- shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount) (#284)
- shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount) (#285)
Reentrancy in DividendDistributor.process(uint256) (#249-269):
External calls:
- distributeDividend(shareholders[currentIndex]) (#261)
- REWARD.transfer(shareholder,amount) (#282)
State variables written after the call(s):
- currentIndex ++ (#266)
Reentrancy in DividendDistributor.setShare(address,uint256) (#217-231):
External calls:
- distributeDividend(shareholder) (#219)
- REWARD.transfer(shareholder,amount) (#282)
State variables written after the call(s):
- shares[shareholder].amount = amount (#229)
- shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount) (#230)
Apply the check-effects-interactions pattern.
Additional information: link
PROMISINGCOIN.swapBack() (#554-584) ignores return value by router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
Ensure that all the return values of the function calls are used.
Additional information: link
DividendDistributor.setDistributionCriteria(uint256,uint256) (#212-215) should emit an event for:
- minPeriod = _minPeriod (#213)
- minDistribution = _minDistribution (#214)
PROMISINGCOIN.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool) (#628-636) should emit an event for:
- autoBuybackCap = _cap (#630)
- autoBuybackAmount = _amount (#632)
PROMISINGCOIN.setBuybackMultiplierSettings(uint256,uint256,uint256) (#638-643) should emit an event for:
- buybackMultiplierNumerator = numerator (#640)
- buybackMultiplierDenominator = denominator (#641)
- buybackMultiplierLength = length (#642)
PROMISINGCOIN.setTxLimit(uint256) (#653-656) should emit an event for:
- _maxTxAmount = amount (#655)
PROMISINGCOIN.setFees(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (#688-698) should emit an event for:
- liquidityFee = _liquidityFee (#689)
- reflectionFee = _reflectionFee (#691)
- marketingdevelopmentFee = _marketingdevelopmentFee (#692)
- projectFee = _projectFee (#693)
- totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingdevelopmentFee).add(_projectFee) (#695)
- extraFeeOnSell = _extraFeeOnSell (#696)
- feeDenominator = _feeDenominator (#697)
PROMISINGCOIN.setSwapBackSettings(bool,uint256) (#706-709) should emit an event for:
- swapThreshold = _amount (#708)
PROMISINGCOIN.setTargetLiquidity(uint256,uint256) (#711-714) should emit an event for:
- targetLiquidity = _target (#712)
- targetLiquidityDenominator = _denominator (#713)
Emit an event for critical parameter changes.
Additional information: link
Auth.transferOwnership(address).adr (#100) lacks a zero-check on :
- owner = adr (#100)
PROMISINGCOIN.setFeeReceivers(address,address,address)._developmentReceiver (#700) lacks a zero-check on :
- developmentReceiver = _developmentReceiver (#701)
PROMISINGCOIN.setFeeReceivers(address,address,address)._marketingFeeReceiver (#700) lacks a zero-check on :
- marketingFeeReceiver = _marketingFeeReceiver (#702)
PROMISINGCOIN.setFeeReceivers(address,address,address)._projectFeeReceiver (#700) lacks a zero-check on :
- projectFeeReceiver = _projectFeeReceiver (#703)
Check that the address is not zero.
Additional information: link
DividendDistributor.distributeDividend(address) (#276-287) has external calls inside a loop: REWARD.transfer(shareholder,amount) (#282)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in PROMISINGCOIN._transferFrom(address,address,uint256) (#455-505):
External calls:
- swapBack() (#478)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#565)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
External calls sending eth:
- swapBack() (#478)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
State variables written after the call(s):
- triggerAutoBuyback() (#480)
- buybackMultiplierTriggeredAt = block.timestamp (#609)
- launch() (#482)
- launchedAt = block.number (#650)
Reentrancy in PROMISINGCOIN._transferFrom(address,address,uint256) (#455-505):
External calls:
- swapBack() (#478)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#565)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
- distributor.setShare(sender,_balances[sender]) (#490)
- distributor.setShare(recipient,_balances[recipient]) (#492)
- distributor.process(distributorGas) (#494)
External calls sending eth:
- swapBack() (#478)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
State variables written after the call(s):
- cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval (#500)
Reentrancy in PROMISINGCOIN.constructor() (#397-419):
External calls:
- pair = IDEXFactory(router.factory()).createPair(WBNB,address(this)) (#399)
State variables written after the call(s):
- _allowances[address(this)][address(router)] = type()(uint256).max (#400)
- _balances[_inicial] = _totalSupply (#417)
- developmentReceiver = msg.sender (#414)
- distributor = new DividendDistributor(address(router)) (#401)
- isDividendExempt[pair] = true (#411)
- isDividendExempt[address(this)] = true (#412)
- isDividendExempt[DEAD] = true (#413)
- isFeeExempt[_inicial] = true (#409)
- isTimelockExempt[msg.sender] = true (#403)
- isTimelockExempt[DEAD] = true (#404)
- isTimelockExempt[address(this)] = true (#405)
- isTxLimitExempt[_inicial] = true (#410)
- marketingFeeReceiver = msg.sender (#415)
- projectFeeReceiver = msg.sender (#416)
Reentrancy in DividendDistributor.deposit() (#233-247):
External calls:
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(0,path,address(this),block.timestamp) (#238-243)
State variables written after the call(s):
- dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)) (#246)
- totalDividends = totalDividends.add(amount) (#245)
Reentrancy in DividendDistributor.distributeDividend(address) (#276-287):
External calls:
- REWARD.transfer(shareholder,amount) (#282)
State variables written after the call(s):
- shareholderClaims[shareholder] = block.timestamp (#283)
Reentrancy in DividendDistributor.setShare(address,uint256) (#217-231):
External calls:
- distributeDividend(shareholder) (#219)
- REWARD.transfer(shareholder,amount) (#282)
State variables written after the call(s):
- addShareholder(shareholder) (#222)
- shareholderIndexes[shareholder] = shareholders.length (#308)
- removeShareholder(shareholder) (#225)
- shareholderIndexes[shareholders[shareholders.length - 1]] = shareholderIndexes[shareholder] (#314)
- addShareholder(shareholder) (#222)
- shareholders.push(shareholder) (#309)
- removeShareholder(shareholder) (#225)
- shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length - 1] (#313)
- shareholders.pop() (#315)
- totalShares = totalShares.sub(shares[shareholder].amount).add(amount) (#228)
Reentrancy in PROMISINGCOIN.triggerAutoBuyback() (#606-615):
External calls:
- buyTokens(autoBuybackAmount,DEAD) (#607)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
State variables written after the call(s):
- autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount) (#613)
- autoBuybackBlockLast = block.number (#612)
- autoBuybackEnabled = false (#614)
- buybackMultiplierTriggeredAt = block.timestamp (#609)
Reentrancy in PROMISINGCOIN.triggerManualBuyback(uint256,bool) (#594-600):
External calls:
- buyTokens(amount,DEAD) (#595)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
State variables written after the call(s):
- buybackMultiplierTriggeredAt = block.timestamp (#597)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in PROMISINGCOIN._transferFrom(address,address,uint256) (#455-505):
External calls:
- swapBack() (#478)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#565)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
External calls sending eth:
- swapBack() (#478)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
Event emitted after the call(s):
- BuybackMultiplierActive(buybackMultiplierLength) (#610)
- triggerAutoBuyback() (#480)
- Transfer(sender,address(this),feeAmount) (#543)
- amountReceived = takeFee(sender,recipient,amountWithFee) (#487)
- Transfer(account,address(0),amount) (#677)
- _burn(sender,burnFeeAmount) (#485)
Reentrancy in PROMISINGCOIN._transferFrom(address,address,uint256) (#455-505):
External calls:
- swapBack() (#478)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#565)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
- distributor.setShare(sender,_balances[sender]) (#490)
- distributor.setShare(recipient,_balances[recipient]) (#492)
- distributor.process(distributorGas) (#494)
External calls sending eth:
- swapBack() (#478)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
- triggerAutoBuyback() (#480)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
Event emitted after the call(s):
- Transfer(sender,recipient,amountReceived) (#503)
Reentrancy in PROMISINGCOIN.constructor() (#397-419):
External calls:
- pair = IDEXFactory(router.factory()).createPair(WBNB,address(this)) (#399)
Event emitted after the call(s):
- Transfer(address(0),_inicial,_totalSupply) (#418)
Reentrancy in PROMISINGCOIN.swapBack() (#554-584):
External calls:
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#565)
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
External calls sending eth:
- distributor.deposit{value: amountBNBReflection}() (#573)
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,developmentReceiver,block.timestamp) (#581)
Event emitted after the call(s):
- AutoLiquify(amountBNBLiquidity,amountToLiquify) (#582)
Reentrancy in PROMISINGCOIN.triggerAutoBuyback() (#606-615):
External calls:
- buyTokens(autoBuybackAmount,DEAD) (#607)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
Event emitted after the call(s):
- BuybackMultiplierActive(buybackMultiplierLength) (#610)
Reentrancy in PROMISINGCOIN.triggerManualBuyback(uint256,bool) (#594-600):
External calls:
- buyTokens(amount,DEAD) (#595)
- router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#621)
Event emitted after the call(s):
- BuybackMultiplierActive(buybackMultiplierLength) (#598)
Apply the check-effects-interactions pattern.
Additional information: link
DividendDistributor.shouldDistribute(address) (#271-274) uses timestamp for comparisons
Dangerous comparisons:
- shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution (#272-273)
PROMISINGCOIN._transferFrom(address,address,uint256) (#455-505) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)((heldTokens + amount) <= _maxWalletToken,Total Holding is currently limited, you can not buy that much.) (#462)
- require(bool)(_balances[sender] > 0) (#482)
- require(bool,string)(cooldownTimer[recipient] < block.timestamp,Please wait for cooldown between buys) (#499)
PROMISINGCOIN.getTotalFee(bool) (#524-532) uses timestamp for comparisons
Dangerous comparisons:
- selling && buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp (#527)
PROMISINGCOIN.shouldSwapBack() (#547-552) uses timestamp for comparisons
Dangerous comparisons:
- msg.sender != pair && ! inSwap && swapEnabled && _balances[address(this)] >= swapThreshold (#548-551)
PROMISINGCOIN._burn(address,uint256) (#672-678) uses timestamp for comparisons
Dangerous comparisons:
- require(bool)(amount <= _balances[account]) (#674)
PROMISINGCOIN.isOverLiquified(uint256,uint256) (#750-752) uses timestamp for comparisons
Dangerous comparisons:
- getLiquidityBacking(accuracy) > target (#751)
Avoid relying on block.timestamp.
Additional information: link
DividendDistributor.process(uint256) (#249-269) has costly operations inside a loop:
- currentIndex = 0 (#257)
DividendDistributor.distributeDividend(address) (#276-287) has costly operations inside a loop:
- totalDistributed = totalDistributed.add(amount) (#281)
DividendDistributor.process(uint256) (#249-269) has costly operations inside a loop:
- currentIndex ++ (#266)
Use a local variable to hold the loop computation result.
Additional information: link
PROMISINGCOIN._maxTxAmount (#336) is set pre-construction with a non-constant function or state variable:
- _totalSupply / 200
PROMISINGCOIN._maxWalletToken (#339) is set pre-construction with a non-constant function or state variable:
- _totalSupply / 20
PROMISINGCOIN.swapThreshold (#393) is set pre-construction with a non-constant function or state variable:
- _totalSupply / 1000
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.11 (#17) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.11 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
Low level call in PROMISINGCOIN.swapBack() (#554-584):
- (success) = address(marketingFeeReceiver).call{gas: 30000,value: amountBNBMarketing}() (#574)
- (success2) = address(projectFeeReceiver).call{gas: 30000,value: amountBNBProject}() (#577)
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() (#114) is not in mixedCase
Parameter DividendDistributor.setDistributionCriteria(uint256,uint256)._minPeriod (#212) is not in mixedCase
Parameter DividendDistributor.setDistributionCriteria(uint256,uint256)._minDistribution (#212) is not in mixedCase
Variable DividendDistributor._token (#165) is not in mixedCase
Variable DividendDistributor.REWARD (#173) is not in mixedCase
Variable DividendDistributor.WBNB (#174) is not in mixedCase
Parameter PROMISINGCOIN.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._enabled (#628) is not in mixedCase
Parameter PROMISINGCOIN.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._cap (#628) is not in mixedCase
Parameter PROMISINGCOIN.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._amount (#628) is not in mixedCase
Parameter PROMISINGCOIN.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._period (#628) is not in mixedCase
Parameter PROMISINGCOIN.setAutoBuybackSettings(bool,uint256,uint256,uint256,bool)._autoBuybackMultiplier (#628) is not in mixedCase
Parameter PROMISINGCOIN.setFees(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)._liquidityFee (#688) is not in mixedCase
Parameter PROMISINGCOIN.setFees(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)._buybackFee (#688) is not in mixedCase
Parameter PROMISINGCOIN.setFees(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)._reflectionFee (#688) is not in mixedCase
Parameter PROMISINGCOIN.setFees(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)._marketingdevelopmentFee (#688) is not in mixedCase
Parameter PROMISINGCOIN.setFees(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)._projectFee (#688) is not in mixedCase
Parameter PROMISINGCOIN.setFees(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)._burnFee (#688) is not in mixedCase
Parameter PROMISINGCOIN.setFees(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)._extraFeeOnSell (#688) is not in mixedCase
Parameter PROMISINGCOIN.setFees(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)._feeDenominator (#688) is not in mixedCase
Parameter PROMISINGCOIN.setFeeReceivers(address,address,address)._developmentReceiver (#700) is not in mixedCase
Parameter PROMISINGCOIN.setFeeReceivers(address,address,address)._marketingFeeReceiver (#700) is not in mixedCase
Parameter PROMISINGCOIN.setFeeReceivers(address,address,address)._projectFeeReceiver (#700) is not in mixedCase
Parameter PROMISINGCOIN.setSwapBackSettings(bool,uint256)._enabled (#706) is not in mixedCase
Parameter PROMISINGCOIN.setSwapBackSettings(bool,uint256)._amount (#706) is not in mixedCase
Parameter PROMISINGCOIN.setTargetLiquidity(uint256,uint256)._target (#711) is not in mixedCase
Parameter PROMISINGCOIN.setTargetLiquidity(uint256,uint256)._denominator (#711) is not in mixedCase
Parameter PROMISINGCOIN.setDistributionCriteria(uint256,uint256)._minPeriod (#721) is not in mixedCase
Parameter PROMISINGCOIN.setDistributionCriteria(uint256,uint256)._minDistribution (#721) is not in mixedCase
Parameter PROMISINGCOIN.tradingStatus(bool)._status (#755) is not in mixedCase
Parameter PROMISINGCOIN.setDividendToken(address)._newContract (#759) is not in mixedCase
Parameter PROMISINGCOIN.cooldownEnabled(bool,uint8)._status (#764) is not in mixedCase
Parameter PROMISINGCOIN.cooldownEnabled(bool,uint8)._interval (#764) is not in mixedCase
Variable PROMISINGCOIN.REWARD (#326) is not in mixedCase
Variable PROMISINGCOIN.WBNB (#327) is not in mixedCase
Variable PROMISINGCOIN.DEAD (#328) is not in mixedCase
Variable PROMISINGCOIN.ZERO (#329) is not in mixedCase
Constant PROMISINGCOIN._name (#331) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PROMISINGCOIN._symbol (#332) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PROMISINGCOIN._decimals (#333) is not in UPPER_CASE_WITH_UNDERSCORES
Variable PROMISINGCOIN._totalSupply (#335) is not in mixedCase
Variable PROMISINGCOIN._maxTxAmount (#336) is not in mixedCase
Variable PROMISINGCOIN._maxWalletToken (#339) is not in mixedCase
Variable PROMISINGCOIN._balances (#341) is not in mixedCase
Variable PROMISINGCOIN._allowances (#342) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#118) is too similar to IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#119)
Prevent variables from having similar names.
Additional information: link
PROMISINGCOIN.slitherConstructorVariables() (#323-772) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#328)
PROMISINGCOIN.slitherConstructorVariables() (#323-772) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#329)
PROMISINGCOIN.slitherConstructorVariables() (#323-772) uses literals with too many digits:
- _totalSupply = 500000000 * (10 ** _decimals) (#335)
PROMISINGCOIN.slitherConstructorVariables() (#323-772) uses literals with too many digits:
- distributorGas = 500000 (#386)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
PROMISINGCOIN.REWARD (#326) is never used in PROMISINGCOIN (#323-772)
Remove unused state variables.
Additional information: link
DividendDistributor.WBNB (#174) should be constant
DividendDistributor.dividendsPerShareAccuracyFactor (#187) should be constant
PROMISINGCOIN.DEAD (#328) should be constant
PROMISINGCOIN.REWARD (#326) should be constant
PROMISINGCOIN.WBNB (#327) should be constant
PROMISINGCOIN.ZERO (#329) 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) (#92)
unauthorize(address) should be declared external:
- Auth.unauthorize(address) (#94)
transferOwnership(address) should be declared external:
- Auth.transferOwnership(address) (#100-103)
getUnpaidEarnings(address) should be declared external:
- PROMISINGCOIN.getUnpaidEarnings(address) (#733-735)
tradingStatus(bool) should be declared external:
- PROMISINGCOIN.tradingStatus(bool) (#755-757)
cooldownEnabled(bool,uint8) should be declared external:
- PROMISINGCOIN.cooldownEnabled(bool,uint8) (#764-767)
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