Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
VSLToken.addLiquidity(uint256,uint256) (#342-349) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
VSLToken.TransferBNBToAddress(address,uint256) (#828-832) sends eth to arbitrary user
Dangerous calls:
- recipient.transfer(amount) (#831)
VSLToken.TransferAllBNBToAddress(address) (#835-839) sends eth to arbitrary user
Dangerous calls:
- recipient.transfer(amount) (#838)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#435)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
State variables written after the call(s):
- _tokensOwned[stakingContract] += rtax (#472)
- _tokensOwned[address(this)] += tax (#477)
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#435)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
State variables written after the call(s):
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
- _allowances[owner][spender] = amount (#357)
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#435)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
State variables written after the call(s):
- addLiquidity(hltax,newBalance) (#491)
- _allowances[owner][spender] = amount (#357)
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#435)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#495)
State variables written after the call(s):
- _tokensOwned[to] += remaining (#503)
Reentrancy in VSLToken.transferFrom(address,address,uint256) (#298-306):
External calls:
- _transfer(sender,recipient,amount) (#302)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
External calls sending eth:
- _transfer(sender,recipient,amount) (#302)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
- externalAddress.transfer(newBalance) (#495)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (#304)
- _allowances[owner][spender] = amount (#357)
Apply the check-effects-interactions pattern.
Additional information: link
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.
VSLToken.setStakingContract(address)._contractAddress (#774) lacks a zero-check on :
- stakingContract = _contractAddress (#776)
VSLToken.setExternalAddress(address)._externalAddress (#788) lacks a zero-check on :
- externalAddress = _externalAddress (#790)
VSLToken.TransferBNBToAddress(address,uint256).recipient (#828) lacks a zero-check on :
- recipient.transfer(amount) (#831)
VSLToken.TransferAllBNBToAddress(address).recipient (#835) lacks a zero-check on :
- recipient.transfer(amount) (#838)
Check that the address is not zero.
Additional information: link
Address.isContract(address) (#7-20) uses assembly
- INLINE ASM (#15-18)
Do not use evm assembly.
Additional information: link
Address.isContract(address) (#7-20) is never used and should be removed
Remove unused functions.
Additional information: link
VSLToken.addLiquidity(uint256,uint256) (#342-349) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
Ensure that all the return values of the function calls are used.
Additional information: link
VSLToken.allowance(address,address).owner (#285) shadows:
- Ownable.owner() (#145-148) (function)
VSLToken._approve(address,address,uint256).owner (#352) shadows:
- Ownable.owner() (#145-148) (function)
Rename the local variables that shadow another component.
Additional information: link
Reentrancy in VSLToken.changeRouterVersion(address) (#609-634):
External calls:
- _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#617)
State variables written after the call(s):
- _isExchangeAddress[uniswapV2Pair] = true (#626)
- _isExcludedFromFee[uniswapV2Pair] = true (#622)
- _isExcludedFromFee[address(uniswapV2Router)] = true (#633)
- exchangeCount ++ (#627)
- exchangeToId[uniswapV2Pair] = exchangeCount (#629)
- exchanges[exchangeCount] = uniswapV2Pair (#628)
- uniswapV2Pair = _pair (#621)
- uniswapV2Router = _uniswapV2Router (#632)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#435)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#358)
- addLiquidity(hltax,newBalance) (#442)
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#435)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
Event emitted after the call(s):
- Transfer(from,stakingContract,rtax) (#473)
- Transfer(from,address(this),tax) (#478)
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#435)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#358)
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#435)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#358)
- addLiquidity(hltax,newBalance) (#491)
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#435)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#495)
Event emitted after the call(s):
- Transfer(from,to,remaining) (#504)
Reentrancy in VSLToken.changeRouterVersion(address) (#609-634):
External calls:
- _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#617)
Event emitted after the call(s):
- RouterVersionChanged(_router,_pair) (#623)
Reentrancy in VSLToken.transferFrom(address,address,uint256) (#298-306):
External calls:
- _transfer(sender,recipient,amount) (#302)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),getTime()) (#377-384)
External calls sending eth:
- _transfer(sender,recipient,amount) (#302)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
- externalAddress.transfer(newBalance) (#495)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#358)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (#304)
Apply the check-effects-interactions pattern.
Additional information: link
Pragma version0.8.14 (#3) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.14 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() (#67) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#68) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#69) is not in mixedCase
Function IUniswapV2Router01.WETH() (#89) is not in mixedCase
Parameter VSLToken.toggleTaxes(bool)._enabled (#511) is not in mixedCase
Parameter VSLToken.changeRouterVersion(address)._router (#609) is not in mixedCase
Parameter VSLToken.getExchangeID(address)._exchange (#637) is not in mixedCase
Parameter VSLToken.getExchangeAddress(uint256)._exchangeID (#643) is not in mixedCase
Parameter VSLToken.isExchangeAddress(address)._address (#668) is not in mixedCase
Parameter VSLToken.setupExchangeAddress(address,bool)._address (#675) is not in mixedCase
Parameter VSLToken.setupExchangeAddress(address,bool)._allowOrNot (#675) is not in mixedCase
Parameter VSLToken.setupAllowedContract(address,bool)._contractAddress (#716) is not in mixedCase
Parameter VSLToken.setupAllowedContract(address,bool)._allowOrNot (#716) is not in mixedCase
Function VSLToken.IsAddressInList(address) (#737-744) is not in mixedCase
Parameter VSLToken.isAllowedContract(address)._contractAddress (#767) is not in mixedCase
Parameter VSLToken.setStakingContract(address)._contractAddress (#774) is not in mixedCase
Parameter VSLToken.setExternalAddress(address)._externalAddress (#788) is not in mixedCase
Function VSLToken.TransferForeignTokens(address,address) (#803-811) is not in mixedCase
Parameter VSLToken.TransferForeignTokens(address,address)._token (#803) is not in mixedCase
Parameter VSLToken.TransferForeignTokens(address,address)._to (#803) is not in mixedCase
Function VSLToken.TransferForeignAmount(address,address,uint256) (#814-825) is not in mixedCase
Parameter VSLToken.TransferForeignAmount(address,address,uint256)._token (#814) is not in mixedCase
Parameter VSLToken.TransferForeignAmount(address,address,uint256)._to (#814) is not in mixedCase
Parameter VSLToken.TransferForeignAmount(address,address,uint256)._maxAmount (#814) is not in mixedCase
Function VSLToken.TransferBNBToAddress(address,uint256) (#828-832) is not in mixedCase
Function VSLToken.TransferAllBNBToAddress(address) (#835-839) is not in mixedCase
Constant VSLToken._name (#194) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VSLToken._symbol (#195) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VSLToken._decimals (#196) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VSLToken._totalTokens (#198) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VSLToken._marketTaxCap (#216) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VSLToken._liquidityCap (#222) is not in UPPER_CASE_WITH_UNDERSCORES
Constant VSLToken._royaltyCap (#226) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- externalAddress.transfer(newBalance) (#446)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
State variables written after the call(s):
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
- _allowances[owner][spender] = amount (#357)
- _tokensOwned[stakingContract] += rtax (#472)
- _tokensOwned[address(this)] += tax (#477)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#358)
- (mtax + hltax != 0) && swapTokensForBNB(mtax + hltax) (#484)
- Transfer(from,stakingContract,rtax) (#473)
- Transfer(from,address(this),tax) (#478)
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- externalAddress.transfer(newBalance) (#446)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
State variables written after the call(s):
- addLiquidity(hltax,newBalance) (#491)
- _allowances[owner][spender] = amount (#357)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#358)
- addLiquidity(hltax,newBalance) (#491)
Reentrancy in VSLToken._transfer(address,address,uint256) (#390-505):
External calls:
- externalAddress.transfer(newBalance) (#446)
- externalAddress.transfer(newBalance) (#495)
External calls sending eth:
- addLiquidity(hltax,newBalance) (#442)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
- addLiquidity(hltax,newBalance) (#491)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#495)
State variables written after the call(s):
- _tokensOwned[to] += remaining (#503)
Event emitted after the call(s):
- Transfer(from,to,remaining) (#504)
Reentrancy in VSLToken.transferFrom(address,address,uint256) (#298-306):
External calls:
- _transfer(sender,recipient,amount) (#302)
- externalAddress.transfer(newBalance) (#446)
- externalAddress.transfer(newBalance) (#495)
External calls sending eth:
- _transfer(sender,recipient,amount) (#302)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(this),getTime()) (#348)
- externalAddress.transfer(newBalance) (#446)
- externalAddress.transfer(newBalance) (#495)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (#304)
- _allowances[owner][spender] = amount (#357)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#358)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (#304)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#91) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#91)
Prevent variables from having similar names.
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