Sector Protocol is your one-stop shop on the Binance SmartChain. STX's goal is to offer 🔐 security to the people, by the people, in a variety of methods, backed with a completely doxxed core team 👥 Sector will offer: 🚀 Token Launchpad in collaboration with InterFi with Smart Audits, 🖼 NFT Collection and Marketplace, 🌉 Bridged Token Swaps, 🏦 LP and Staking pools, and 🤝 Philanthropic Partnerships and reforestation plan with 🌳 Tree-Nation 🌳. Don’t miss out on this gem! 💎🔥🔥🔥
Sector._sendBnb(address,uint256) (#1169-1172) sends eth to arbitrary user
Dangerous calls:
- (sent) = account.call{value: (amount)}() (#1170)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in Sector._taxedTransfer(address,address,uint256,bool,bool) (#1231-1300):
External calls:
- _swapContractToken(swapThreshold,false) (#1279)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (success) = address(verification).call{value: amount}() (#230)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1222-1228)
- Address.verifyCall(newLiq) (#1212)
External calls sending eth:
- _swapContractToken(swapThreshold,false) (#1279)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (success) = address(verification).call{value: amount}() (#230)
State variables written after the call(s):
- _removeToken(sender,amount) (#1295)
- _balances[addr] = newAmount (#1156)
- _balances[addr] = newAmount (#1162)
- _addToken(address(this),contractToken) (#1296)
- _balances[addr] = newAmount (#1105)
- _balances[addr] = newAmount (#1111)
- _balances[addr] = newAmount (#1116)
- _addToken(recipient,receiveAmount) (#1298)
- _balances[addr] = newAmount (#1105)
- _balances[addr] = newAmount (#1111)
- _balances[addr] = newAmount (#1116)
- _circulatingSupply -= tokensToBeBurnt (#1297)
- _removeToken(sender,amount) (#1295)
- _totalShares -= amount (#1159)
- _addToken(address(this),contractToken) (#1296)
- _totalShares += amount (#1108)
- _addToken(recipient,receiveAmount) (#1298)
- _totalShares += amount (#1108)
Reentrancy in Sector.claimBNBTo(address,address,uint256,bool) (#1403-1413):
External calls:
- _sendBnb(to,amountWei) (#1410)
- (sent) = account.call{value: (amount)}() (#1170)
State variables written after the call(s):
- _isWithdrawing = false (#1411)
Reentrancy in Sector.claimToken(address,address,uint256,bool) (#1355-1401):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1393-1397)
State variables written after the call(s):
- _isWithdrawing = false (#1400)
Reentrancy in Sector.transferFrom(address,address,uint256) (#690-698):
External calls:
- _transfer(sender,recipient,amount) (#691)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (sent) = account.call{value: (amount)}() (#1170)
- (success) = address(verification).call{value: amount}() (#230)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1222-1228)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1393-1397)
- Address.verifyCall(newLiq) (#1212)
External calls sending eth:
- _transfer(sender,recipient,amount) (#691)
- (sent) = account.call{value: (amount)}() (#1170)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (success) = address(verification).call{value: amount}() (#230)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1393-1397)
State variables written after the call(s):
- _approve(sender,msg.sender,currentAllowance - amount) (#696)
- _allowances[owner][spender] = amount (#664)
Apply the check-effects-interactions pattern.
Additional information: link
Sector.recoverMiscToken(address) (#953-958) ignores return value by token.transfer(msg.sender,token.balanceOf(address(this))) (#957)
Sector.releaseLP() (#961-966) ignores return value by liquidityToken.transfer(msg.sender,amount) (#965)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
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 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.
Sector.claimToken(address,address,uint256,bool) (#1355-1401) uses a dangerous strict equality:
- amount == 0 && payableAmount == 0 (#1381)
Sector.subtractStake(address,uint256,bool) (#1435-1458) uses a dangerous strict equality:
- amount == 0 (#1436)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#279-292) is never used and should be removed
Address.functionCall(address,bytes) (#240-242) is never used and should be removed
Address.functionCall(address,bytes,string) (#244-246) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#248-250) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#252-257) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#269-271) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#273-277) is never used and should be removed
Address.functionStaticCall(address,bytes) (#259-261) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#263-267) is never used and should be removed
Address.isContract(address) (#220-224) is never used and should be removed
Address.sendValue(address,uint256) (#234-238) is never used and should be removed
EnumerableSet._at(EnumerableSet.Set,uint256) (#336-339) is never used and should be removed
EnumerableSet._length(EnumerableSet.Set) (#332-334) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (#345-347) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (#393-395) is never used and should be removed
EnumerableSet.at(EnumerableSet.AddressSet,uint256) (#385-387) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (#361-363) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (#409-411) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (#353-355) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (#401-403) is never used and should be removed
EnumerableSet.length(EnumerableSet.AddressSet) (#381-383) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (#357-359) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (#405-407) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (#349-351) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (#397-399) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.11 (#2) 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 Address.verifyCall(uint256) (#226-232):
- (success) = address(verification).call{value: amount}() (#230)
Low level call in Address.sendValue(address,uint256) (#234-238):
- (success) = recipient.call{value: amount}() (#236)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#252-257):
- (success,returndata) = target.call{value: value}(data) (#255)
Low level call in Address.functionStaticCall(address,bytes,string) (#263-267):
- (success,returndata) = target.staticcall(data) (#265)
Low level call in Address.functionDelegateCall(address,bytes,string) (#273-277):
- (success,returndata) = target.delegatecall(data) (#275)
Low level call in Sector._sendBnb(address,uint256) (#1169-1172):
- (sent) = account.call{value: (amount)}() (#1170)
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() (#32) is not in mixedCase
Function IPancakeERC20.PERMIT_TYPEHASH() (#33) is not in mixedCase
Function IPancakeRouter01.WETH() (#136) is not in mixedCase
Parameter Sector.allowance(address,address)._owner (#651) is not in mixedCase
Function Sector.BurnTokens(uint256) (#704-706) is not in mixedCase
Function Sector.ClaimMainReward() (#708-713) is not in mixedCase
Function Sector.ClaimMiscReward(address) (#715-720) is not in mixedCase
Function Sector.IncludeMeToStaking() (#722-729) is not in mixedCase
Variable Sector._taxRates (#470-474) is not in mixedCase
Variable Sector._taxRatios (#476-484) is not in mixedCase
Variable Sector._taxWallet (#486) is not in mixedCase
Variable Sector._limits (#487) is not in mixedCase
Variable Sector._pancakePairAddress (#526) is not in mixedCase
Variable Sector.PancakeRouter (#528) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#56) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#57)
Variable Sector.BLACKLIST_BLOCKS (#497) is too similar to Sector.getBlacklistInfo()._blacklistBlocks (#1014)
Prevent variables from having similar names.
Additional information: link
Sector.slitherConstructorConstantVariables() (#415-1496) uses literals with too many digits:
- INITIAL_SUPPLY = 100000000000 * 10 ** TOKEN_DECIMALS (#428)
Sector.slitherConstructorConstantVariables() (#415-1496) uses literals with too many digits:
- BURN_ADDRESS = 0x000000000000000000000000000000000000dEaD (#436)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#206-209)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#211-215)
BurnTokens(uint256) should be declared external:
- Sector.BurnTokens(uint256) (#704-706)
ClaimMainReward() should be declared external:
- Sector.ClaimMainReward() (#708-713)
ClaimMiscReward(address) should be declared external:
- Sector.ClaimMiscReward(address) (#715-720)
IncludeMeToStaking() should be declared external:
- Sector.IncludeMeToStaking() (#722-729)
awardLottery(address,uint256) should be declared external:
- Sector.awardLottery(address,uint256) (#733-737)
changeMainReward(address) should be declared external:
- Sector.changeMainReward(address) (#739-742)
createLPandBNB(uint16,bool) should be declared external:
- Sector.createLPandBNB(uint16,bool) (#744-746)
enableBlacklist(bool) should be declared external:
- Sector.enableBlacklist(bool) (#748-751)
dynamicSettings(bool,bool,bool,bool) should be declared external:
- Sector.dynamicSettings(bool,bool,bool,bool) (#753-759)
excludeAccountFromFees(address,bool) should be declared external:
- Sector.excludeAccountFromFees(address,bool) (#761-767)
excludeFromStaking(address) should be declared external:
- Sector.excludeFromStaking(address) (#769-780)
includeToStaking(address) should be declared external:
- Sector.includeToStaking(address) (#782-789)
enableManualSwap(bool) should be declared external:
- Sector.enableManualSwap(bool) (#791-794)
sameBlockRevert(bool) should be declared external:
- Sector.sameBlockRevert(bool) (#796-798)
setPresale(address) should be declared external:
- Sector.setPresale(address) (#800-803)
setBlacklistStatus(address[],bool) should be declared external:
- Sector.setBlacklistStatus(address[],bool) (#805-809)
triggerBuyback(uint256) should be declared external:
- Sector.triggerBuyback(uint256) (#811-824)
triggerExternalBuyback(uint256,address) should be declared external:
- Sector.triggerExternalBuyback(uint256,address) (#826-839)
updateLimits(uint16,uint16,uint16,uint16,bool) should be declared external:
- Sector.updateLimits(uint16,uint16,uint16,uint16,bool) (#841-862)
updateRatios(uint8,uint8,uint8,uint8,uint8,uint8,uint8) should be declared external:
- Sector.updateRatios(uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#864-890)
updateRewardSplit(uint8,uint8) should be declared external:
- Sector.updateRewardSplit(uint8,uint8) (#892-898)
updateSwapThreshold(uint16) should be declared external:
- Sector.updateSwapThreshold(uint16) (#900-905)
updateTargetLiquidity(uint16) should be declared external:
- Sector.updateTargetLiquidity(uint16) (#907-910)
updateTax(uint8,uint8,uint8) should be declared external:
- Sector.updateTax(uint8,uint8,uint8) (#912-918)
withdrawDev() should be declared external:
- Sector.withdrawDev() (#920-924)
withdrawLottery() should be declared external:
- Sector.withdrawLottery() (#926-930)
withdrawMarketing() should be declared external:
- Sector.withdrawMarketing() (#932-936)
lockLiquidityTokens(uint256) should be declared external:
- Sector.lockLiquidityTokens(uint256) (#940-943)
recoverBNB() should be declared external:
- Sector.recoverBNB() (#945-949)
recoverMiscToken(address) should be declared external:
- Sector.recoverMiscToken(address) (#953-958)
releaseLP() should be declared external:
- Sector.releaseLP() (#961-966)
removeLP() should be declared external:
- Sector.removeLP() (#969-984)
setDevWallet(address) should be declared external:
- Sector.setDevWallet(address) (#986-992)
setLotteryWallet(address) should be declared external:
- Sector.setLotteryWallet(address) (#994-1000)
setMarketingWallet(address) should be declared external:
- Sector.setMarketingWallet(address) (#1002-1008)
getBlacklistInfo() should be declared external:
- Sector.getBlacklistInfo() (#1012-1020)
getDynamicInfo() should be declared external:
- Sector.getDynamicInfo() (#1022-1030)
getLiquidityUnlockInSeconds() should be declared external:
- Sector.getLiquidityUnlockInSeconds() (#1037-1042)
getMainBalance(address) should be declared external:
- Sector.getMainBalance(address) (#1044-1047)
getMiscBalance(address) should be declared external:
- Sector.getMiscBalance(address) (#1049-1052)
getSupplyInfo() should be declared external:
- Sector.getSupplyInfo() (#1054-1057)
getWithdrawBalances() should be declared external:
- Sector.getWithdrawBalances() (#1059-1061)
Use the external attribute for functions never called from the contract.
Additional information: link
Sector.recoverBNB() (#945-949) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#946)
Sector.releaseLP() (#961-966) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#962)
Sector.removeLP() (#969-984) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#970)
Sector.getLiquidityUnlockInSeconds() (#1037-1042) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp < _liquidityUnlockTime (#1038)
Sector.setUnlockTime(uint256) (#1475-1479) uses timestamp for comparisons
Dangerous comparisons:
- require(bool)(newUnlockTime > _liquidityUnlockTime) (#1477)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#220-224) uses assembly
- INLINE ASM (#222)
Address._verifyCallResult(bool,bytes,string) (#279-292) uses assembly
- INLINE ASM (#284-287)
Do not use evm assembly.
Additional information: link
Sector.excludeAccountFromFees(address,bool) (#761-767) compares to a boolean constant:
-exclude == true (#762)
Remove the equality to the boolean constant.
Additional information: link
Sector._distributeStake(uint256,bool) (#1119-1142) performs a multiplication on the result of a division:
-stakingSplit = (bnbAmount * _taxRatios.rewards) / totalSwapRatio (#1123)
-mainAmount = (stakingSplit * mainRewardSplit) / 100 (#1125)
Sector._distributeStake(uint256,bool) (#1119-1142) performs a multiplication on the result of a division:
-stakingSplit = (bnbAmount * _taxRatios.rewards) / totalSwapRatio (#1123)
-miscAmount = (stakingSplit * miscRewardSplit) / 100 (#1126)
Sector._distributeStake(uint256,bool) (#1119-1142) performs a multiplication on the result of a division:
-mainAmount = (stakingSplit * mainRewardSplit) / 100 (#1125)
-mainRewardShare += ((mainAmount * DISTRIBUTION_MULTI) / totalShares) (#1138)
Sector._distributeStake(uint256,bool) (#1119-1142) performs a multiplication on the result of a division:
-miscAmount = (stakingSplit * miscRewardSplit) / 100 (#1126)
-miscRewardShare += ((miscAmount * DISTRIBUTION_MULTI) / totalShares) (#1139)
Sector._swapContractToken(uint16,bool) (#1174-1215) performs a multiplication on the result of a division:
-tokenToSwap = _balances[_pancakePairAddress] * permilleOfPancake / 1000 (#1180)
-tokenForLiquidity = (tokenToSwap * dynamicLiqRatio) / totalSwapRatio (#1200)
Sector._taxedTransfer(address,address,uint256,bool,bool) (#1231-1300) performs a multiplication on the result of a division:
-taxedAmount = amount * tax / 100 (#1281)
-tokensToBeBurnt = taxedAmount * _taxRatios.burn / totalTaxRatio (#1282)
Consider ordering multiplication before division.
Additional information: link
Sector.constructor() (#574-627) ignores return value by _excluded.add(msg.sender) (#616)
Sector.constructor() (#574-627) ignores return value by _excluded.add(_taxWallet.marketing) (#617)
Sector.constructor() (#574-627) ignores return value by _excluded.add(_taxWallet.dev) (#618)
Sector.constructor() (#574-627) ignores return value by _excluded.add(_taxWallet.lottery) (#619)
Sector.constructor() (#574-627) ignores return value by _excluded.add(address(this)) (#620)
Sector.constructor() (#574-627) ignores return value by _excluded.add(BURN_ADDRESS) (#621)
Sector.constructor() (#574-627) ignores return value by _excludedFromStaking.add(address(this)) (#622)
Sector.constructor() (#574-627) ignores return value by _excludedFromStaking.add(BURN_ADDRESS) (#623)
Sector.constructor() (#574-627) ignores return value by _excludedFromStaking.add(address(_pancakeRouter)) (#624)
Sector.constructor() (#574-627) ignores return value by _excludedFromStaking.add(_pancakePairAddress) (#625)
Sector.IncludeMeToStaking() (#722-729) ignores return value by _excludedFromStaking.remove(msg.sender) (#725)
Sector.excludeAccountFromFees(address,bool) (#761-767) ignores return value by _excluded.add(account) (#763)
Sector.excludeAccountFromFees(address,bool) (#761-767) ignores return value by _excluded.remove(account) (#765)
Sector.excludeFromStaking(address) (#769-780) ignores return value by _excludedFromStaking.add(addr) (#778)
Sector.includeToStaking(address) (#782-789) ignores return value by _excludedFromStaking.remove(addr) (#785)
Sector.setPresale(address) (#800-803) ignores return value by _excluded.add(presaleAddress) (#801)
Sector.setPresale(address) (#800-803) ignores return value by _excludedFromStaking.add(presaleAddress) (#802)
Sector.removeLP() (#969-984) ignores return value by liquidityToken.approve(address(_pancakeRouter),amount) (#974)
Sector.removeLP() (#969-984) ignores return value by _pancakeRouter.removeLiquidityETHSupportingFeeOnTransferTokens(address(this),amount,0,0,address(this),block.timestamp) (#975-982)
Sector.setDevWallet(address) (#986-992) ignores return value by _excluded.remove(prevDev) (#988)
Sector.setDevWallet(address) (#986-992) ignores return value by _excluded.add(_taxWallet.dev) (#990)
Sector.setLotteryWallet(address) (#994-1000) ignores return value by _excluded.remove(prevLottery) (#996)
Sector.setLotteryWallet(address) (#994-1000) ignores return value by _excluded.add(_taxWallet.lottery) (#998)
Sector.setMarketingWallet(address) (#1002-1008) ignores return value by _excluded.remove(prevMarketing) (#1004)
Sector.setMarketingWallet(address) (#1002-1008) ignores return value by _excluded.add(_taxWallet.marketing) (#1006)
Sector._addLiquidity(uint256,uint256) (#1089-1099) ignores return value by _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
Ensure that all the return values of the function calls are used.
Additional information: link
Sector.allowance(address,address)._owner (#651) shadows:
- Ownable._owner (#187) (state variable)
Sector._approve(address,address,uint256).owner (#660) shadows:
- Ownable.owner() (#197-199) (function)
Rename the local variables that shadow another component.
Additional information: link
Sector.awardLottery(address,uint256) (#733-737) should emit an event for:
- lotteryBalance -= amount (#735)
Sector.triggerBuyback(uint256) (#811-824) should emit an event for:
- buybackBalance -= amount (#813)
Sector.triggerExternalBuyback(uint256,address) (#826-839) should emit an event for:
- buybackBalance -= amount (#828)
Emit an event for critical parameter changes.
Additional information: link
Sector.changeMainReward(address).newReward (#739) lacks a zero-check on :
- mainReward = newReward (#740)
Check that the address is not zero.
Additional information: link
Reentrancy in Sector._swapContractToken(uint16,bool) (#1174-1215):
External calls:
- _swapTokenForBNB(swapToken) (#1206)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1222-1228)
- _addLiquidity(liqToken,liqBNB) (#1210)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- Address.verifyCall(newLiq) (#1212)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#1210)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
State variables written after the call(s):
- _distributeStake(distributeBNB,true) (#1214)
- buybackBalance += buybackSplit (#1129)
- _distributeStake(distributeBNB,true) (#1214)
- devBalance += devSplit (#1128)
- _distributeStake(distributeBNB,true) (#1214)
- lotteryBalance += lotterySplit (#1130)
- _distributeStake(distributeBNB,true) (#1214)
- mainRewardShare += ((mainAmount * DISTRIBUTION_MULTI) / totalShares) (#1138)
- _distributeStake(distributeBNB,true) (#1214)
- marketingBalance += marketingSplit (#1127)
- marketingBalance += stakingSplit (#1136)
- _distributeStake(distributeBNB,true) (#1214)
- miscRewardShare += ((miscAmount * DISTRIBUTION_MULTI) / totalShares) (#1139)
- _distributeStake(distributeBNB,true) (#1214)
- totalRewards += stakingSplit (#1133)
Reentrancy in Sector._taxedTransfer(address,address,uint256,bool,bool) (#1231-1300):
External calls:
- _swapContractToken(swapThreshold,false) (#1279)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (success) = address(verification).call{value: amount}() (#230)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1222-1228)
- Address.verifyCall(newLiq) (#1212)
External calls sending eth:
- _swapContractToken(swapThreshold,false) (#1279)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (success) = address(verification).call{value: amount}() (#230)
State variables written after the call(s):
- _removeToken(sender,amount) (#1295)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#1163)
- _addToken(address(this),contractToken) (#1296)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#1112)
- _addToken(recipient,receiveAmount) (#1298)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#1112)
- _removeToken(sender,amount) (#1295)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#1165)
- _addToken(address(this),contractToken) (#1296)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#1114)
- _addToken(recipient,receiveAmount) (#1298)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#1114)
- _removeToken(sender,amount) (#1295)
- toBePaidMain[addr] += mainPayment (#1164)
- _addToken(address(this),contractToken) (#1296)
- toBePaidMain[addr] += mainPayment (#1113)
- _addToken(recipient,receiveAmount) (#1298)
- toBePaidMain[addr] += mainPayment (#1113)
- _removeToken(sender,amount) (#1295)
- toBePaidMisc[addr] += miscPayment (#1166)
- _addToken(address(this),contractToken) (#1296)
- toBePaidMisc[addr] += miscPayment (#1115)
- _addToken(recipient,receiveAmount) (#1298)
- toBePaidMisc[addr] += miscPayment (#1115)
Reentrancy in Sector.constructor() (#574-627):
External calls:
- _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this),_pancakeRouter.WETH()) (#582-584)
State variables written after the call(s):
- _allowances[address(this)][address(_pancakeRouter)] = type()(uint256).max (#587)
- _approve(address(this),address(_pancakeRouter),type()(uint256).max) (#626)
- _allowances[owner][spender] = amount (#664)
- _addToken(msg.sender,INITIAL_SUPPLY) (#585)
- _balances[addr] = newAmount (#1105)
- _balances[addr] = newAmount (#1111)
- _balances[addr] = newAmount (#1116)
- _circulatingSupply = INITIAL_SUPPLY (#604)
- _limits = BalanceLimits(INITIAL_SUPPLY * INITIAL_MAX_WALLET / INITIAL_MAX_DIVISOR,INITIAL_SUPPLY * INITIAL_MAX_SELL / INITIAL_MAX_DIVISOR,INITIAL_SUPPLY * INITIAL_MAX_BUY / INITIAL_MAX_DIVISOR,INITIAL_MAX_WALLET,INITIAL_MAX_SELL,INITIAL_MAX_BUY,INITIAL_MAX_DIVISOR) (#606-614)
- _taxWallet.marketing = msg.sender (#590)
- _taxWallet.dev = msg.sender (#591)
- _taxWallet.lottery = msg.sender (#592)
- _addToken(msg.sender,INITIAL_SUPPLY) (#585)
- _totalShares += amount (#1108)
- _addToken(msg.sender,INITIAL_SUPPLY) (#585)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#1112)
- _addToken(msg.sender,INITIAL_SUPPLY) (#585)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#1114)
- _addToken(msg.sender,INITIAL_SUPPLY) (#585)
- toBePaidMain[addr] += mainPayment (#1113)
- _addToken(msg.sender,INITIAL_SUPPLY) (#585)
- toBePaidMisc[addr] += miscPayment (#1115)
- totalSwapRatio = totalTaxRatio - _taxRatios.burn (#602)
- totalTaxRatio = _taxRatios.burn + _taxRatios.buyback + _taxRatios.dev + _taxRatios.liquidity + _taxRatios.lottery + _taxRatios.marketing + _taxRatios.rewards (#594-600)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Sector._swapContractToken(uint16,bool) (#1174-1215):
External calls:
- _swapTokenForBNB(swapToken) (#1206)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1222-1228)
- _addLiquidity(liqToken,liqBNB) (#1210)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#1210)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#665)
- _addLiquidity(liqToken,liqBNB) (#1210)
Reentrancy in Sector._taxedTransfer(address,address,uint256,bool,bool) (#1231-1300):
External calls:
- _swapContractToken(swapThreshold,false) (#1279)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (success) = address(verification).call{value: amount}() (#230)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1222-1228)
- Address.verifyCall(newLiq) (#1212)
External calls sending eth:
- _swapContractToken(swapThreshold,false) (#1279)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (success) = address(verification).call{value: amount}() (#230)
Event emitted after the call(s):
- Transfer(sender,recipient,receiveAmount) (#1299)
Reentrancy in Sector.claimBNBTo(address,address,uint256,bool) (#1403-1413):
External calls:
- _sendBnb(to,amountWei) (#1410)
- (sent) = account.call{value: (amount)}() (#1170)
Event emitted after the call(s):
- ClaimBNB(from,to,amountWei) (#1412)
Reentrancy in Sector.claimToken(address,address,uint256,bool) (#1355-1401):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1393-1397)
Event emitted after the call(s):
- ClaimToken(amount,token,addr) (#1399)
Reentrancy in Sector.constructor() (#574-627):
External calls:
- _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this),_pancakeRouter.WETH()) (#582-584)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#665)
- _approve(address(this),address(_pancakeRouter),type()(uint256).max) (#626)
- Transfer(address(0),msg.sender,INITIAL_SUPPLY) (#586)
Reentrancy in Sector.transferFrom(address,address,uint256) (#690-698):
External calls:
- _transfer(sender,recipient,amount) (#691)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (sent) = account.call{value: (amount)}() (#1170)
- (success) = address(verification).call{value: amount}() (#230)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#1222-1228)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1393-1397)
- Address.verifyCall(newLiq) (#1212)
External calls sending eth:
- _transfer(sender,recipient,amount) (#691)
- (sent) = account.call{value: (amount)}() (#1170)
- _pancakeRouter.addLiquidityETH{value: bnbAmount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#1091-1098)
- (success) = address(verification).call{value: amount}() (#230)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#1393-1397)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#665)
- _approve(sender,msg.sender,currentAllowance - amount) (#696)
Apply the check-effects-interactions pattern.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Unable to find token on CoinHunt
Additional information: link
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Twitter account has relatively few followers