Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
HarambeKing._getReflectFee(uint256) (#925-930) performs a multiplication on the result of a division:
-tFee = tAmount.mul(_taxFee).div(100) (#927)
-rFee = tFee.mul(currentRate) (#928)
HarambeKing._takeLiquidity(address,uint256) (#944-954) performs a multiplication on the result of a division:
-tLiquidity = tAmount.mul(_liquidityFee).div(100) (#947)
-rLiquidity = tLiquidity.mul(currentRate) (#948)
HarambeKing._takeBurn(address,uint256) (#956-966) performs a multiplication on the result of a division:
-tBurn = tAmount.mul(_burnFee).div(100) (#959)
-rBurn = tBurn.mul(currentRate) (#960)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in HarambeKing._transfer(address,address,uint256) (#1015-1069):
External calls:
- swapAndLiquify(contractTokenBalance) (#1056)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1085-1091)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _rOwned[deadWallet] = _rOwned[deadWallet].add(rBurn) (#961)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#949)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1129)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1149)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1130)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1171)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1192)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1151)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1172)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1194)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _rTotal = _rTotal.sub(rFee) (#911)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _tOwned[deadWallet] = _tOwned[deadWallet].add(tBurn) (#962)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#950)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1170)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1191)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1150)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1193)
Apply the check-effects-interactions pattern.
Additional information: link
HarambeKing._transferStandard(address,address,uint256).tFeeAmount (#1120) is a local variable never initialized
HarambeKing._transferToExcluded(address,address,uint256).tFeeAmount (#1140) is a local variable never initialized
HarambeKing._transferBothExcluded(address,address,uint256).tFeeAmount (#1182) is a local variable never initialized
HarambeKing._transferFromExcluded(address,address,uint256).tFeeAmount (#1161) 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
HarambeKing.allowance(address,address).owner (#795) shadows:
- Ownable.owner() (#410-412) (function)
HarambeKing._approve(address,address,uint256).owner (#1007) shadows:
- Ownable.owner() (#410-412) (function)
Rename the local variables that shadow another component.
Additional information: link
HarambeKing.setTaxFeePercent(uint256) (#874-876) should emit an event for:
- _taxFee = taxFee (#875)
HarambeKing.setLiquidityFeePercent(uint256) (#878-880) should emit an event for:
- _liquidityFee = liquidityFee (#879)
HarambeKing.setBurnFeePercent(uint256) (#882-884) should emit an event for:
- _burnFee = burnFee (#883)
HarambeKing.setNumTokensSellToAddToLiquidity(uint256) (#886-888) should emit an event for:
- numTokensSellToAddToLiquidity = swapNumber * 10 ** _decimals (#887)
HarambeKing.setMaxTxPercent(uint256) (#890-892) should emit an event for:
- _maxTxAmount = maxTxPercent * 10 ** _decimals (#891)
HarambeKing.setMaxWalletAmount(uint256) (#894-896) should emit an event for:
- _maxWalletAmount = maxWalletAmount * 10 ** _decimals (#895)
Emit an event for critical parameter changes.
Additional information: link
HarambeKing.setMarketingWalletAddress(address).marketingWalletAddress_ (#903) lacks a zero-check on :
- marketingWallet = marketingWalletAddress_ (#904)
Check that the address is not zero.
Additional information: link
Reentrancy in HarambeKing._transfer(address,address,uint256) (#1015-1069):
External calls:
- swapAndLiquify(contractTokenBalance) (#1056)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1085-1091)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _burnFee = _previousBurnFee (#1000)
- _burnFee = 0 (#994)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _liquidityFee = _previousLiquidityFee (#999)
- _liquidityFee = 0 (#993)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _previousBurnFee = _burnFee (#990)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _previousLiquidityFee = _liquidityFee (#989)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _previousTaxFee = _taxFee (#988)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _tFeeTotal = _tFeeTotal.add(tFee) (#912)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- _taxFee = _previousTaxFee (#998)
- _taxFee = 0 (#992)
Reentrancy in HarambeKing.constructor() (#732-766):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#753-754)
State variables written after the call(s):
- _isExcludedFromFee[tokenOwner] = true (#760)
- _isExcludedFromFee[address(this)] = true (#761)
- _isExcludedFromFee[address(_uniswapV2Router)] = true (#762)
- _owner = tokenOwner (#764)
- uniswapV2Router = _uniswapV2Router (#757)
Reentrancy in HarambeKing.transferFrom(address,address,uint256) (#804-808):
External calls:
- _transfer(sender,recipient,amount) (#805)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1085-1091)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#806)
- _allowances[owner][spender] = amount (#1011)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in HarambeKing._transfer(address,address,uint256) (#1015-1069):
External calls:
- swapAndLiquify(contractTokenBalance) (#1056)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1085-1091)
Event emitted after the call(s):
- Transfer(sender,deadWallet,tBurn) (#964)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- Transfer(sender,address(this),tLiquidity) (#952)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- Transfer(sender,recipient,tTransferAmount) (#1132)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- Transfer(sender,recipient,tTransferAmount) (#1153)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- Transfer(sender,recipient,tTransferAmount) (#1174)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
- Transfer(sender,recipient,tTransferAmount) (#1196)
- _tokenTransfer(from,to,amount,takeFee) (#1068)
Reentrancy in HarambeKing.constructor() (#732-766):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#753-754)
Event emitted after the call(s):
- Transfer(address(0),tokenOwner,_tTotal) (#765)
Reentrancy in HarambeKing.transferFrom(address,address,uint256) (#804-808):
External calls:
- _transfer(sender,recipient,amount) (#805)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1085-1091)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1012)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#806)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#457-462) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now > _lockTime,Contract is locked until 7 days) (#459)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#270-279) uses assembly
- INLINE ASM (#277)
Address._functionCallWithValue(address,bytes,uint256,string) (#363-384) uses assembly
- INLINE ASM (#376-379)
Do not use evm assembly.
Additional information: link
HarambeKing.includeInReward(address) (#853-864) has costly operations inside a loop:
- _excluded.pop() (#860)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#363-384) is never used and should be removed
Address.functionCall(address,bytes) (#323-325) is never used and should be removed
Address.functionCall(address,bytes,string) (#333-335) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#348-350) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#358-361) is never used and should be removed
Address.isContract(address) (#270-279) is never used and should be removed
Address.sendValue(address,uint256) (#297-303) is never used and should be removed
Context._msgData() (#242-245) is never used and should be removed
HarambeKing.calculateLiquidityFee(uint256) (#979-983) is never used and should be removed
HarambeKing.calculateTaxFee(uint256) (#973-977) is never used and should be removed
SafeMath.mod(uint256,uint256) (#215-217) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#231-234) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#297-303):
- (success) = recipient.call{value: amount}() (#301)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#363-384):
- (success,returndata) = target.call{value: weiValue}(data) (#367)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable Ownable._owner (#400) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#501) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#502) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#519) is not in mixedCase
Function IUniswapV2Router01.WETH() (#541) is not in mixedCase
Parameter HarambeKing.setSwapAndLiquifyEnabled(bool)._enabled (#898) is not in mixedCase
Parameter HarambeKing.calculateTaxFee(uint256)._amount (#973) is not in mixedCase
Parameter HarambeKing.calculateLiquidityFee(uint256)._amount (#979) is not in mixedCase
Variable HarambeKing._taxFee (#701) is not in mixedCase
Variable HarambeKing._liquidityFee (#704) is not in mixedCase
Variable HarambeKing._burnFee (#707) is not in mixedCase
Variable HarambeKing._maxTxAmount (#719) is not in mixedCase
Variable HarambeKing._maxWalletAmount (#721) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#243)" inContext (#237-246)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#546) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#547)
Variable HarambeKing._transferToExcluded(address,address,uint256).rReflectFee (#1143) is too similar to HarambeKing._transferFromExcluded(address,address,uint256).tReflectFee (#1164)
Variable HarambeKing._transferStandard(address,address,uint256).rReflectFee (#1123) is too similar to HarambeKing._transferBothExcluded(address,address,uint256).tReflectFee (#1185)
Variable HarambeKing._transferFromExcluded(address,address,uint256).rReflectFee (#1164) is too similar to HarambeKing._transferBothExcluded(address,address,uint256).tReflectFee (#1185)
Variable HarambeKing._transferBothExcluded(address,address,uint256).rReflectFee (#1185) is too similar to HarambeKing._transferFromExcluded(address,address,uint256).tReflectFee (#1164)
Variable HarambeKing._transferStandard(address,address,uint256).rReflectFee (#1123) is too similar to HarambeKing._transferToExcluded(address,address,uint256).tReflectFee (#1143)
Variable HarambeKing._transferToExcluded(address,address,uint256).rReflectFee (#1143) is too similar to HarambeKing._transferBothExcluded(address,address,uint256).tReflectFee (#1185)
Variable HarambeKing._transferStandard(address,address,uint256).rReflectFee (#1123) is too similar to HarambeKing._transferFromExcluded(address,address,uint256).tReflectFee (#1164)
Variable HarambeKing._transferFromExcluded(address,address,uint256).rReflectFee (#1164) is too similar to HarambeKing._transferFromExcluded(address,address,uint256).tReflectFee (#1164)
Variable HarambeKing._transferStandard(address,address,uint256).rTransferAmount (#1128) is too similar to HarambeKing._transferFromExcluded(address,address,uint256).tTransferAmount (#1168)
Variable HarambeKing._transferStandard(address,address,uint256).rTransferAmount (#1128) is too similar to HarambeKing._transferBothExcluded(address,address,uint256).tTransferAmount (#1189)
Variable HarambeKing._transferToExcluded(address,address,uint256).rTransferAmount (#1148) is too similar to HarambeKing._transferBothExcluded(address,address,uint256).tTransferAmount (#1189)
Variable HarambeKing._transferToExcluded(address,address,uint256).rTransferAmount (#1148) is too similar to HarambeKing._transferFromExcluded(address,address,uint256).tTransferAmount (#1168)
Variable HarambeKing._transferFromExcluded(address,address,uint256).rTransferAmount (#1169) is too similar to HarambeKing._transferBothExcluded(address,address,uint256).tTransferAmount (#1189)
Variable HarambeKing._transferStandard(address,address,uint256).rTransferAmount (#1128) is too similar to HarambeKing._transferToExcluded(address,address,uint256).tTransferAmount (#1147)
Variable HarambeKing._transferBothExcluded(address,address,uint256).rReflectFee (#1185) is too similar to HarambeKing._transferBothExcluded(address,address,uint256).tReflectFee (#1185)
Variable HarambeKing._transferFromExcluded(address,address,uint256).rReflectFee (#1164) is too similar to HarambeKing._transferStandard(address,address,uint256).tReflectFee (#1123)
Variable HarambeKing._transferBothExcluded(address,address,uint256).rReflectFee (#1185) is too similar to HarambeKing._transferStandard(address,address,uint256).tReflectFee (#1123)
Variable HarambeKing._transferFromExcluded(address,address,uint256).rReflectFee (#1164) is too similar to HarambeKing._transferToExcluded(address,address,uint256).tReflectFee (#1143)
Variable HarambeKing._transferBothExcluded(address,address,uint256).rReflectFee (#1185) is too similar to HarambeKing._transferToExcluded(address,address,uint256).tReflectFee (#1143)
Variable HarambeKing._transferStandard(address,address,uint256).rReflectFee (#1123) is too similar to HarambeKing._transferStandard(address,address,uint256).tReflectFee (#1123)
Variable HarambeKing._transferToExcluded(address,address,uint256).rReflectFee (#1143) is too similar to HarambeKing._transferStandard(address,address,uint256).tReflectFee (#1123)
Variable HarambeKing._transferToExcluded(address,address,uint256).rReflectFee (#1143) is too similar to HarambeKing._transferToExcluded(address,address,uint256).tReflectFee (#1143)
Variable HarambeKing._transferFromExcluded(address,address,uint256).rTransferAmount (#1169) is too similar to HarambeKing._transferStandard(address,address,uint256).tTransferAmount (#1127)
Variable HarambeKing._transferBothExcluded(address,address,uint256).rTransferAmount (#1190) is too similar to HarambeKing._transferStandard(address,address,uint256).tTransferAmount (#1127)
Variable HarambeKing._transferFromExcluded(address,address,uint256).rTransferAmount (#1169) is too similar to HarambeKing._transferToExcluded(address,address,uint256).tTransferAmount (#1147)
Variable HarambeKing._transferBothExcluded(address,address,uint256).rTransferAmount (#1190) is too similar to HarambeKing._transferToExcluded(address,address,uint256).tTransferAmount (#1147)
Variable HarambeKing._transferStandard(address,address,uint256).rTransferAmount (#1128) is too similar to HarambeKing._transferStandard(address,address,uint256).tTransferAmount (#1127)
Variable HarambeKing._transferFromExcluded(address,address,uint256).rTransferAmount (#1169) is too similar to HarambeKing._transferFromExcluded(address,address,uint256).tTransferAmount (#1168)
Variable HarambeKing._transferBothExcluded(address,address,uint256).rTransferAmount (#1190) is too similar to HarambeKing._transferFromExcluded(address,address,uint256).tTransferAmount (#1168)
Variable HarambeKing._transferToExcluded(address,address,uint256).rTransferAmount (#1148) is too similar to HarambeKing._transferStandard(address,address,uint256).tTransferAmount (#1127)
Variable HarambeKing._transferToExcluded(address,address,uint256).rTransferAmount (#1148) is too similar to HarambeKing._transferToExcluded(address,address,uint256).tTransferAmount (#1147)
Variable HarambeKing._transferBothExcluded(address,address,uint256).rTransferAmount (#1190) is too similar to HarambeKing._transferBothExcluded(address,address,uint256).tTransferAmount (#1189)
Prevent variables from having similar names.
Additional information: link
HarambeKing.constructor() (#732-766) uses literals with too many digits:
- _tTotal = 88000000000000000 * 10 ** _decimals (#737)
HarambeKing.constructor() (#732-766) uses literals with too many digits:
- _maxTxAmount = 88000000000000000 * 10 ** _decimals (#745)
HarambeKing.constructor() (#732-766) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 880000000000000 * 10 ** _decimals (#746)
HarambeKing.constructor() (#732-766) uses literals with too many digits:
- _maxWalletAmount = 880000000000000 * 10 ** _decimals (#747)
HarambeKing.slitherConstructorVariables() (#679-1199) uses literals with too many digits:
- deadWallet = address(0x000000000000000000000000000000000000dEaD) (#713)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
HarambeKing.deadWallet (#713) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#429-432)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#438-442)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#444-446)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#449-454)
unlock() should be declared external:
- Ownable.unlock() (#457-462)
name() should be declared external:
- HarambeKing.name() (#769-771)
symbol() should be declared external:
- HarambeKing.symbol() (#773-775)
decimals() should be declared external:
- HarambeKing.decimals() (#777-779)
totalSupply() should be declared external:
- HarambeKing.totalSupply() (#781-783)
transfer(address,uint256) should be declared external:
- HarambeKing.transfer(address,uint256) (#790-793)
allowance(address,address) should be declared external:
- HarambeKing.allowance(address,address) (#795-797)
approve(address,uint256) should be declared external:
- HarambeKing.approve(address,uint256) (#799-802)
transferFrom(address,address,uint256) should be declared external:
- HarambeKing.transferFrom(address,address,uint256) (#804-808)
increaseAllowance(address,uint256) should be declared external:
- HarambeKing.increaseAllowance(address,uint256) (#810-813)
decreaseAllowance(address,uint256) should be declared external:
- HarambeKing.decreaseAllowance(address,uint256) (#815-818)
isExcludedFromReward(address) should be declared external:
- HarambeKing.isExcludedFromReward(address) (#820-822)
totalFees() should be declared external:
- HarambeKing.totalFees() (#824-826)
deliver(uint256) should be declared external:
- HarambeKing.deliver(uint256) (#828-835)
excludeFromReward(address) should be declared external:
- HarambeKing.excludeFromReward(address) (#843-851)
excludeFromFee(address) should be declared external:
- HarambeKing.excludeFromFee(address) (#866-868)
includeInFee(address) should be declared external:
- HarambeKing.includeInFee(address) (#870-872)
setNumTokensSellToAddToLiquidity(uint256) should be declared external:
- HarambeKing.setNumTokensSellToAddToLiquidity(uint256) (#886-888)
setMaxTxPercent(uint256) should be declared external:
- HarambeKing.setMaxTxPercent(uint256) (#890-892)
setMaxWalletAmount(uint256) should be declared external:
- HarambeKing.setMaxWalletAmount(uint256) (#894-896)
setSwapAndLiquifyEnabled(bool) should be declared external:
- HarambeKing.setSwapAndLiquifyEnabled(bool) (#898-901)
setMarketingWalletAddress(address) should be declared external:
- HarambeKing.setMarketingWalletAddress(address) (#903-905)
claimTokens() should be declared external:
- HarambeKing.claimTokens() (#969-971)
isExcludedFromFee(address) should be declared external:
- HarambeKing.isExcludedFromFee(address) (#1003-1005)
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