Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in LZToken._transfer(address,address,uint256) (#1521-1550):
External calls:
- swapAndLiquify(contractTokenBalance) (#1536)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1586-1592)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1536)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
State variables written after the call(s):
- super._transfer(sender,_foundation,_stakingAndBurnAndTeamAmount) (#1541)
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#903)
- _balances[recipient] = _balances[recipient].add(amount) (#904)
- super._transfer(sender,recipient,amount) (#1547)
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#903)
- _balances[recipient] = _balances[recipient].add(amount) (#904)
- _unlockTransfer(sender,_foundation,_stakingAndBurnAndTeamAmount) (#1542)
- _unlocks[sender] = _unlocks[sender].sub(amount,BEP20: transfer amount exceeds unlocked balance) (#1491)
- _unlocks[recipient] = _unlocks[recipient].add(amount) (#1492)
- _unlockTransfer(sender,recipient,amount) (#1548)
- _unlocks[sender] = _unlocks[sender].sub(amount,BEP20: transfer amount exceeds unlocked balance) (#1491)
- _unlocks[recipient] = _unlocks[recipient].add(amount) (#1492)
Apply the check-effects-interactions pattern.
Additional information: link
LZToken._writeCheckpoint(address,uint32,uint256,uint256) (#1866-1884) uses a dangerous strict equality:
- nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber (#1876)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Address.functionCall(address,bytes) (#592-594) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#621-627) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#635-643) is never used and should be removed
Address.sendValue(address,uint256) (#566-572) is never used and should be removed
BEP20._burnFrom(address,uint256) (#975-982) is never used and should be removed
Context._msgData() (#23-26) is never used and should be removed
LZToken.calculateLiquidityFee(uint256) (#1638-1642) is never used and should be removed
SafeERC20.safeApprove(BEP20,address,uint256) (#91-100) is never used and should be removed
SafeERC20.safeDecreaseAllowance(BEP20,address,uint256) (#107-110) is never used and should be removed
SafeERC20.safeIncreaseAllowance(BEP20,address,uint256) (#102-105) is never used and should be removed
SafeMath.min(uint256,uint256) (#496-498) is never used and should be removed
SafeMath.mod(uint256,uint256) (#471-473) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#487-494) is never used and should be removed
SafeMath.sqrt(uint256) (#501-512) is never used and should be removed
Remove unused functions.
Additional information: link
LZToken.addLiquidity(uint256,uint256) (#1596-1609) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
Ensure that all the return values of the function calls are used.
Additional information: link
BEP20.constructor(string,string).name (#722) shadows:
- BEP20.name() (#738-740) (function)
- IBEP20.name() (#223) (function)
BEP20.constructor(string,string).symbol (#722) shadows:
- BEP20.symbol() (#752-754) (function)
- IBEP20.symbol() (#218) (function)
BEP20.allowance(address,address).owner (#786) shadows:
- Ownable.owner() (#161-163) (function)
BEP20._approve(address,address,uint256).owner (#958) shadows:
- Ownable.owner() (#161-163) (function)
Rename the local variables that shadow another component.
Additional information: link
LZToken.setLiquidityFeePercent(uint256) (#1625-1627) should emit an event for:
- _liquidityFee = liquidityFee (#1626)
LZToken.setStakingAndBurnAndTeamPercent(uint256) (#1644-1646) should emit an event for:
- _stakingAndBurnAndTeamAlloc = stakingAndBurnAndTeamAlloc (#1645)
LZToken.setLiquidityReservoir(uint256) (#1653-1655) should emit an event for:
- _liquidityReservoir = liquidityReservoir (#1654)
Emit an event for critical parameter changes.
Additional information: link
LZToken.setFoundation(address).foundation (#1657) lacks a zero-check on :
- _foundation = foundation (#1661)
Check that the address is not zero.
Additional information: link
Reentrancy in LZToken._transfer(address,address,uint256) (#1521-1550):
External calls:
- swapAndLiquify(contractTokenBalance) (#1536)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1586-1592)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1536)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
State variables written after the call(s):
- _moveDelegates(_delegates[sender],_delegates[recipient],amount) (#1549)
- checkpoints[delegatee][nCheckpoints - 1].votes = newVotes (#1877)
- checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber,newVotes) (#1879)
- _moveDelegates(_delegates[sender],_delegates[recipient],amount) (#1549)
- numCheckpoints[delegatee] = nCheckpoints + 1 (#1880)
Reentrancy in LZToken.constructor() (#1332-1347):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1337-1340)
State variables written after the call(s):
- _foundation = address(msg.sender) (#1344)
- _liquidityReservoir = 50000 * (10 ** uint256(decimals())) (#1345)
- _maxCap = 50000000 * (10 ** uint256(decimals())) (#1346)
- uniswapV2Router = _uniswapV2Router (#1343)
Reentrancy in LZToken.stake(address,uint256) (#1394-1404):
External calls:
- _pullToken(token,_msgSender(),amount) (#1397)
- BEP20(token).safeTransferFrom(from,address(this),amount) (#1497)
- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (#123)
- (success,returndata) = target.call{value: weiValue}(data) (#654)
External calls sending eth:
- _pullToken(token,_msgSender(),amount) (#1397)
- (success,returndata) = target.call{value: weiValue}(data) (#654)
State variables written after the call(s):
- _updateStakeRecord(_msgSender(),token,info.amountStaked.add(amount)) (#1400)
- _stakingRecords[staker][token].amountStaked = _amountStaked (#1428)
- _stakingRecords[staker][token].blockNumber = block.number (#1429)
- _mintUnlocked(_msgSender(),unlockedAmount) (#1401)
- _totalUnlocked = _totalUnlocked.add(amount) (#1474)
- _mintUnlocked(_msgSender(),unlockedAmount) (#1401)
- _unlocks[recipient] = _unlocks[recipient].add(amount) (#1473)
Reentrancy in LZToken.swapAndLiquify(uint256) (#1553-1574):
External calls:
- swapTokensForEth(half) (#1565)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1586-1592)
- addLiquidity(otherHalf,newBalance) (#1571)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1571)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1571)
- _allowances[owner][spender] = amount (#965)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in LZToken._transfer(address,address,uint256) (#1521-1550):
External calls:
- swapAndLiquify(contractTokenBalance) (#1536)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1586-1592)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1536)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
Event emitted after the call(s):
- DelegateVotesChanged(delegatee,oldVotes,newVotes) (#1883)
- _moveDelegates(_delegates[sender],_delegates[recipient],amount) (#1549)
- LOG_UNLOCK_TRANSFER(sender,recipient,amount) (#1493)
- _unlockTransfer(sender,_foundation,_stakingAndBurnAndTeamAmount) (#1542)
- LOG_UNLOCK_TRANSFER(sender,recipient,amount) (#1493)
- _unlockTransfer(sender,recipient,amount) (#1548)
- Transfer(sender,recipient,amount) (#905)
- super._transfer(sender,recipient,amount) (#1547)
- Transfer(sender,recipient,amount) (#905)
- super._transfer(sender,_foundation,_stakingAndBurnAndTeamAmount) (#1541)
Reentrancy in LZToken.stake(address,uint256) (#1394-1404):
External calls:
- _pullToken(token,_msgSender(),amount) (#1397)
- BEP20(token).safeTransferFrom(from,address(this),amount) (#1497)
- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (#123)
- (success,returndata) = target.call{value: weiValue}(data) (#654)
External calls sending eth:
- _pullToken(token,_msgSender(),amount) (#1397)
- (success,returndata) = target.call{value: weiValue}(data) (#654)
Event emitted after the call(s):
- LOG_STAKE(_msgSender(),token,amount) (#1402)
- LOG_UNLOCK_TRANSFER(address(0),recipient,amount) (#1475)
- _mintUnlocked(_msgSender(),unlockedAmount) (#1401)
Reentrancy in LZToken.swapAndLiquify(uint256) (#1553-1574):
External calls:
- swapTokensForEth(half) (#1565)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1586-1592)
- addLiquidity(otherHalf,newBalance) (#1571)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1571)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,_foundation,block.timestamp) (#1601-1608)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#966)
- addLiquidity(otherHalf,newBalance) (#1571)
- SwapAndLiquify(half,newBalance,otherHalf) (#1573)
Reentrancy in LZToken.unstake(address,uint256) (#1406-1416):
External calls:
- _pushToken(token,_msgSender(),amount) (#1413)
- BEP20(token).safeTransfer(to,amount) (#1501)
- returndata = address(token).functionCall(data,SafeERC20: low-level call failed) (#123)
- (success,returndata) = target.call{value: weiValue}(data) (#654)
External calls sending eth:
- _pushToken(token,_msgSender(),amount) (#1413)
- (success,returndata) = target.call{value: weiValue}(data) (#654)
Event emitted after the call(s):
- LOG_UNSTAKE(_msgSender(),token,amount) (#1414)
Apply the check-effects-interactions pattern.
Additional information: link
LZToken.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (#1732-1773) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now <= expiry,LZ::delegateBySig: signature expired) (#1771)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#537-548) uses assembly
- INLINE ASM (#544-546)
Address._functionCallWithValue(address,bytes,uint256,string) (#645-671) uses assembly
- INLINE ASM (#663-666)
LZToken.getChainId() (#1891-1895) uses assembly
- INLINE ASM (#1893)
Do not use evm assembly.
Additional information: link
LZToken._transfer(address,address,uint256) (#1521-1550) compares to a boolean constant:
-_isExcludedFromFee[sender] != true && _isExcludedFromFee[recipient] != true (#1522)
Remove the equality to the boolean constant.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#566-572):
- (success) = recipient.call{value: amount}() (#570)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#645-671):
- (success,returndata) = target.call{value: weiValue}(data) (#654)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#1021) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#1022) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#1039) is not in mixedCase
Function IUniswapV2Router01.WETH() (#1061) is not in mixedCase
Event LZTokenLOG_UNLOCK_TRANSFER(address,address,uint256) (#1254-1258) is not in CapWords
Event LZTokenLOG_STAKE(address,address,uint256) (#1260-1264) is not in CapWords
Event LZTokenLOG_UNSTAKE(address,address,uint256) (#1266-1270) is not in CapWords
Event LZTokenLOG_CLAIM_UNLOCKED(address,uint256) (#1272-1275) is not in CapWords
Event LZTokenLOG_SET_UNLOCK_FACTOR(address,uint256) (#1277-1280) is not in CapWords
Event LZTokenLOG_SET_UNLOCK_BLOCK_GAP(address,uint256) (#1282-1285) is not in CapWords
Parameter LZToken.setUnlockFactor(address,uint256)._factor (#1384) is not in mixedCase
Parameter LZToken.setUnlockBlockGap(address,uint256)._blockGap (#1389) is not in mixedCase
Parameter LZToken.calculateLiquidityFee(uint256)._amount (#1638) is not in mixedCase
Variable LZToken._liquidityFee (#1307) is not in mixedCase
Variable LZToken._stakingAndBurnAndTeamAlloc (#1308) is not in mixedCase
Variable LZToken._liquidityReservoir (#1309) is not in mixedCase
Variable LZToken._foundation (#1310) is not in mixedCase
Variable LZToken._maxCap (#1311) is not in mixedCase
Variable LZToken._delegates (#1673) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#24)" inContext (#14-27)
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 (#1066) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#1067)
Prevent variables from having similar names.
Additional information: link
LZToken.constructor() (#1332-1347) uses literals with too many digits:
- _maxCap = 50000000 * (10 ** uint256(decimals())) (#1346)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#180-183)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#189-191)
symbol() should be declared external:
- BEP20.symbol() (#752-754)
transfer(address,uint256) should be declared external:
- BEP20.transfer(address,uint256) (#778-781)
allowance(address,address) should be declared external:
- BEP20.allowance(address,address) (#786-788)
approve(address,uint256) should be declared external:
- BEP20.approve(address,uint256) (#797-800)
transferFrom(address,address,uint256) should be declared external:
- BEP20.transferFrom(address,address,uint256) (#814-826)
increaseAllowance(address,uint256) should be declared external:
- BEP20.increaseAllowance(address,uint256) (#840-843)
decreaseAllowance(address,uint256) should be declared external:
- BEP20.decreaseAllowance(address,uint256) (#859-866)
unlockedOf(address) should be declared external:
- LZToken.unlockedOf(address) (#1361-1363)
burn(uint256) should be declared external:
- LZToken.burn(uint256) (#1617-1623)
includeInFee(address) should be declared external:
- LZToken.includeInFee(address) (#1630-1632)
isExcludedFromFee(address) should be declared external:
- LZToken.isExcludedFromFee(address) (#1634-1636)
excludeFromFee(address) should be declared external:
- LZToken.excludeFromFee(address) (#1649-1651)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find token contract audit
Unable to find audit link on the website
Unable to find whitepaper link on the website
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Last post in Twitter was more than 30 days ago
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account