DeFi Professionals At Your Fingertips
You have just made the first step to becoming a part of something that everyone in DeFi wishes to be a part of. As you may see, PlugPRO will be run as a startup business as opposed to your standard crypto project. Please, take your time reading through our website to learn more about the journey you are embarking on!
PlugPro.TeamReleaseLiquidity() (#1402-1412) ignores return value by liquidityToken.transfer(TeamWallet,amount) (#1410)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Reentrancy in PlugPro._taxedTransfer(address,address,uint256,bool,bool) (#880-949):
External calls:
- claimBNB(sender) (#914)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
- _swapContractToken() (#928)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1176-1182)
External calls sending eth:
- claimBNB(sender) (#914)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
- _swapContractToken() (#928)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
State variables written after the call(s):
- _removeToken(sender,amount) (#937)
- _balances[addr] = newAmount (#1040)
- _balances[addr] = newAmount (#1047)
- _balances[address(this)] += contractToken (#940)
- _addToken(recipient,taxedAmount) (#945)
- _balances[addr] = newAmount (#1019)
- _balances[addr] = newAmount (#1030)
- _circulatingSupply -= tokensToBeBurnt (#942)
- _removeToken(sender,amount) (#937)
- alreadyPaidShares[addr] = profitPerShare * newAmount (#1049)
- _addToken(recipient,taxedAmount) (#945)
- alreadyPaidShares[addr] = profitPerShare * newAmount (#1026)
- _swapContractToken() (#928)
- profitPerShare += ((amount * DistributionMultiplier) / totalShares) (#1081)
- _removeToken(sender,amount) (#937)
- toBePaid[addr] += payment (#1051)
- _addToken(recipient,taxedAmount) (#945)
- toBePaid[addr] += payment (#1028)
Reentrancy in PlugPro.claimBNB(address) (#1088-1122):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
State variables written after the call(s):
- _isWithdrawing = false (#1121)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Contract ownership is not renounced (belongs to a wallet)
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.
PlugPro.claimBNB(address) (#1088-1122) uses a dangerous strict equality:
- amount == 0 (#1105)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Contract ticker ($PP) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.
PlugPro.TeamChangeTeamWallet(address).newTeamWallet (#1295) lacks a zero-check on :
- TeamWallet = address(newTeamWallet) (#1296)
PlugPro.TeamChangeWalletTwo(address).newWalletTwo (#1299) lacks a zero-check on :
- walletTwo = address(newWalletTwo) (#1300)
PlugPro.SetupLiquidityTokenAddress(address).liquidityTokenAddress (#1384) lacks a zero-check on :
- _liquidityTokenAddress = liquidityTokenAddress (#1385)
Check that the address is not zero.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#242-245)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#251-255)
getLiquidityReleaseTimeInSeconds() should be declared external:
- PlugPro.getLiquidityReleaseTimeInSeconds() (#1200-1205)
getBurnedTokens() should be declared external:
- PlugPro.getBurnedTokens() (#1207-1209)
getLimits() should be declared external:
- PlugPro.getLimits() (#1211-1213)
getTaxes() should be declared external:
- PlugPro.getTaxes() (#1215-1217)
getAddressSellLockTimeInSeconds(address) should be declared external:
- PlugPro.getAddressSellLockTimeInSeconds(address) (#1220-1227)
getSellLockTimeInSeconds() should be declared external:
- PlugPro.getSellLockTimeInSeconds() (#1228-1230)
getAddressBuyLockTimeInSeconds(address) should be declared external:
- PlugPro.getAddressBuyLockTimeInSeconds(address) (#1233-1240)
getBuyLockTimeInSeconds() should be declared external:
- PlugPro.getBuyLockTimeInSeconds() (#1241-1243)
AddressResetSellLock() should be declared external:
- PlugPro.AddressResetSellLock() (#1247-1249)
AddressResetBuyLock() should be declared external:
- PlugPro.AddressResetBuyLock() (#1252-1254)
BNBWithdraw() should be declared external:
- PlugPro.BNBWithdraw() (#1257-1259)
getDividents(address) should be declared external:
- PlugPro.getDividents(address) (#1260-1263)
TeamWithdrawALLMarketingBNB() should be declared external:
- PlugPro.TeamWithdrawALLMarketingBNB() (#1273-1278)
TeamWithdrawXMarketingBNB(uint256) should be declared external:
- PlugPro.TeamWithdrawXMarketingBNB(uint256) (#1279-1284)
TeamSwitchManualBNBConversion(bool) should be declared external:
- PlugPro.TeamSwitchManualBNBConversion(bool) (#1287-1289)
TeamChangeAntiWhale(uint256) should be declared external:
- PlugPro.TeamChangeAntiWhale(uint256) (#1291-1293)
TeamChangeTeamWallet(address) should be declared external:
- PlugPro.TeamChangeTeamWallet(address) (#1295-1297)
TeamChangeWalletTwo(address) should be declared external:
- PlugPro.TeamChangeWalletTwo(address) (#1299-1301)
TeamDisableSellLock(bool) should be declared external:
- PlugPro.TeamDisableSellLock(bool) (#1304-1306)
TeamDisableBuyLock(bool) should be declared external:
- PlugPro.TeamDisableBuyLock(bool) (#1309-1311)
TeamSetSellLockTime(uint256) should be declared external:
- PlugPro.TeamSetSellLockTime(uint256) (#1314-1317)
TeamSetBuyLockTime(uint256) should be declared external:
- PlugPro.TeamSetBuyLockTime(uint256) (#1320-1323)
AddWalletExclusion(address) should be declared external:
- PlugPro.AddWalletExclusion(address) (#1326-1328)
TeamSetTaxes(uint8,uint8,uint8,uint8,uint8,uint8) should be declared external:
- PlugPro.TeamSetTaxes(uint8,uint8,uint8,uint8,uint8,uint8) (#1331-1342)
TeamChangeMarketingShare(uint8) should be declared external:
- PlugPro.TeamChangeMarketingShare(uint8) (#1345-1348)
TeamCreateLPandBNB() should be declared external:
- PlugPro.TeamCreateLPandBNB() (#1350-1352)
SetupEnableTrading() should be declared external:
- PlugPro.SetupEnableTrading() (#1380-1382)
SetupLiquidityTokenAddress(address) should be declared external:
- PlugPro.SetupLiquidityTokenAddress(address) (#1384-1386)
TeamUnlockLiquidityInSeconds(uint256) should be declared external:
- PlugPro.TeamUnlockLiquidityInSeconds(uint256) (#1392-1394)
TeamReleaseLiquidity() should be declared external:
- PlugPro.TeamReleaseLiquidity() (#1402-1412)
TeamRemoveLiquidity(bool) should be declared external:
- PlugPro.TeamRemoveLiquidity(bool) (#1414-1443)
TeamRemoveRemainingBNB() should be declared external:
- PlugPro.TeamRemoveRemainingBNB() (#1445-1450)
Use the external attribute for functions never called from the contract.
Additional information: link
PlugPro.constructor() (#805-845) ignores return value by _excluded.add(TeamWallet) (#836)
PlugPro.constructor() (#805-845) ignores return value by _excluded.add(walletTwo) (#837)
PlugPro.constructor() (#805-845) ignores return value by _excluded.add(msg.sender) (#838)
PlugPro.constructor() (#805-845) ignores return value by _excludedFromStaking.add(address(_pancakeRouter)) (#840)
PlugPro.constructor() (#805-845) ignores return value by _excludedFromStaking.add(_pancakePairAddress) (#841)
PlugPro.constructor() (#805-845) ignores return value by _excludedFromStaking.add(address(this)) (#842)
PlugPro.constructor() (#805-845) ignores return value by _excludedFromStaking.add(0x000000000000000000000000000000000000dEaD) (#843)
PlugPro._addLiquidity(uint256,uint256) (#1185-1196) ignores return value by _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
PlugPro.AddWalletExclusion(address) (#1326-1328) ignores return value by _excluded.add(exclusionAdd) (#1327)
PlugPro.TeamRemoveLiquidity(bool) (#1414-1443) ignores return value by liquidityToken.approve(address(_pancakeRouter),amount) (#1421)
PlugPro.TeamRemoveLiquidity(bool) (#1414-1443) ignores return value by _pancakeRouter.removeLiquidityETHSupportingFeeOnTransferTokens(address(this),amount,0,0,address(this),block.timestamp) (#1427-1434)
Ensure that all the return values of the function calls are used.
Additional information: link
PlugPro.allowance(address,address)._owner (#1488) shadows:
- Ownable._owner (#207) (state variable)
PlugPro._approve(address,address,uint256).owner (#1496) shadows:
- Ownable.owner() (#223-225) (function)
Rename the local variables that shadow another component.
Additional information: link
PlugPro.TeamWithdrawXMarketingBNB(uint256) (#1279-1284) should emit an event for:
- marketingBalance -= amount (#1281)
PlugPro.TeamChangeAntiWhale(uint256) (#1291-1293) should emit an event for:
- antiWhale = newAntiWhale * 10 ** _decimals (#1292)
PlugPro.TeamSetSellLockTime(uint256) (#1314-1317) should emit an event for:
- sellLockTime = sellLockSeconds (#1316)
PlugPro.TeamSetBuyLockTime(uint256) (#1320-1323) should emit an event for:
- buyLockTime = buyLockSeconds (#1322)
PlugPro.TeamSetTaxes(uint8,uint8,uint8,uint8,uint8,uint8) (#1331-1342) should emit an event for:
- _burnTax = burnTaxes (#1335)
- _liquidityTax = liquidityTaxes (#1336)
- _stakingTax = stakingTaxes (#1337)
- _buyTax = buyTax (#1339)
- _sellTax = sellTax (#1340)
- _transferTax = transferTax (#1341)
PlugPro.TeamChangeMarketingShare(uint8) (#1345-1348) should emit an event for:
- marketingShare = newShare (#1347)
PlugPro.TeamUpdateLimits(uint256,uint256) (#1355-1372) should emit an event for:
- balanceLimit = newBalanceLimit (#1370)
- sellLimit = newSellLimit (#1371)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in PlugPro.TeamRemoveLiquidity(bool) (#1414-1443):
External calls:
- liquidityToken.approve(address(_pancakeRouter),amount) (#1421)
- _pancakeRouter.removeLiquidityETHSupportingFeeOnTransferTokens(address(this),amount,0,0,address(this),block.timestamp) (#1427-1434)
State variables written after the call(s):
- _distributeStake(newBNBBalance) (#1437)
- marketingBalance += marketingSplit (#1071)
- marketingBalance += amount (#1078)
- marketingBalance += newBNBBalance (#1440)
- _distributeStake(newBNBBalance) (#1437)
- profitPerShare += ((amount * DistributionMultiplier) / totalShares) (#1081)
- _distributeStake(newBNBBalance) (#1437)
- totalStakingReward += amount (#1074)
Reentrancy in PlugPro._swapContractToken() (#1138-1168):
External calls:
- _swapTokenForBNB(swapToken) (#1158)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1176-1182)
- _addLiquidity(liqToken,liqBNB) (#1162)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#1162)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
State variables written after the call(s):
- _addLiquidity(liqToken,liqBNB) (#1162)
- _allowances[owner][spender] = amount (#1500)
- _distributeStake(distributeBNB) (#1167)
- marketingBalance += marketingSplit (#1071)
- marketingBalance += amount (#1078)
- _distributeStake(distributeBNB) (#1167)
- profitPerShare += ((amount * DistributionMultiplier) / totalShares) (#1081)
- _distributeStake(distributeBNB) (#1167)
- totalStakingReward += amount (#1074)
Reentrancy in PlugPro._taxedTransfer(address,address,uint256,bool,bool) (#880-949):
External calls:
- claimBNB(sender) (#914)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
- _swapContractToken() (#928)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1176-1182)
External calls sending eth:
- claimBNB(sender) (#914)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
- _swapContractToken() (#928)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
State variables written after the call(s):
- _swapContractToken() (#928)
- _allowances[owner][spender] = amount (#1500)
Reentrancy in PlugPro.constructor() (#805-845):
External calls:
- _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this),_pancakeRouter.WETH()) (#813)
State variables written after the call(s):
- _burnTax = 0 (#831)
- _buyTax = 99 (#827)
- _liquidityTax = 30 (#832)
- _sellTax = 99 (#828)
- _stakingTax = 70 (#833)
- _transferTax = 99 (#829)
- balanceLimit = InitialSupply / BalanceLimitDivider (#816)
- buyLockTime = 20 (#823)
- sellLimit = InitialSupply / SellLimitDivider (#817)
- sellLockTime = 20 (#820)
Reentrancy in PlugPro.transferFrom(address,address,uint256) (#1504-1512):
External calls:
- _transfer(sender,recipient,amount) (#1505)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1176-1182)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1505)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
State variables written after the call(s):
- _approve(sender,msg.sender,currentAllowance - amount) (#1510)
- _allowances[owner][spender] = amount (#1500)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in PlugPro._swapContractToken() (#1138-1168):
External calls:
- _swapTokenForBNB(swapToken) (#1158)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1176-1182)
- _addLiquidity(liqToken,liqBNB) (#1162)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#1162)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1501)
- _addLiquidity(liqToken,liqBNB) (#1162)
Reentrancy in PlugPro._taxedTransfer(address,address,uint256,bool,bool) (#880-949):
External calls:
- claimBNB(sender) (#914)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
- _swapContractToken() (#928)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1176-1182)
External calls sending eth:
- claimBNB(sender) (#914)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
- _swapContractToken() (#928)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1501)
- _swapContractToken() (#928)
- Transfer(sender,recipient,taxedAmount) (#947)
Reentrancy in PlugPro.claimBNB(address) (#1088-1122):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
Event emitted after the call(s):
- OnWithdrawBNB(amount,addr) (#1120)
Reentrancy in PlugPro.transferFrom(address,address,uint256) (#1504-1512):
External calls:
- _transfer(sender,recipient,amount) (#1505)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1176-1182)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1505)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1188-1195)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1114-1118)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1501)
- _approve(sender,msg.sender,currentAllowance - amount) (#1510)
Apply the check-effects-interactions pattern.
Additional information: link
PlugPro._taxedTransfer(address,address,uint256,bool,bool) (#880-949) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_sellLock[sender] <= block.timestamp || sellLockDisabled,Seller in sellLock) (#889)
- require(bool,string)(_buyLock[recipient] <= block.timestamp || buyLockDisabled,Buyer in buyLock) (#901)
- require(bool,string)(_sellLock[sender] <= block.timestamp || sellLockDisabled,Sender in Lock) (#920)
PlugPro.getLiquidityReleaseTimeInSeconds() (#1200-1205) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp < _liquidityUnlockTime (#1201)
PlugPro.getAddressSellLockTimeInSeconds(address) (#1220-1227) uses timestamp for comparisons
Dangerous comparisons:
- lockTime <= block.timestamp (#1222)
PlugPro.getAddressBuyLockTimeInSeconds(address) (#1233-1240) uses timestamp for comparisons
Dangerous comparisons:
- lockTime <= block.timestamp (#1235)
PlugPro._prolongLiquidityLock(uint256) (#1395-1399) uses timestamp for comparisons
Dangerous comparisons:
- require(bool)(newUnlockTime > _liquidityUnlockTime) (#1397)
PlugPro.TeamReleaseLiquidity() (#1402-1412) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#1404)
PlugPro.TeamRemoveLiquidity(bool) (#1414-1443) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#1416)
PlugPro.TeamRemoveRemainingBNB() (#1445-1450) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#1446)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#279-288) uses assembly
- INLINE ASM (#286)
Address._verifyCallResult(bool,bytes,string) (#424-441) uses assembly
- INLINE ASM (#433-436)
Do not use evm assembly.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#424-441) is never used and should be removed
Address.functionCall(address,bytes) (#332-334) is never used and should be removed
Address.functionCall(address,bytes,string) (#342-344) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#357-359) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#367-374) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#406-408) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#416-422) is never used and should be removed
Address.functionStaticCall(address,bytes) (#382-384) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#392-398) is never used and should be removed
Address.isContract(address) (#279-288) is never used and should be removed
Address.sendValue(address,uint256) (#306-312) is never used and should be removed
EnumerableSet._remove(EnumerableSet.Set,bytes32) (#511-543) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (#586-588) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (#694-696) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (#624-626) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (#732-734) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (#603-605) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (#711-713) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (#610-612) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (#718-720) is never used and should be removed
EnumerableSet.remove(EnumerableSet.AddressSet,address) (#650-652) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (#596-598) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (#704-706) is never used and should be removed
PlugPro._isTeam(address) (#799-801) is never used and should be removed
Remove unused functions.
Additional information: link
PlugPro.balanceLimit (#780) is set pre-construction with a non-constant function or state variable:
- _circulatingSupply
PlugPro.sellLimit (#781) is set pre-construction with a non-constant function or state variable:
- _circulatingSupply
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 Address.sendValue(address,uint256) (#306-312):
- (success) = recipient.call{value: amount}() (#310)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#367-374):
- (success,returndata) = target.call{value: value}(data) (#372)
Low level call in Address.functionStaticCall(address,bytes,string) (#392-398):
- (success,returndata) = target.staticcall(data) (#396)
Low level call in Address.functionDelegateCall(address,bytes,string) (#416-422):
- (success,returndata) = target.delegatecall(data) (#420)
Low level call in PlugPro.TeamRemoveRemainingBNB() (#1445-1450):
- (sent) = TeamWallet.call{value: (address(this).balance)}() (#1448)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IPancakeERC20.DOMAIN_SEPARATOR() (#40) is not in mixedCase
Function IPancakeERC20.PERMIT_TYPEHASH() (#41) is not in mixedCase
Function IPancakeRouter01.WETH() (#144) is not in mixedCase
Function PlugPro._getTotalShares() (#1003-1011) is not in mixedCase
Parameter PlugPro.getAddressSellLockTimeInSeconds(address).AddressToCheck (#1220) is not in mixedCase
Parameter PlugPro.getAddressBuyLockTimeInSeconds(address).AddressToCheck (#1233) is not in mixedCase
Function PlugPro.AddressResetSellLock() (#1247-1249) is not in mixedCase
Function PlugPro.AddressResetBuyLock() (#1252-1254) is not in mixedCase
Function PlugPro.BNBWithdraw() (#1257-1259) is not in mixedCase
Function PlugPro.TeamWithdrawALLMarketingBNB() (#1273-1278) is not in mixedCase
Function PlugPro.TeamWithdrawXMarketingBNB(uint256) (#1279-1284) is not in mixedCase
Function PlugPro.TeamSwitchManualBNBConversion(bool) (#1287-1289) is not in mixedCase
Function PlugPro.TeamChangeAntiWhale(uint256) (#1291-1293) is not in mixedCase
Function PlugPro.TeamChangeTeamWallet(address) (#1295-1297) is not in mixedCase
Function PlugPro.TeamChangeWalletTwo(address) (#1299-1301) is not in mixedCase
Function PlugPro.TeamDisableSellLock(bool) (#1304-1306) is not in mixedCase
Function PlugPro.TeamDisableBuyLock(bool) (#1309-1311) is not in mixedCase
Function PlugPro.TeamSetSellLockTime(uint256) (#1314-1317) is not in mixedCase
Function PlugPro.TeamSetBuyLockTime(uint256) (#1320-1323) is not in mixedCase
Function PlugPro.AddWalletExclusion(address) (#1326-1328) is not in mixedCase
Function PlugPro.TeamSetTaxes(uint8,uint8,uint8,uint8,uint8,uint8) (#1331-1342) is not in mixedCase
Function PlugPro.TeamChangeMarketingShare(uint8) (#1345-1348) is not in mixedCase
Function PlugPro.TeamCreateLPandBNB() (#1350-1352) is not in mixedCase
Function PlugPro.TeamUpdateLimits(uint256,uint256) (#1355-1372) is not in mixedCase
Function PlugPro.SetupEnableTrading() (#1380-1382) is not in mixedCase
Function PlugPro.SetupLiquidityTokenAddress(address) (#1384-1386) is not in mixedCase
Function PlugPro.TeamUnlockLiquidityInSeconds(uint256) (#1392-1394) is not in mixedCase
Function PlugPro.TeamReleaseLiquidity() (#1402-1412) is not in mixedCase
Function PlugPro.TeamRemoveLiquidity(bool) (#1414-1443) is not in mixedCase
Function PlugPro.TeamRemoveRemainingBNB() (#1445-1450) is not in mixedCase
Parameter PlugPro.allowance(address,address)._owner (#1488) is not in mixedCase
Constant PlugPro._name (#754) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PlugPro._symbol (#755) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PlugPro._decimals (#756) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PlugPro.InitialSupply (#757) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PlugPro.BalanceLimitDivider (#760) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PlugPro.SellLimitDivider (#762) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PlugPro.MaxSellLockTime (#764) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PlugPro.MaxBuyLockTime (#766) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PlugPro.DefaultLiquidityLockTime (#768) is not in UPPER_CASE_WITH_UNDERSCORES
Variable PlugPro.TeamWallet (#770) is not in mixedCase
Constant PlugPro.PancakeRouter (#775) is not in UPPER_CASE_WITH_UNDERSCORES
Constant PlugPro.DistributionMultiplier (#977) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#63) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#64)
Prevent variables from having similar names.
Additional information: link
PlugPro.constructor() (#805-845) uses literals with too many digits:
- _excludedFromStaking.add(0x000000000000000000000000000000000000dEaD) (#843)
PlugPro._swapContractToken() (#1138-1168) uses literals with too many digits:
- tokenToSwap = 125000000 * 10 ** _decimals (#1141)
PlugPro.slitherConstructorVariables() (#739-1530) uses literals with too many digits:
- antiWhale = 500000000 * 10 ** _decimals (#782)
PlugPro.slitherConstructorConstantVariables() (#739-1530) uses literals with too many digits:
- InitialSupply = 50000000000 * 10 ** _decimals (#757)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Unable to find KYC or doxxing proof
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Token is not listed at Mobula.Finance
Additional information: link
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Unable to find Blog account (Reddit or Medium)
Unable to find Discord account