RunningMan coin has its own dividend $GMT mechanism
Running and earn $RMC through the APP
Participate in running by holding Running Man #NFT
RUNNINGMAN.addLiquidity(uint256,uint256) (#1221-1234) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in RUNNINGMAN._transfer(address,address,uint256) (#1072-1157):
External calls:
- swapAndSendToFee(AmountMarketingFee) (#1097)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- swapAndSendDividends(AmountTokenRewardsFee) (#1099)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1240)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- dividendTracker.distributeCAKEDividends(dividends) (#1242)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
State variables written after the call(s):
- AmountLiquidityFee += LFee (#1119)
- AmountLiquidityFee += LFee (#1129)
- AmountMarketingFee += MFee (#1123)
- AmountMarketingFee += MFee (#1133)
- AmountTokenRewardsFee += RFee (#1121)
- AmountTokenRewardsFee += RFee (#1131)
- super._transfer(from,deadWallet,DFee) (#1138)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#456)
- _balances[recipient] = _balances[recipient].add(amount) (#457)
- super._transfer(from,address(this),fees.sub(DFee)) (#1139)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#456)
- _balances[recipient] = _balances[recipient].add(amount) (#457)
- super._transfer(from,to,amount) (#1142)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#456)
- _balances[recipient] = _balances[recipient].add(amount) (#457)
- swapping = false (#1100)
Apply the check-effects-interactions pattern.
Additional information: link
RUNNINGMAN.swapAndSendToFee(uint256) (#1159-1165) ignores return value by IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
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)
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.
RUNNINGMAN.claim() (#1018-1020) ignores return value by dividendTracker.processAccount(address(msg.sender),false) (#1019)
RUNNINGMAN._transfer(address,address,uint256) (#1072-1157) ignores return value by dividendTracker.process(gas) (#1150-1155)
RUNNINGMAN.addLiquidity(uint256,uint256) (#1221-1234) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
Ensure that all the return values of the function calls are used.
Additional information: link
RUNNINGMAN.constructor(string,string,uint256,address,address,address,uint256[4],uint256[4],uint256).totalSupply (#858) shadows:
- ERC20.totalSupply() (#330-332) (function)
- IERC20.totalSupply() (#49) (function)
Rename the local variables that shadow another component.
Additional information: link
RUNNINGMAN.setSwapTokensAtAmount(uint256) (#1040-1042) should emit an event for:
- swapTokensAtAmount = amount (#1041)
RUNNINGMAN.setBuyLiquidityFee(uint256) (#1047-1049) should emit an event for:
- buyLiquidityFee = amount (#1048)
RUNNINGMAN.setSellLiquidityFee(uint256) (#1050-1052) should emit an event for:
- sellLiquidityFee = amount (#1051)
RUNNINGMAN.setBuyTokenRewardsFee(uint256) (#1053-1055) should emit an event for:
- buyTokenRewardsFee = amount (#1054)
RUNNINGMAN.setSellTokenRewardsFee(uint256) (#1056-1058) should emit an event for:
- sellTokenRewardsFee = amount (#1057)
RUNNINGMAN.setBuyMarketingFee(uint256) (#1059-1061) should emit an event for:
- buyMarketingFee = amount (#1060)
RUNNINGMAN.setSellMarketingFee(uint256) (#1062-1064) should emit an event for:
- sellMarketingFee = amount (#1063)
RUNNINGMAN.setBuyDeadFee(uint256) (#1065-1067) should emit an event for:
- buyDeadFee = amount (#1066)
RUNNINGMAN.setSellDeadFee(uint256) (#1068-1070) should emit an event for:
- sellDeadFee = amount (#1069)
Emit an event for critical parameter changes.
Additional information: link
RUNNINGMAN._transfer(address,address,uint256).fees (#1112) is a local variable never initialized
RUNNINGMAN._transfer(address,address,uint256).iterations (#1150) is a local variable never initialized
RUNNINGMAN._transfer(address,address,uint256).claims (#1150) is a local variable never initialized
RUNNINGMAN._transfer(address,address,uint256).DFee (#1116) is a local variable never initialized
RUNNINGMAN._transfer(address,address,uint256).lastProcessedIndex (#1150) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
Clones.cloneDeterministic(address,bytes32) (#226-235) is never used and should be removed
Clones.predictDeterministicAddress(address,bytes32) (#260-266) is never used and should be removed
Clones.predictDeterministicAddress(address,bytes32,address) (#240-255) is never used and should be removed
Context._msgData() (#9-11) is never used and should be removed
ERC20._burn(address,uint256) (#491-499) is never used and should be removed
SafeMath.mod(uint256,uint256) (#124-126) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#128-131) is never used and should be removed
SafeMathInt.abs(int256) (#182-185) is never used and should be removed
SafeMathInt.add(int256,int256) (#173-177) is never used and should be removed
SafeMathInt.div(int256,int256) (#153-159) is never used and should be removed
SafeMathInt.mul(int256,int256) (#141-148) is never used and should be removed
SafeMathInt.sub(int256,int256) (#164-168) is never used and should be removed
SafeMathInt.toUint256Safe(int256) (#188-191) is never used and should be removed
SafeMathUint.toInt256Safe(uint256) (#195-199) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (#2) 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
Function IUniswapV2Router01.WETH() (#559) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#723) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#724) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#741) is not in mixedCase
Function RUNNINGMAN.EnemyAddress(address,bool) (#932-934) is not in mixedCase
Variable RUNNINGMAN.AmountLiquidityFee (#780) is not in mixedCase
Variable RUNNINGMAN.AmountTokenRewardsFee (#781) is not in mixedCase
Variable RUNNINGMAN.AmountMarketingFee (#782) is not in mixedCase
Variable RUNNINGMAN._marketingWalletAddress (#784) is not in mixedCase
Variable RUNNINGMAN._isEnemy (#787) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
RUNNINGMAN.constructor(string,string,uint256,address,address,address,uint256[4],uint256[4],uint256).rewardAddr_ (#835) lacks a zero-check on :
- rewardToken = rewardAddr_ (#842)
RUNNINGMAN.constructor(string,string,uint256,address,address,address,uint256[4],uint256[4],uint256).marketingWalletAddr_ (#836) lacks a zero-check on :
- _marketingWalletAddress = marketingWalletAddr_ (#843)
RUNNINGMAN.updateUniswapV2Router(address)._uniswapV2Pair (#903-904) lacks a zero-check on :
- uniswapV2Pair = _uniswapV2Pair (#905)
RUNNINGMAN.setMarketingWallet(address).wallet (#923) lacks a zero-check on :
- _marketingWalletAddress = wallet (#924)
RUNNINGMAN.setDeadWallet(address).addr (#1044) lacks a zero-check on :
- deadWallet = addr (#1045)
Check that the address is not zero.
Additional information: link
Variable 'RUNNINGMAN._transfer(address,address,uint256).claims (#1150)' in RUNNINGMAN._transfer(address,address,uint256) (#1072-1157) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1151)
Variable 'RUNNINGMAN._transfer(address,address,uint256).iterations (#1150)' in RUNNINGMAN._transfer(address,address,uint256) (#1072-1157) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1151)
Variable 'RUNNINGMAN._transfer(address,address,uint256).lastProcessedIndex (#1150)' in RUNNINGMAN._transfer(address,address,uint256) (#1072-1157) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1151)
Move all variable declarations prior to any usage of the variable, and ensure that reaching a variable declaration does not depend on some conditional if it is used unconditionally.
Additional information: link
Reentrancy in RUNNINGMAN._transfer(address,address,uint256) (#1072-1157):
External calls:
- swapAndSendToFee(AmountMarketingFee) (#1097)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
State variables written after the call(s):
- swapAndLiquify(AmountLiquidityFee) (#1098)
- _allowances[owner][spender] = amount (#522)
Reentrancy in RUNNINGMAN._transfer(address,address,uint256) (#1072-1157):
External calls:
- swapAndSendToFee(AmountMarketingFee) (#1097)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- swapAndSendDividends(AmountTokenRewardsFee) (#1099)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1240)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- dividendTracker.distributeCAKEDividends(dividends) (#1242)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
State variables written after the call(s):
- swapAndSendDividends(AmountTokenRewardsFee) (#1099)
- _allowances[owner][spender] = amount (#522)
Reentrancy in RUNNINGMAN.constructor(string,string,uint256,address,address,address,uint256[4],uint256[4],uint256) (#831-891):
External calls:
- dividendTracker.initialize{value: msg.value}(rewardToken,tokenBalanceForReward_) (#867)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#870-871)
External calls sending eth:
- dividendTracker.initialize{value: msg.value}(rewardToken,tokenBalanceForReward_) (#867)
State variables written after the call(s):
- uniswapV2Pair = _uniswapV2Pair (#874)
- uniswapV2Router = _uniswapV2Router (#873)
Reentrancy in RUNNINGMAN.constructor(string,string,uint256,address,address,address,uint256[4],uint256[4],uint256) (#831-891):
External calls:
- dividendTracker.initialize{value: msg.value}(rewardToken,tokenBalanceForReward_) (#867)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#870-871)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#876)
- dividendTracker.excludeFromDividends(pair) (#942)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (#879)
- dividendTracker.excludeFromDividends(address(this)) (#880)
- dividendTracker.excludeFromDividends(owner()) (#881)
- dividendTracker.excludeFromDividends(deadWallet) (#882)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (#883)
External calls sending eth:
- dividendTracker.initialize{value: msg.value}(rewardToken,tokenBalanceForReward_) (#867)
State variables written after the call(s):
- _cast(owner(),totalSupply) (#890)
- _balances[account] = _balances[account].add(amount) (#476)
- excludeFromFees(owner(),true) (#886)
- _isExcludedFromFees[account] = excluded (#910)
- excludeFromFees(_marketingWalletAddress,true) (#887)
- _isExcludedFromFees[account] = excluded (#910)
- excludeFromFees(address(this),true) (#888)
- _isExcludedFromFees[account] = excluded (#910)
- _cast(owner(),totalSupply) (#890)
- _totalSupply = _totalSupply.add(amount) (#475)
Reentrancy in RUNNINGMAN.swapAndLiquify(uint256) (#1167-1184):
External calls:
- swapTokensForEth(half) (#1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- addLiquidity(otherHalf,newBalance) (#1181)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1181)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
State variables written after the call(s):
- AmountLiquidityFee = AmountLiquidityFee - tokens (#1182)
- addLiquidity(otherHalf,newBalance) (#1181)
- _allowances[owner][spender] = amount (#522)
Reentrancy in RUNNINGMAN.swapAndSendDividends(uint256) (#1236-1245):
External calls:
- swapTokensForCake(tokens) (#1237)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
State variables written after the call(s):
- AmountTokenRewardsFee = AmountTokenRewardsFee - tokens (#1238)
Reentrancy in RUNNINGMAN.swapAndSendToFee(uint256) (#1159-1165):
External calls:
- swapTokensForCake(tokens) (#1161)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
State variables written after the call(s):
- AmountMarketingFee = AmountMarketingFee - tokens (#1164)
Reentrancy in RUNNINGMAN.swapManual() (#1030-1038):
External calls:
- swapAndLiquify(AmountLiquidityFee) (#1034)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- swapAndSendDividends(AmountTokenRewardsFee) (#1035)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1240)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- dividendTracker.distributeCAKEDividends(dividends) (#1242)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1034)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
State variables written after the call(s):
- swapAndSendDividends(AmountTokenRewardsFee) (#1035)
- _allowances[owner][spender] = amount (#522)
Reentrancy in RUNNINGMAN.swapManual() (#1030-1038):
External calls:
- swapAndLiquify(AmountLiquidityFee) (#1034)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- swapAndSendDividends(AmountTokenRewardsFee) (#1035)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1240)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- dividendTracker.distributeCAKEDividends(dividends) (#1242)
- swapAndSendToFee(AmountMarketingFee) (#1036)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1034)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
State variables written after the call(s):
- swapAndSendToFee(AmountMarketingFee) (#1036)
- _allowances[owner][spender] = amount (#522)
- swapping = false (#1037)
Reentrancy in RUNNINGMAN.updateUniswapV2Router(address) (#899-906):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (#903-904)
State variables written after the call(s):
- uniswapV2Pair = _uniswapV2Pair (#905)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in RUNNINGMAN._setAutomatedMarketMakerPair(address,bool) (#937-945):
External calls:
- dividendTracker.excludeFromDividends(pair) (#942)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (#944)
Reentrancy in RUNNINGMAN._transfer(address,address,uint256) (#1072-1157):
External calls:
- swapAndSendToFee(AmountMarketingFee) (#1097)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#523)
- swapAndLiquify(AmountLiquidityFee) (#1098)
- SwapAndLiquify(half,newBalance,otherHalf) (#1183)
- swapAndLiquify(AmountLiquidityFee) (#1098)
Reentrancy in RUNNINGMAN._transfer(address,address,uint256) (#1072-1157):
External calls:
- swapAndSendToFee(AmountMarketingFee) (#1097)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- swapAndSendDividends(AmountTokenRewardsFee) (#1099)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1240)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- dividendTracker.distributeCAKEDividends(dividends) (#1242)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#523)
- swapAndSendDividends(AmountTokenRewardsFee) (#1099)
- SendDividends(tokens,dividends) (#1243)
- swapAndSendDividends(AmountTokenRewardsFee) (#1099)
- Transfer(sender,recipient,amount) (#458)
- super._transfer(from,deadWallet,DFee) (#1138)
- Transfer(sender,recipient,amount) (#458)
- super._transfer(from,to,amount) (#1142)
- Transfer(sender,recipient,amount) (#458)
- super._transfer(from,address(this),fees.sub(DFee)) (#1139)
Reentrancy in RUNNINGMAN._transfer(address,address,uint256) (#1072-1157):
External calls:
- swapAndSendToFee(AmountMarketingFee) (#1097)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- swapAndSendDividends(AmountTokenRewardsFee) (#1099)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1240)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- dividendTracker.distributeCAKEDividends(dividends) (#1242)
- dividendTracker.setBalance(address(from),balanceOf(from)) (#1144)
- dividendTracker.setBalance(address(to),balanceOf(to)) (#1145)
- dividendTracker.process(gas) (#1150-1155)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1098)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1151)
Reentrancy in RUNNINGMAN.constructor(string,string,uint256,address,address,address,uint256[4],uint256[4],uint256) (#831-891):
External calls:
- dividendTracker.initialize{value: msg.value}(rewardToken,tokenBalanceForReward_) (#867)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#870-871)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#876)
- dividendTracker.excludeFromDividends(pair) (#942)
External calls sending eth:
- dividendTracker.initialize{value: msg.value}(rewardToken,tokenBalanceForReward_) (#867)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (#944)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#876)
Reentrancy in RUNNINGMAN.constructor(string,string,uint256,address,address,address,uint256[4],uint256[4],uint256) (#831-891):
External calls:
- dividendTracker.initialize{value: msg.value}(rewardToken,tokenBalanceForReward_) (#867)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#870-871)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#876)
- dividendTracker.excludeFromDividends(pair) (#942)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (#879)
- dividendTracker.excludeFromDividends(address(this)) (#880)
- dividendTracker.excludeFromDividends(owner()) (#881)
- dividendTracker.excludeFromDividends(deadWallet) (#882)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (#883)
External calls sending eth:
- dividendTracker.initialize{value: msg.value}(rewardToken,tokenBalanceForReward_) (#867)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#911)
- excludeFromFees(address(this),true) (#888)
- ExcludeFromFees(account,excluded) (#911)
- excludeFromFees(_marketingWalletAddress,true) (#887)
- ExcludeFromFees(account,excluded) (#911)
- excludeFromFees(owner(),true) (#886)
- Transfer(address(0),account,amount) (#477)
- _cast(owner(),totalSupply) (#890)
Reentrancy in RUNNINGMAN.processDividendTracker(uint256) (#1013-1016):
External calls:
- (iterations,claims,lastProcessedIndex) = dividendTracker.process(gas) (#1014)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,false,gas,tx.origin) (#1015)
Reentrancy in RUNNINGMAN.swapAndLiquify(uint256) (#1167-1184):
External calls:
- swapTokensForEth(half) (#1175)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- addLiquidity(otherHalf,newBalance) (#1181)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1181)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#523)
- addLiquidity(otherHalf,newBalance) (#1181)
- SwapAndLiquify(half,newBalance,otherHalf) (#1183)
Reentrancy in RUNNINGMAN.swapAndSendDividends(uint256) (#1236-1245):
External calls:
- swapTokensForCake(tokens) (#1237)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1240)
- dividendTracker.distributeCAKEDividends(dividends) (#1242)
Event emitted after the call(s):
- SendDividends(tokens,dividends) (#1243)
Reentrancy in RUNNINGMAN.swapManual() (#1030-1038):
External calls:
- swapAndLiquify(AmountLiquidityFee) (#1034)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- swapAndSendDividends(AmountTokenRewardsFee) (#1035)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1240)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- dividendTracker.distributeCAKEDividends(dividends) (#1242)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1034)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#523)
- swapAndSendDividends(AmountTokenRewardsFee) (#1035)
- SendDividends(tokens,dividends) (#1243)
- swapAndSendDividends(AmountTokenRewardsFee) (#1035)
Reentrancy in RUNNINGMAN.swapManual() (#1030-1038):
External calls:
- swapAndLiquify(AmountLiquidityFee) (#1034)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1195-1201)
- swapAndSendDividends(AmountTokenRewardsFee) (#1035)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1240)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
- dividendTracker.distributeCAKEDividends(dividends) (#1242)
- swapAndSendToFee(AmountMarketingFee) (#1036)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1163)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1212-1218)
External calls sending eth:
- swapAndLiquify(AmountLiquidityFee) (#1034)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1225-1232)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#523)
- swapAndSendToFee(AmountMarketingFee) (#1036)
Apply the check-effects-interactions pattern.
Additional information: link
Clones.clone(address) (#208-217) uses assembly
- INLINE ASM (#209-215)
Clones.cloneDeterministic(address,bytes32) (#226-235) uses assembly
- INLINE ASM (#227-233)
Clones.predictDeterministicAddress(address,bytes32,address) (#240-255) uses assembly
- INLINE ASM (#245-254)
Do not use evm assembly.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#564) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#565)
Variable ERC20._totalSupply (#276) is too similar to RUNNINGMAN.constructor(string,string,uint256,address,address,address,uint256[4],uint256[4],uint256).totalSupply_ (#834)
Prevent variables from having similar names.
Additional information: link
Clones.clone(address) (#208-217) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_clone_asm_0,0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) (#211)
Clones.clone(address) (#208-217) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_clone_asm_0 + 0x28,0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) (#213)
Clones.cloneDeterministic(address,bytes32) (#226-235) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_cloneDeterministic_asm_0,0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) (#229)
Clones.cloneDeterministic(address,bytes32) (#226-235) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_cloneDeterministic_asm_0 + 0x28,0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) (#231)
Clones.predictDeterministicAddress(address,bytes32,address) (#240-255) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_predictDeterministicAddress_asm_0,0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) (#247)
Clones.predictDeterministicAddress(address,bytes32,address) (#240-255) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_predictDeterministicAddress_asm_0 + 0x28,0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000) (#249)
RUNNINGMAN.constructor(string,string,uint256,address,address,address,uint256[4],uint256[4],uint256) (#831-891) uses literals with too many digits:
- gasForProcessing = 300000 (#862)
RUNNINGMAN.updateGasForProcessing(uint256) (#948-953) uses literals with too many digits:
- require(bool,string)(newValue >= 200000 && newValue <= 500000,GasForProcessing must be between 200,000 and 500,000) (#949)
RUNNINGMAN.slitherConstructorVariables() (#758-1247) uses literals with too many digits:
- deadWallet = 0x000000000000000000000000000000000000dEaD (#786)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#136) is never used in SafeMathInt (#134-192)
Remove unused state variables.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#32-34)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#36-39)
name() should be declared external:
- ERC20.name() (#298-300)
symbol() should be declared external:
- ERC20.symbol() (#306-308)
decimals() should be declared external:
- ERC20.decimals() (#323-325)
totalSupply() should be declared external:
- ERC20.totalSupply() (#330-332)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#349-352)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#357-359)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#368-371)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#386-394)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#408-411)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#427-430)
updateMinimumTokenBalanceForDividends(uint256) should be declared external:
- RUNNINGMAN.updateMinimumTokenBalanceForDividends(uint256) (#895-897)
updateUniswapV2Router(address) should be declared external:
- RUNNINGMAN.updateUniswapV2Router(address) (#899-906)
excludeMultipleAccountsFromFees(address[],bool) should be declared external:
- RUNNINGMAN.excludeMultipleAccountsFromFees(address[],bool) (#915-921)
setAutomatedMarketMakerPair(address,bool) should be declared external:
- RUNNINGMAN.setAutomatedMarketMakerPair(address,bool) (#927-930)
updateGasForProcessing(uint256) should be declared external:
- RUNNINGMAN.updateGasForProcessing(uint256) (#948-953)
isExcludedFromFees(address) should be declared external:
- RUNNINGMAN.isExcludedFromFees(address) (#967-969)
withdrawableDividendOf(address) should be declared external:
- RUNNINGMAN.withdrawableDividendOf(address) (#971-973)
dividendTokenBalanceOf(address) should be declared external:
- RUNNINGMAN.dividendTokenBalanceOf(address) (#975-977)
isExcludedFromDividends(address) should be declared external:
- RUNNINGMAN.isExcludedFromDividends(address) (#983-985)
swapManual() should be declared external:
- RUNNINGMAN.swapManual() (#1030-1038)
setSwapTokensAtAmount(uint256) should be declared external:
- RUNNINGMAN.setSwapTokensAtAmount(uint256) (#1040-1042)
setDeadWallet(address) should be declared external:
- RUNNINGMAN.setDeadWallet(address) (#1044-1046)
setBuyLiquidityFee(uint256) should be declared external:
- RUNNINGMAN.setBuyLiquidityFee(uint256) (#1047-1049)
setSellLiquidityFee(uint256) should be declared external:
- RUNNINGMAN.setSellLiquidityFee(uint256) (#1050-1052)
setBuyTokenRewardsFee(uint256) should be declared external:
- RUNNINGMAN.setBuyTokenRewardsFee(uint256) (#1053-1055)
setSellTokenRewardsFee(uint256) should be declared external:
- RUNNINGMAN.setSellTokenRewardsFee(uint256) (#1056-1058)
setBuyMarketingFee(uint256) should be declared external:
- RUNNINGMAN.setBuyMarketingFee(uint256) (#1059-1061)
setSellMarketingFee(uint256) should be declared external:
- RUNNINGMAN.setSellMarketingFee(uint256) (#1062-1064)
setBuyDeadFee(uint256) should be declared external:
- RUNNINGMAN.setBuyDeadFee(uint256) (#1065-1067)
setSellDeadFee(uint256) should be declared external:
- RUNNINGMAN.setSellDeadFee(uint256) (#1068-1070)
Use the external attribute for functions never called from the contract.
Additional information: link
Attempt to swap token was unsuccessful. For some reason it is untradeable. If token is not in presale stage and is not traded outside PancakeSwap, then it's a scam
Additional information: link
Token is deployed only at one blockchain
Token has only one trading pair
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
Unable to find whitepaper link on the website
Unable to find token on CoinHunt
Additional information: link
Young tokens have high risks of scam / price dump / death
Token is marked as scam (rug pull, honeypot, phishing, etc.)
Additional information: link
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Young tokens have high risks of price dump / death
Telegram account link seems to be invalid
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account