Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Huhushengwei._splitOtherToken() (#1239-1285) ignores return value by doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1267)
Huhushengwei._splitOtherToken() (#1239-1285) ignores return value by doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1278)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Huhushengwei.startTime (#1039) is never initialized. It is used in:
- Huhushengwei.isIn3minter() (#1123-1125)
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
Huhushengwei._transfer(address,address,uint256) (#1127-1178) performs a multiplication on the result of a division:
-amount = amount.div(100).mul(88) (#1168)
Huhushengwei._splitOtherToken() (#1239-1285) performs a multiplication on the result of a division:
-rate = balanceOf(user).mul(10000).div(totalAmount) (#1265)
-doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1278)
Huhushengwei._splitOtherToken() (#1239-1285) performs a multiplication on the result of a division:
-rate = balanceOf(user).mul(10000).div(totalAmount) (#1265)
-doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1267)
Consider ordering multiplication before division.
Additional information: link
Redundant expression "this (#14)" inContext (#8-18)
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 (#825) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#826)
Prevent variables from having similar names.
Additional information: link
Huhushengwei.slitherConstructorVariables() (#1023-1292) uses literals with too many digits:
- _destroyAddress = address(0x000000000000000000000000000000000000dEaD) (#1034)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Huhushengwei._destroyAddress (#1034) is never used in Huhushengwei (#1023-1292)
Remove unused state variables.
Additional information: link
Huhushengwei._destroyAddress (#1034) should be constant
Huhushengwei._receive (#1033) should be constant
Huhushengwei.startTime (#1039) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
Reentrancy in Huhushengwei._transfer(address,address,uint256) (#1127-1178):
External calls:
- swapAndLiquifyV3(balanceOf(address(this))) (#1149)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1218-1224)
State variables written after the call(s):
- swapping = false (#1151)
Reentrancy in Huhushengwei._transfer(address,address,uint256) (#1127-1178):
External calls:
- swapAndLiquifyV3(balanceOf(address(this))) (#1149)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1218-1224)
- _splitOtherToken() (#1155)
- doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1267)
- doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1278)
State variables written after the call(s):
- super._transfer(from,uniswapV2Pair,amount.div(100)) (#1162)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#562-565)
- _balances[recipient] = _balances[recipient].add(amount) (#566)
- super._transfer(from,_fundAddress,amount.div(100)) (#1164)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#562-565)
- _balances[recipient] = _balances[recipient].add(amount) (#566)
- super._transfer(from,address(this),amount.div(10)) (#1166)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#562-565)
- _balances[recipient] = _balances[recipient].add(amount) (#566)
- super._transfer(from,to,amount) (#1170)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#562-565)
- _balances[recipient] = _balances[recipient].add(amount) (#566)
- buyUser.push(to) (#1174)
Apply the check-effects-interactions pattern.
Additional information: link
Huhushengwei._splitOtherToken().startIndex (#1245) 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
ERC20.allowance(address,address).owner (#418) shadows:
- Ownable.owner() (#281-283) (function)
ERC20._approve(address,address,uint256).owner (#629) shadows:
- Ownable.owner() (#281-283) (function)
Rename the local variables that shadow another component.
Additional information: link
Huhushengwei.setSwapTokensAtAmount(uint256) (#1107-1109) should emit an event for:
- swapTokensAtAmount = _swapTokensAtAmount (#1108)
Emit an event for critical parameter changes.
Additional information: link
Ownable.constructor().msgSender (#273) lacks a zero-check on :
- _owner = msgSender (#274)
Huhushengwei.constructor(address,address).tokenOwner (#1061) lacks a zero-check on :
- _tokenOwner = tokenOwner (#1071)
Huhushengwei.constructor(address,address).fundAddress (#1061) lacks a zero-check on :
- _fundAddress = fundAddress (#1072)
Check that the address is not zero.
Additional information: link
Huhushengwei._splitOtherToken() (#1239-1285) has external calls inside a loop: doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1267)
Huhushengwei._splitOtherToken() (#1239-1285) has external calls inside a loop: doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1278)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in Huhushengwei._transfer(address,address,uint256) (#1127-1178):
External calls:
- swapAndLiquifyV3(balanceOf(address(this))) (#1149)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1218-1224)
- _splitOtherToken() (#1155)
- doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1267)
- doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1278)
State variables written after the call(s):
- havePush[to] = true (#1173)
Reentrancy in Huhushengwei.constructor(address,address) (#1061-1083):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1066-1067)
State variables written after the call(s):
- _approve(address(this),address(0x10ED43C718714eb63d5aA57B78B54704E256024E),10 ** 26) (#1068)
- _allowances[owner][spender] = amount (#636)
- _mint(tokenOwner,total) (#1082)
- _balances[account] = _balances[account].add(amount) (#585)
- _fundAddress = fundAddress (#1072)
- excludeFromFees(tokenOwner,true) (#1076)
- _isExcludedFromFees[account] = excluded (#1095)
- excludeFromFees(address(this),true) (#1077)
- _isExcludedFromFees[account] = excluded (#1095)
- _tokenOwner = tokenOwner (#1071)
- _mint(tokenOwner,total) (#1082)
- _totalSupply = _totalSupply.add(amount) (#584)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1073)
- automatedMarketMakerPairs[pair] = value (#1116)
- doge = IERC20(0x9EaFdA01a41906048e0C81C81c16047D77Ab6C55) (#1078)
- minBuyAmount = total.div(1000) (#1081)
- swapTokensAtAmount = total.div(10000) (#1080)
- uniswapV2Pair = _uniswapV2Pair (#1070)
- uniswapV2Router = _uniswapV2Router (#1069)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Huhushengwei._transfer(address,address,uint256) (#1127-1178):
External calls:
- swapAndLiquifyV3(balanceOf(address(this))) (#1149)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1218-1224)
- _splitOtherToken() (#1155)
- doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1267)
- doge.transfer(user,thisAmount.mul(rate).div(10000)) (#1278)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#567)
- super._transfer(from,uniswapV2Pair,amount.div(100)) (#1162)
- Transfer(sender,recipient,amount) (#567)
- super._transfer(from,to,amount) (#1170)
- Transfer(sender,recipient,amount) (#567)
- super._transfer(from,address(this),amount.div(10)) (#1166)
- Transfer(sender,recipient,amount) (#567)
- super._transfer(from,_fundAddress,amount.div(100)) (#1164)
Reentrancy in Huhushengwei.constructor(address,address) (#1061-1083):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1066-1067)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#637)
- _approve(address(this),address(0x10ED43C718714eb63d5aA57B78B54704E256024E),10 ** 26) (#1068)
- ExcludeFromFees(account,excluded) (#1096)
- excludeFromFees(tokenOwner,true) (#1076)
- ExcludeFromFees(account,excluded) (#1096)
- excludeFromFees(address(this),true) (#1077)
- Transfer(address(0),account,amount) (#586)
- _mint(tokenOwner,total) (#1082)
Apply the check-effects-interactions pattern.
Additional information: link
Huhushengwei.isIn3minter() (#1123-1125) uses timestamp for comparisons
Dangerous comparisons:
- startTime.add(180) > block.timestamp (#1124)
Avoid relying on block.timestamp.
Additional information: link
Context._msgData() (#13-17) is never used and should be removed
ERC20._burn(address,uint256) (#600-611) is never used and should be removed
SafeMath.sub(uint256,uint256) (#690-692) is never used and should be removed
Remove unused functions.
Additional information: link
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
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#53) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#55) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#86) is not in mixedCase
Function IUniswapV2Router01.WETH() (#820) is not in mixedCase
Parameter Huhushengwei.setSwapTokensAtAmount(uint256)._swapTokensAtAmount (#1107) is not in mixedCase
Parameter Huhushengwei.setSwapAndLiquifyEnabled(bool)._enabled (#1111) is not in mixedCase
Function Huhushengwei._splitOtherToken() (#1239-1285) is not in mixedCase
Variable Huhushengwei._tokenOwner (#1028) is not in mixedCase
Variable Huhushengwei._fundAddress (#1029) is not in mixedCase
Variable Huhushengwei._receive (#1033) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
owner() should be declared external:
- Ownable.owner() (#281-283)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#300-303)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#309-316)
name() should be declared external:
- ERC20.name() (#348-350)
symbol() should be declared external:
- ERC20.symbol() (#356-358)
decimals() should be declared external:
- ERC20.decimals() (#373-375)
totalSupply() should be declared external:
- ERC20.totalSupply() (#380-382)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#405-413)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#418-426)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#435-443)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#458-473)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#487-498)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#514-528)
updateUniswapV2Router(address) should be declared external:
- Huhushengwei.updateUniswapV2Router(address) (#1089-1092)
excludeMultipleAccountsFromFees(address[],bool) should be declared external:
- Huhushengwei.excludeMultipleAccountsFromFees(address[],bool) (#1099-1105)
setSwapTokensAtAmount(uint256) should be declared external:
- Huhushengwei.setSwapTokensAtAmount(uint256) (#1107-1109)
setSwapAndLiquifyEnabled(bool) should be declared external:
- Huhushengwei.setSwapAndLiquifyEnabled(bool) (#1111-1113)
isExcludedFromFees(address) should be declared external:
- Huhushengwei.isExcludedFromFees(address) (#1119-1121)
isIn3minter() should be declared external:
- Huhushengwei.isIn3minter() (#1123-1125)
swapAndLiquifyV1(uint256) should be declared external:
- Huhushengwei.swapAndLiquifyV1(uint256) (#1180-1184)
swapAndLiquifyV4() should be declared external:
- Huhushengwei.swapAndLiquifyV4() (#1207-1209)
rescueToken(address,uint256) should be declared external:
- Huhushengwei.rescueToken(address,uint256) (#1229-1235)
getBuysize() should be declared external:
- Huhushengwei.getBuysize() (#1287-1289)
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