Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
SwapHandler._createLP(uint256) (#1239-1248) sends eth to arbitrary user
Dangerous calls:
- IRouter(swapRouter).addLiquidityETH{value: address(this).balance}(owner(),erc20Amount_,0,0,erc20.autoLPWallet(),block.timestamp + 10000) (#1240-1247)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in HODLRewardsDistributor.batchProcessClaims(uint256) (#1082-1096):
External calls:
- claimPending(allShareHolders[_lastProccessedIndex]) (#1090)
- (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
State variables written after the call(s):
- _incrementLastProccessed() (#1093)
- _lastProccessedIndex ++ (#1145)
- _lastProccessedIndex = 1 (#1147)
Reentrancy in HODLRewardsDistributor.claimPending(address) (#1058-1080):
External calls:
- (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
State variables written after the call(s):
- user.claimed = user.claimed.add(pendingAmount) (#1074)
- user.rewardDebt = user.shares.mul(accPerShare).div(1e36) (#1078)
Reentrancy in HODLRewardsDistributor.setShare(address,uint256) (#1006-1018):
External calls:
- claimPending(sharholderAddress_) (#1014)
- (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
State variables written after the call(s):
- _updateUserShares(sharholderAddress_,amount_) (#1017)
- user.shares = newAmount_ (#1125)
- user.rewardDebt = user.shares.mul(accPerShare).div(1e36) (#1126)
- _updateUserShares(sharholderAddress_,amount_) (#1017)
- totalRewardsDebt = totalRewardsDebt.sub(user.rewardDebt) (#1124)
- totalRewardsDebt = totalRewardsDebt.add(user.rewardDebt) (#1127)
Apply the check-effects-interactions pattern.
Additional information: link
HODLRewardsDistributor.depositWrappedNativeTokenRewards(uint256) (#999-1004) ignores return value by IWrappedNativeToken(wbnb).transferFrom(msg.sender,address(this),amount_) (#1002)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
HODLRewardsDistributor._updateUserShares(address,uint256) (#1117-1142) uses a dangerous strict equality:
- user.shares == 0 && indexOfShareHolders[sharholderAddress_] != 0 (#1133)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
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.
Reentrancy in SuperBNB._customTransfer(address,address,uint256) (#2011-2046):
External calls:
- _transfer(from_,address(swapHundler),currentTax) (#2035)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
- processReserves() (#2039)
- swapHundler.swapToNativeWrappedToken(autoLPReserved,hodlReserved,marketingReserved) (#1849-1853)
State variables written after the call(s):
- processReserves() (#2039)
- autoLPReserved = 0 (#1855)
- processReserves() (#2039)
- hodlReserved = 0 (#1856)
- processReserves() (#2039)
- marketingReserved = 0 (#1857)
Reentrancy in SuperBNB._customTransfer(address,address,uint256) (#2011-2046):
External calls:
- _transfer(from_,address(swapHundler),currentTax) (#2035)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
- processReserves() (#2039)
- swapHundler.swapToNativeWrappedToken(autoLPReserved,hodlReserved,marketingReserved) (#1849-1853)
- _transfer(from_,to_,netTransfer) (#2042)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
State variables written after the call(s):
- _transfer(from_,to_,netTransfer) (#2042)
- _balances[sender] = senderBalance - amount (#1524)
- _balances[recipient] += amount (#1526)
Reentrancy in SuperBNB.constructor(string,string,address,address,address,address) (#1723-1797):
External calls:
- wbnbPair = IFactory(IRouter(swapRouter_).factory()).createPair(wbnb_,address(this)) (#1738-1740)
- _mint(autoLP_,TOTAL_SUPPLY) (#1777)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
State variables written after the call(s):
- hodlRewardDistributor = new HODLRewardsDistributor(wbnb_) (#1780)
Reentrancy in SuperBNB.constructor(string,string,address,address,address,address) (#1723-1797):
External calls:
- wbnbPair = IFactory(IRouter(swapRouter_).factory()).createPair(wbnb_,address(this)) (#1738-1740)
- _mint(autoLP_,TOTAL_SUPPLY) (#1777)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
- hodlRewardDistributor.excludeFromRewards(wbnbPair) (#1783)
- hodlRewardDistributor.excludeFromRewards(swapRouter_) (#1784)
- hodlRewardDistributor.excludeFromRewards(autoLP_) (#1785)
- hodlRewardDistributor.excludeFromRewards(marketing_) (#1786)
- hodlRewardDistributor.excludeFromRewards(address(this)) (#1787)
- hodlRewardDistributor.excludeFromRewards(address(swapHundler)) (#1788)
State variables written after the call(s):
- isDistributorSet = true (#1796)
- whitlisted[address(hodlRewardDistributor)] = Whitlisted(true,true,true) (#1790-1794)
Reentrancy in SuperBNB.processReserves() (#1848-1858):
External calls:
- swapHundler.swapToNativeWrappedToken(autoLPReserved,hodlReserved,marketingReserved) (#1849-1853)
State variables written after the call(s):
- autoLPReserved = 0 (#1855)
- hodlReserved = 0 (#1856)
- marketingReserved = 0 (#1857)
Reentrancy in SuperBNB.transferFrom(address,address,uint256) (#1828-1838):
External calls:
- success = _customTransfer(from_,to_,amount_) (#1835)
- swapHundler.swapToNativeWrappedToken(autoLPReserved,hodlReserved,marketingReserved) (#1849-1853)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
State variables written after the call(s):
- approve(from_,allowance(from_,_msgSender()).sub(amount_)) (#1836)
- _allowances[owner][spender] = amount (#1603)
Apply the check-effects-interactions pattern.
Additional information: link
SwapHandler.swapToNativeWrappedToken(uint256,uint256,uint256) (#1190-1215) ignores return value by address(erc20.hodlRewardDistributor()).call{value: address(this).balance}() (#1213)
Ensure that the return value of a low-level call is checked or logged.
Additional information: link
SwapHandler.swapToNativeWrappedToken(uint256,uint256,uint256) (#1190-1215) ignores return value by IERC20(owner()).approve(swapRouter,IERC20(owner()).balanceOf(address(this))) (#1195)
SwapHandler._createLP(uint256) (#1239-1248) ignores return value by IRouter(swapRouter).addLiquidityETH{value: address(this).balance}(owner(),erc20Amount_,0,0,erc20.autoLPWallet(),block.timestamp + 10000) (#1240-1247)
Ensure that all the return values of the function calls are used.
Additional information: link
SuperBNB.setMaxTx(uint256) (#1718) should emit an event for:
- maxTx = maxTx_ (#1718)
SuperBNB.setMaxBalance(uint256) (#1721) should emit an event for:
- maxBalance = maxBalance_ (#1721)
SuperBNB.setPeocessingGasLimit(uint256) (#1976-1980) should emit an event for:
- processingGasLimit = maxAmount_ (#1979)
SuperBNB.setMinimumShareForRewards(uint256) (#1990-1992) should emit an event for:
- minimumShareForRewards = minimumAmount_ (#1991)
Emit an event for critical parameter changes.
Additional information: link
HODLRewardsDistributor.constructor(address).wbnb_ (#955) lacks a zero-check on :
- wbnb = wbnb_ (#956)
HODLRewardsDistributor.claimPending(address).sharholderAddress_ (#1059) lacks a zero-check on :
- (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
SwapHandler.constructor(address,address).swapRouter_ (#1179) lacks a zero-check on :
- swapRouter = swapRouter_ (#1182)
SwapHandler.constructor(address,address).wrappedNativeToken_ (#1180) lacks a zero-check on :
- wrappedNativeToken = wrappedNativeToken_ (#1183)
SuperBNB.constructor(string,string,address,address,address,address).wbnb_ (#1726) lacks a zero-check on :
- wbnb = wbnb_ (#1732)
- wbnbPair = IFactory(IRouter(swapRouter_).factory()).createPair(wbnb_,address(this)) (#1738-1740)
SuperBNB.constructor(string,string,address,address,address,address).swapRouter_ (#1727) lacks a zero-check on :
- swapRouter = swapRouter_ (#1733)
- wbnbPair = IFactory(IRouter(swapRouter_).factory()).createPair(wbnb_,address(this)) (#1738-1740)
SuperBNB.constructor(string,string,address,address,address,address).autoLP_ (#1728) lacks a zero-check on :
- autoLPWallet = autoLP_ (#1734)
SuperBNB.constructor(string,string,address,address,address,address).marketing_ (#1729) lacks a zero-check on :
- marketingWallet = marketing_ (#1735)
Check that the address is not zero.
Additional information: link
HODLRewardsDistributor.claimPending(address) (#1058-1080) has external calls inside a loop: (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in HODLRewardsDistributor.claimPending(address) (#1058-1080):
External calls:
- (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
State variables written after the call(s):
- totalClaimed = totalClaimed.add(pendingAmount) (#1075)
- totalRewardsDebt = totalRewardsDebt.sub(user.rewardDebt) (#1077)
- totalRewardsDebt = totalRewardsDebt.add(user.rewardDebt) (#1079)
Reentrancy in SuperBNB.constructor(string,string,address,address,address,address) (#1723-1797):
External calls:
- wbnbPair = IFactory(IRouter(swapRouter_).factory()).createPair(wbnb_,address(this)) (#1738-1740)
State variables written after the call(s):
- isLpPair[wbnbPair] = true (#1742)
- swapHundler = new SwapHandler(swapRouter_,wbnb_) (#1744)
- whitlisted[autoLP_] = Whitlisted(true,true,true) (#1747-1751)
- whitlisted[marketing_] = Whitlisted(true,true,true) (#1753-1757)
- whitlisted[address(this)] = Whitlisted(true,true,true) (#1759-1763)
- whitlisted[address(swapHundler)] = Whitlisted(true,true,true) (#1765-1769)
- whitlisted[swapRouter_] = Whitlisted(true,true,false) (#1771-1775)
Reentrancy in SuperBNB.setDistributor(address) (#1799-1819):
External calls:
- hodlRewardDistributor.excludeFromRewards(wbnbPair) (#1805)
- hodlRewardDistributor.excludeFromRewards(swapRouter) (#1806)
- hodlRewardDistributor.excludeFromRewards(autoLPWallet) (#1807)
- hodlRewardDistributor.excludeFromRewards(marketingWallet) (#1808)
- hodlRewardDistributor.excludeFromRewards(address(this)) (#1809)
- hodlRewardDistributor.excludeFromRewards(address(swapHundler)) (#1810)
State variables written after the call(s):
- isDistributorSet = true (#1818)
- whitlisted[address(hodlRewardDistributor)] = Whitlisted(true,true,true) (#1812-1816)
Reentrancy in SuperBNB.setReflection(bool) (#1960-1967):
External calls:
- processReserves() (#1965)
- swapHundler.swapToNativeWrappedToken(autoLPReserved,hodlReserved,marketingReserved) (#1849-1853)
State variables written after the call(s):
- reflectionEnabled = isEnabled_ (#1966)
Reentrancy in HODLRewardsDistributor.setShare(address,uint256) (#1006-1018):
External calls:
- claimPending(sharholderAddress_) (#1014)
- (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
State variables written after the call(s):
- _updateUserShares(sharholderAddress_,amount_) (#1017)
- allShareHolders.push(sharholderAddress_) (#1130)
- allShareHolders[indexOfRemoved] = allShareHolders[allShareHolders.length - 1] (#1136)
- allShareHolders.pop() (#1139)
- _updateUserShares(sharholderAddress_,amount_) (#1017)
- indexOfShareHolders[sharholderAddress_] = allShareHolders.length - 1 (#1131)
- indexOfShareHolders[sharholderAddress_] = 0 (#1137)
- indexOfShareHolders[allShareHolders[indexOfRemoved]] = indexOfRemoved (#1138)
- _updateUserShares(sharholderAddress_,amount_) (#1017)
- totalShares = totalShares.sub(user.shares).add(newAmount_) (#1123)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in SuperBNB._customTransfer(address,address,uint256) (#2011-2046):
External calls:
- _transfer(from_,address(swapHundler),currentTax) (#2035)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
- processReserves() (#2039)
- swapHundler.swapToNativeWrappedToken(autoLPReserved,hodlReserved,marketingReserved) (#1849-1853)
- _transfer(from_,to_,netTransfer) (#2042)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#1528)
- _transfer(from_,to_,netTransfer) (#2042)
Reentrancy in HODLRewardsDistributor.claimPending(address) (#1058-1080):
External calls:
- (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
Event emitted after the call(s):
- Claimed(sharholderAddress_,pendingAmount) (#1072)
Reentrancy in SuperBNB.constructor(string,string,address,address,address,address) (#1723-1797):
External calls:
- wbnbPair = IFactory(IRouter(swapRouter_).factory()).createPair(wbnb_,address(this)) (#1738-1740)
- _mint(autoLP_,TOTAL_SUPPLY) (#1777)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
Event emitted after the call(s):
- Transfer(address(0),account,amount) (#1549)
- _mint(autoLP_,TOTAL_SUPPLY) (#1777)
Reentrancy in HODLRewardsDistributor.setShare(address,uint256) (#1006-1018):
External calls:
- claimPending(sharholderAddress_) (#1014)
- (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
Event emitted after the call(s):
- ShareUpdated(sharholderAddress_,newAmount_) (#1141)
- _updateUserShares(sharholderAddress_,amount_) (#1017)
Reentrancy in SuperBNB.transferFrom(address,address,uint256) (#1828-1838):
External calls:
- success = _customTransfer(from_,to_,amount_) (#1835)
- swapHundler.swapToNativeWrappedToken(autoLPReserved,hodlReserved,marketingReserved) (#1849-1853)
- hodlRewardDistributor.batchProcessClaims(processingGasLimit) (#2050-2052)
- hodlRewardDistributor.setShare(wallet,balanceOf(wallet)) (#2074)
- hodlRewardDistributor.setShare(wallet,0) (#2074)
- hodlRewardDistributor.batchProcessClaims(gasleft()().mul(80).div(100)) (#2050-2052)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1604)
- approve(from_,allowance(from_,_msgSender()).sub(amount_)) (#1836)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#50-60) uses assembly
- INLINE ASM (#56-58)
Address.verifyCallResult(bool,bytes,string) (#219-239) uses assembly
- INLINE ASM (#231-234)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['^0.8.0', '^0.8.4']
- ^0.8.4 (#11)
- ^0.8.0 (#27)
- ^0.8.4 (#245)
- ^0.8.4 (#256)
- ^0.8.4 (#303)
- ^0.8.4 (#314)
- ^0.8.4 (#368)
- ^0.8.0 (#382)
- ^0.8.4 (#610)
- ^0.8.0 (#622)
- ^0.8.0 (#649)
- ^0.8.0 (#727)
- ^0.8.0 (#812)
- ^0.8.4 (#911)
- ^0.8.4 (#1153)
- ^0.8.0 (#1265)
- ^0.8.0 (#1295)
- ^0.8.4 (#1651)
Use one Solidity version.
Additional information: link
HODLRewardsDistributor.claimPending(address) (#1058-1080) has costly operations inside a loop:
- totalClaimed = totalClaimed.add(pendingAmount) (#1075)
HODLRewardsDistributor.claimPending(address) (#1058-1080) has costly operations inside a loop:
- totalRewardsDebt = totalRewardsDebt.sub(user.rewardDebt) (#1077)
HODLRewardsDistributor.claimPending(address) (#1058-1080) has costly operations inside a loop:
- totalRewardsDebt = totalRewardsDebt.add(user.rewardDebt) (#1079)
HODLRewardsDistributor._incrementLastProccessed() (#1144-1148) has costly operations inside a loop:
- _lastProccessedIndex ++ (#1145)
HODLRewardsDistributor._incrementLastProccessed() (#1144-1148) has costly operations inside a loop:
- _lastProccessedIndex = 1 (#1147)
Use a local variable to hold the loop computation result.
Additional information: link
Address.functionCall(address,bytes) (#103-105) is never used and should be removed
Address.functionCall(address,bytes,string) (#113-119) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#132-138) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#146-157) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#192-194) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#202-211) is never used and should be removed
Address.functionStaticCall(address,bytes) (#165-167) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#175-184) is never used and should be removed
Address.isContract(address) (#50-60) is never used and should be removed
Address.sendValue(address,uint256) (#78-83) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (#219-239) is never used and should be removed
Context._msgData() (#639-641) is never used and should be removed
ERC20._burn(address,uint256) (#1565-1580) is never used and should be removed
SafeERC20._callOptionalReturn(IERC20,bytes) (#895-905) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (#852-865) is never used and should be removed
SafeERC20.safeDecreaseAllowance(IERC20,address,uint256) (#876-887) is never used and should be removed
SafeERC20.safeIncreaseAllowance(IERC20,address,uint256) (#867-874) is never used and should be removed
SafeERC20.safeTransfer(IERC20,address,uint256) (#828-834) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (#836-843) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#569-578) is never used and should be removed
SafeMath.mod(uint256,uint256) (#529-531) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#595-604) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (#546-555) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#400-406) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#442-447) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#454-459) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#425-435) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#413-418) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (#27) allows old versions
Pragma version^0.8.0 (#382) allows old versions
Pragma version^0.8.0 (#622) allows old versions
Pragma version^0.8.0 (#649) allows old versions
Pragma version^0.8.0 (#727) allows old versions
Pragma version^0.8.0 (#812) allows old versions
Pragma version^0.8.0 (#1265) allows old versions
Pragma version^0.8.0 (#1295) allows old versions
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.sendValue(address,uint256) (#78-83):
- (success) = recipient.call{value: amount}() (#81)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#146-157):
- (success,returndata) = target.call{value: value}(data) (#155)
Low level call in Address.functionStaticCall(address,bytes,string) (#175-184):
- (success,returndata) = target.staticcall(data) (#182)
Low level call in Address.functionDelegateCall(address,bytes,string) (#202-211):
- (success,returndata) = target.delegatecall(data) (#209)
Low level call in HODLRewardsDistributor.claimPending(address) (#1058-1080):
- (sent) = address(sharholderAddress_).call{value: pendingAmount}() (#1067)
Low level call in SwapHandler.swapToNativeWrappedToken(uint256,uint256,uint256) (#1190-1215):
- address(erc20.hodlRewardDistributor()).call{value: address(this).balance}() (#1213)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable IHODLRewardDistributor.excludeFromRewards(address).shareHolderToBeExcluded_ (#285) is too similar to IHODLRewardDistributor.includeInRewards(address).shareHolderToBeIncluded_ (#289)
Variable HODLRewardsDistributor.excludeFromRewards(address).shareHolderToBeExcluded_ (#1024) is too similar to HODLRewardsDistributor.includeInRewards(address).shareHolderToBeIncluded_ (#1043)
Variable SuperBNB.TOTAL_SUPPLY (#1666) is too similar to ERC20._totalSupply (#1330)
Prevent variables from having similar names.
Additional information: link
SuperBNB.slitherConstructorVariables() (#1653-2077) uses literals with too many digits:
- processingGasLimit = 500000 (#1715)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- HODLRewardsDistributor.renounceOwnership() (#1102)
- Ownable.renounceOwnership() (#698-700)
- SuperBNB.renounceOwnership() (#1985)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#706-709)
- SwapHandler.transferOwnership(address) (#1254-1258)
totalPending() should be declared external:
- HODLRewardsDistributor.totalPending() (#970-972)
batchProcessClaims(uint256) should be declared external:
- HODLRewardsDistributor.batchProcessClaims(uint256) (#1082-1096)
name() should be declared external:
- ERC20.name() (#1352-1354)
symbol() should be declared external:
- ERC20.symbol() (#1360-1362)
decimals() should be declared external:
- ERC20.decimals() (#1377-1379)
- SuperBNB.decimals() (#1662-1664)
totalSupply() should be declared external:
- ERC20.totalSupply() (#1384-1386)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#1403-1406)
- SuperBNB.transfer(address,uint256) (#1821-1826)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#1440-1454)
- SuperBNB.transferFrom(address,address,uint256) (#1828-1838)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#1468-1471)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#1487-1495)
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