Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in hydrogenmolecule._transfer(address,address,uint256) (#1122-1163):
External calls:
- swapAndLiquify(contractTokenBalance) (#1150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1202-1208)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1221-1227)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1229)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _devFee = _previousDevFee (#1107)
- _devFee = 0 (#1100)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _liquidityFee = _previousLiquidityFee (#1105)
- _liquidityFee = 0 (#1098)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _rOwned[burnAddress] = _rOwned[burnAddress].add(rBurn) (#947)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1061)
- _rOwned[devAddress] = _rOwned[devAddress].add(rDev) (#957)
- _rOwned[address(this)] = _rOwned[address(this)].add(rDev) (#959)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#891)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#892)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _rTotal = _rTotal.sub(rFee) (#1006)
Apply the check-effects-interactions pattern.
Additional information: link
hydrogenmolecule.swapTokensForDividendToken(uint256) (#1211-1231) ignores return value by IERC20(husdtToken).transfer(address(devAddress),dividends) (#1229)
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 ticker (hydrogenmolecule) has length of 16 chars.
Not a direct threat, but may indicate unreliable intentions of developer.
hydrogenmolecule.swapAndLiquify(uint256) (#1165-1190) performs a multiplication on the result of a division:
-addHl = uint256(100).mul(_liquidityFee).div(_liquidityFee.add(lsDevFee)) (#1170)
-addNumber = contractTokenBalance.mul(addHl).div(100) (#1171)
Consider ordering multiplication before division.
Additional information: link
PancakeLibrary.getAmountsOut(address,uint256,address[]).i (#729) 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
hydrogenmolecule.addLiquidity(uint256,uint256) (#863-876) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
Ensure that all the return values of the function calls are used.
Additional information: link
hydrogenmolecule.allowance(address,address).owner (#859) shadows:
- Ownable.owner() (#398-400) (function)
hydrogenmolecule._approve(address,address,uint256).owner (#1114) shadows:
- Ownable.owner() (#398-400) (function)
Rename the local variables that shadow another component.
Additional information: link
hydrogenmolecule.setTaxFeePercent(uint256) (#972-974) should emit an event for:
- _taxFee = taxFee (#973)
hydrogenmolecule.setLiquidityFeePercent(uint256) (#976-978) should emit an event for:
- _liquidityFee = liquidityFee (#977)
hydrogenmolecule.setBurnFeePercent(uint256) (#980-982) should emit an event for:
- _burnFee = burnFee (#981)
hydrogenmolecule.setDevFeePercent(uint256) (#984-986) should emit an event for:
- _devFee = devFee (#985)
hydrogenmolecule.setMaxTxPercent(uint256) (#988-990) should emit an event for:
- _maxTxAmount = maxTxPercent (#989)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in hydrogenmolecule._transfer(address,address,uint256) (#1122-1163):
External calls:
- swapAndLiquify(contractTokenBalance) (#1150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1202-1208)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1221-1227)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1229)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _burnFee = _previousBurnFee (#1106)
- _burnFee = 0 (#1099)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _previousBurnFee = _burnFee (#1094)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _previousDevFee = _devFee (#1095)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _previousLiquidityFee = _liquidityFee (#1093)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _previousTaxFee = _taxFee (#1092)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1007)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- _taxFee = _previousTaxFee (#1104)
- _taxFee = 0 (#1097)
Reentrancy in hydrogenmolecule.constructor() (#814-832):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#819-820)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#826)
- _isExcludedFromFee[ownerAddres] = true (#827)
- _isExcludedFromFee[burnAddress] = true (#828)
- _isExcludedFromFee[address(this)] = true (#829)
- uniswapV2Router = _uniswapV2Router (#823)
Reentrancy in hydrogenmolecule.swapAndLiquify(uint256) (#1165-1190):
External calls:
- swapTokensForEth(half) (#1179)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1202-1208)
- addLiquidity(otherHalf,newBalance) (#1185)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1185)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1185)
- _allowances[owner][spender] = amount (#1118)
Reentrancy in hydrogenmolecule.swapAndLiquify(uint256) (#1165-1190):
External calls:
- swapTokensForEth(half) (#1179)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1202-1208)
- addLiquidity(otherHalf,newBalance) (#1185)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
- swapTokensForDividendToken(devNumber) (#1187)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1221-1227)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1229)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1185)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
State variables written after the call(s):
- swapTokensForDividendToken(devNumber) (#1187)
- _allowances[owner][spender] = amount (#1118)
Reentrancy in hydrogenmolecule.transferFrom(address,address,uint256) (#906-910):
External calls:
- _transfer(sender,recipient,amount) (#907)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1202-1208)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1221-1227)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1229)
External calls sending eth:
- _transfer(sender,recipient,amount) (#907)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#908)
- _allowances[owner][spender] = amount (#1118)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in hydrogenmolecule._transfer(address,address,uint256) (#1122-1163):
External calls:
- swapAndLiquify(contractTokenBalance) (#1150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1202-1208)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1221-1227)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1229)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
Event emitted after the call(s):
- Transfer(sender,burnAddress,tBurn) (#949)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
- Transfer(sender,recipient,tTransferAmount) (#898)
- _tokenTransfer(from,to,amount,takeFee) (#1162)
Reentrancy in hydrogenmolecule.constructor() (#814-832):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#819-820)
Event emitted after the call(s):
- Transfer(address(0),ownerAddres,_tTotal) (#831)
Reentrancy in hydrogenmolecule.swapAndLiquify(uint256) (#1165-1190):
External calls:
- swapTokensForEth(half) (#1179)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1202-1208)
- addLiquidity(otherHalf,newBalance) (#1185)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1185)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1119)
- addLiquidity(otherHalf,newBalance) (#1185)
Reentrancy in hydrogenmolecule.swapAndLiquify(uint256) (#1165-1190):
External calls:
- swapTokensForEth(half) (#1179)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1202-1208)
- addLiquidity(otherHalf,newBalance) (#1185)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
- swapTokensForDividendToken(devNumber) (#1187)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1221-1227)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1229)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1185)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1119)
- swapTokensForDividendToken(devNumber) (#1187)
- SwapAndLiquify(half,newBalance,otherHalf) (#1189)
Reentrancy in hydrogenmolecule.transferFrom(address,address,uint256) (#906-910):
External calls:
- _transfer(sender,recipient,amount) (#907)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1202-1208)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1221-1227)
- IERC20(husdtToken).transfer(address(devAddress),dividends) (#1229)
External calls sending eth:
- _transfer(sender,recipient,amount) (#907)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),block.timestamp) (#868-875)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1119)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#908)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#445-450) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now > _lockTime,Contract is locked until 7 days) (#447)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#250-259) uses assembly
- INLINE ASM (#257)
Address._functionCallWithValue(address,bytes,uint256,string) (#343-364) uses assembly
- INLINE ASM (#356-359)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.5.0', '^0.6.12']
- ^0.6.12 (#5)
- >=0.5.0 (#646)
- >=0.5.0 (#665)
Use one Solidity version.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#343-364) is never used and should be removed
Address.functionCall(address,bytes) (#303-305) is never used and should be removed
Address.functionCall(address,bytes,string) (#313-315) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#328-330) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#338-341) is never used and should be removed
Address.isContract(address) (#250-259) is never used and should be removed
Address.sendValue(address,uint256) (#277-283) is never used and should be removed
Context._msgData() (#222-225) is never used and should be removed
PancakeLibrary.getAmountIn(uint256,uint256,uint256) (#716-722) is never used and should be removed
PancakeLibrary.getAmountOut(uint256,uint256,uint256) (#706-713) is never used and should be removed
PancakeLibrary.getAmountsIn(address,uint256,address[]) (#736-744) is never used and should be removed
PancakeLibrary.getAmountsOut(address,uint256,address[]) (#725-733) is never used and should be removed
PancakeLibrary.getReserves(address,address,address) (#691-696) is never used and should be removed
PancakeLibrary.pairFor(address,address,address) (#680-688) is never used and should be removed
PancakeLibrary.quote(uint256,uint256,uint256) (#699-703) is never used and should be removed
PancakeLibrary.sortTokens(address,address) (#673-677) is never used and should be removed
SafeMath.mod(uint256,uint256) (#128-130) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#144-147) is never used and should be removed
Remove unused functions.
Additional information: link
hydrogenmolecule._rTotal (#764) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
hydrogenmolecule._previousTaxFee (#772) is set pre-construction with a non-constant function or state variable:
- _taxFee
hydrogenmolecule._previousLiquidityFee (#775) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
hydrogenmolecule._previousBurnFee (#778) is set pre-construction with a non-constant function or state variable:
- _burnFee
hydrogenmolecule._previousDevFee (#781) is set pre-construction with a non-constant function or state variable:
- _devFee
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
Pragma version>=0.5.0 (#646) allows old versions
Pragma version>=0.5.0 (#665) 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) (#277-283):
- (success) = recipient.call{value: amount}() (#281)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#343-364):
- (success,returndata) = target.call{value: weiValue}(data) (#347)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IPancakeRouter01.WETH() (#457) is not in mixedCase
Function IPancakePair.DOMAIN_SEPARATOR() (#610) is not in mixedCase
Function IPancakePair.PERMIT_TYPEHASH() (#611) is not in mixedCase
Function IPancakePair.MINIMUM_LIQUIDITY() (#628) is not in mixedCase
Contract hydrogenmolecule (#752-1233) is not in CapWords
Parameter hydrogenmolecule.setSwapAndLiquifyEnabled(bool)._enabled (#992) is not in mixedCase
Parameter hydrogenmolecule.setSwapDevEnabled(bool)._enabled (#997) is not in mixedCase
Parameter hydrogenmolecule.calculateTaxFee(uint256)._amount (#1064) is not in mixedCase
Parameter hydrogenmolecule.calculateLiquidityFee(uint256)._amount (#1070) is not in mixedCase
Parameter hydrogenmolecule.calculateBurnFee(uint256)._amount (#1076) is not in mixedCase
Parameter hydrogenmolecule.calculateDevFee(uint256)._amount (#1082) is not in mixedCase
Variable hydrogenmolecule._taxFee (#771) is not in mixedCase
Variable hydrogenmolecule._liquidityFee (#774) is not in mixedCase
Variable hydrogenmolecule._burnFee (#777) is not in mixedCase
Variable hydrogenmolecule._devFee (#780) is not in mixedCase
Variable hydrogenmolecule._maxTxAmount (#797) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#223)" inContext (#217-226)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#462) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#463)
Variable hydrogenmolecule._transferStandard(address,address,uint256).rTransferAmount (#890) is too similar to hydrogenmolecule._transferStandard(address,address,uint256).tTransferAmount (#890)
Variable hydrogenmolecule._transferStandard(address,address,uint256).rTransferAmount (#890) is too similar to hydrogenmolecule._getValues(uint256).tTransferAmount (#1019)
Variable hydrogenmolecule.reflectionFromToken(uint256,bool).rTransferAmount (#933) is too similar to hydrogenmolecule._getValues(uint256).tTransferAmount (#1019)
Variable hydrogenmolecule._transferStandard(address,address,uint256).rTransferAmount (#890) is too similar to hydrogenmolecule._getTValues(uint256).tTransferAmount (#1030)
Variable hydrogenmolecule.reflectionFromToken(uint256,bool).rTransferAmount (#933) is too similar to hydrogenmolecule._transferStandard(address,address,uint256).tTransferAmount (#890)
Variable hydrogenmolecule._getValues(uint256).rTransferAmount (#1021) is too similar to hydrogenmolecule._getValues(uint256).tTransferAmount (#1019)
Variable hydrogenmolecule.reflectionFromToken(uint256,bool).rTransferAmount (#933) is too similar to hydrogenmolecule._getTValues(uint256).tTransferAmount (#1030)
Variable hydrogenmolecule._getRValues(hydrogenmolecule.TData,uint256).rTransferAmount (#1041) is too similar to hydrogenmolecule._getValues(uint256).tTransferAmount (#1019)
Variable hydrogenmolecule._getValues(uint256).rTransferAmount (#1021) is too similar to hydrogenmolecule._transferStandard(address,address,uint256).tTransferAmount (#890)
Variable hydrogenmolecule._getRValues(hydrogenmolecule.TData,uint256).rTransferAmount (#1041) is too similar to hydrogenmolecule._transferStandard(address,address,uint256).tTransferAmount (#890)
Variable hydrogenmolecule._getValues(uint256).rTransferAmount (#1021) is too similar to hydrogenmolecule._getTValues(uint256).tTransferAmount (#1030)
Variable hydrogenmolecule._getRValues(hydrogenmolecule.TData,uint256).rTransferAmount (#1041) is too similar to hydrogenmolecule._getTValues(uint256).tTransferAmount (#1030)
Prevent variables from having similar names.
Additional information: link
hydrogenmolecule.slitherConstructorVariables() (#752-1233) uses literals with too many digits:
- _tTotal = 100000000000000 * 10 ** 18 (#763)
hydrogenmolecule.slitherConstructorVariables() (#752-1233) uses literals with too many digits:
- _maxTxAmount = 10000000000 * 10 ** 18 (#797)
hydrogenmolecule.slitherConstructorVariables() (#752-1233) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 1000000000 * 10 ** 18 (#798)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
hydrogenmolecule._tOwned (#757) is never used in hydrogenmolecule (#752-1233)
Remove unused state variables.
Additional information: link
hydrogenmolecule._decimals (#769) should be constant
hydrogenmolecule._name (#767) should be constant
hydrogenmolecule._symbol (#768) should be constant
hydrogenmolecule._tTotal (#763) should be constant
hydrogenmolecule.burnAddress (#783) should be constant
hydrogenmolecule.devAddress (#785) should be constant
hydrogenmolecule.hbtcToken (#787) should be constant
hydrogenmolecule.husdtToken (#788) should be constant
hydrogenmolecule.numTokensSellToAddToLiquidity (#798) should be constant
hydrogenmolecule.ownerAddres (#784) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#417-420)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#426-430)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#432-434)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#437-442)
unlock() should be declared external:
- Ownable.unlock() (#445-450)
name() should be declared external:
- hydrogenmolecule.name() (#834-836)
symbol() should be declared external:
- hydrogenmolecule.symbol() (#838-840)
decimals() should be declared external:
- hydrogenmolecule.decimals() (#842-844)
totalSupply() should be declared external:
- hydrogenmolecule.totalSupply() (#846-848)
transfer(address,uint256) should be declared external:
- hydrogenmolecule.transfer(address,uint256) (#854-857)
allowance(address,address) should be declared external:
- hydrogenmolecule.allowance(address,address) (#859-861)
approve(address,uint256) should be declared external:
- hydrogenmolecule.approve(address,uint256) (#901-904)
transferFrom(address,address,uint256) should be declared external:
- hydrogenmolecule.transferFrom(address,address,uint256) (#906-910)
increaseAllowance(address,uint256) should be declared external:
- hydrogenmolecule.increaseAllowance(address,uint256) (#912-915)
decreaseAllowance(address,uint256) should be declared external:
- hydrogenmolecule.decreaseAllowance(address,uint256) (#917-920)
totalFees() should be declared external:
- hydrogenmolecule.totalFees() (#923-925)
reflectionFromToken(uint256,bool) should be declared external:
- hydrogenmolecule.reflectionFromToken(uint256,bool) (#927-936)
excludeFromFee(address) should be declared external:
- hydrogenmolecule.excludeFromFee(address) (#964-966)
includeInFee(address) should be declared external:
- hydrogenmolecule.includeInFee(address) (#968-970)
setSwapAndLiquifyEnabled(bool) should be declared external:
- hydrogenmolecule.setSwapAndLiquifyEnabled(bool) (#992-995)
setSwapDevEnabled(bool) should be declared external:
- hydrogenmolecule.setSwapDevEnabled(bool) (#997-999)
isExcludedFromFee(address) should be declared external:
- hydrogenmolecule.isExcludedFromFee(address) (#1110-1112)
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