$NASDAQ born from investors for Investors, Our Token has an automatic rebase principle,
that guarantee every block **(3 seconds)** a reward of 0.0000985%, thanksgiving to compound interests
we guarantee an Annual Percentage Yield of 985,221.78%. 🤯
Our long term goal is to create an ETF with all major shares regarding Network and Health.
✅ KYC
✅ 2 Audits
✅ 100% Community Driven
✅ 0% Tokens Team
✅ Liquidity Locked 10,000 Years
✅ Dapp Ready
Too many vulnerabilities (Unchecked transfer, Reentrancy vulnerability, etc.). High risk of a scam. DYOR & manual audit are advised.
NasdaqVaultFinance.swapBack() (#730-785) sends eth to arbitrary user
Dangerous calls:
- (success) = address(treasuryReceiver).call{gas: 30000,value: currentBalance.mul(treasuryFee).div(_currentFee)}() (#758-763)
- (success,None) = address(insuranceReceiver).call{gas: 30000,value: currentBalance.mul(insuranceFee).div(_currentFee)}() (#765-770)
- (success,None) = address(NasdaqBankReceiver).call{gas: 30000,value: currentBalance.mul(NasdaqBankFee).div(_currentFee)}() (#772-777)
- (success,None) = address(nftHolderReceiver).call{gas: 30000,value: currentBalance.mul(nftHolderFee).div(_currentFee)}() (#779-784)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in NasdaqVaultFinance._transferFrom(address,address,uint256) (#616-655):
External calls:
- rebase() (#628)
- pairContract.sync() (#575)
- addLiquidity() (#632)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#707-713)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,owner(),block.timestamp) (#718-725)
- swapBack() (#636)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#744-750)
- (success) = address(treasuryReceiver).call{gas: 30000,value: currentBalance.mul(treasuryFee).div(_currentFee)}() (#758-763)
- (success,None) = address(insuranceReceiver).call{gas: 30000,value: currentBalance.mul(insuranceFee).div(_currentFee)}() (#765-770)
- (success,None) = address(NasdaqBankReceiver).call{gas: 30000,value: currentBalance.mul(NasdaqBankFee).div(_currentFee)}() (#772-777)
- (success,None) = address(nftHolderReceiver).call{gas: 30000,value: currentBalance.mul(nftHolderFee).div(_currentFee)}() (#779-784)
External calls sending eth:
- addLiquidity() (#632)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,owner(),block.timestamp) (#718-725)
- swapBack() (#636)
- (success) = address(treasuryReceiver).call{gas: 30000,value: currentBalance.mul(treasuryFee).div(_currentFee)}() (#758-763)
- (success,None) = address(insuranceReceiver).call{gas: 30000,value: currentBalance.mul(insuranceFee).div(_currentFee)}() (#765-770)
- (success,None) = address(NasdaqBankReceiver).call{gas: 30000,value: currentBalance.mul(NasdaqBankFee).div(_currentFee)}() (#772-777)
- (success,None) = address(nftHolderReceiver).call{gas: 30000,value: currentBalance.mul(nftHolderFee).div(_currentFee)}() (#779-784)
State variables written after the call(s):
- _gonBalances[sender] = _gonBalances[sender].sub(gonAmount) (#640)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonAmountReceived) (#644-646)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#641-643)
- _gonBalances[firePit] = _gonBalances[firePit].add(gonAmount.div(feeDenominator).mul(burnFee)) (#670-672)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(gonAmount.div(feeDenominator).mul(maintainFee)) (#675-677)
- _gonBalances[lpReceiver] = _gonBalances[lpReceiver].add(gonAmount.div(feeDenominator).mul(liquidityFee)) (#678-680)
- swapBack() (#636)
- inSwap = true (#453)
- inSwap = false (#455)
Apply the check-effects-interactions pattern.
Additional information: link
NasdaqVaultFinance._name (#408) shadows:
- ERC20Detailed._name (#374)
NasdaqVaultFinance._symbol (#409) shadows:
- ERC20Detailed._symbol (#375)
NasdaqVaultFinance._decimals (#410) shadows:
- ERC20Detailed._decimals (#376)
Remove the state variable shadowing.
Additional information: link
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.
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Contract ownership is not renounced (belongs to a wallet)
NasdaqVaultFinance.swapBack().success (#758) is written in both
(success) = address(treasuryReceiver).call{gas: 30000,value: currentBalance.mul(treasuryFee).div(_currentFee)}() (#758-763)
(success,None) = address(insuranceReceiver).call{gas: 30000,value: currentBalance.mul(insuranceFee).div(_currentFee)}() (#765-770)
NasdaqVaultFinance.swapBack().success (#758) is written in both
(success,None) = address(insuranceReceiver).call{gas: 30000,value: currentBalance.mul(insuranceFee).div(_currentFee)}() (#765-770)
(success,None) = address(NasdaqBankReceiver).call{gas: 30000,value: currentBalance.mul(NasdaqBankFee).div(_currentFee)}() (#772-777)
NasdaqVaultFinance.swapBack().success (#758) is written in both
(success,None) = address(NasdaqBankReceiver).call{gas: 30000,value: currentBalance.mul(NasdaqBankFee).div(_currentFee)}() (#772-777)
(success,None) = address(nftHolderReceiver).call{gas: 30000,value: currentBalance.mul(nftHolderFee).div(_currentFee)}() (#779-784)
Fix or remove the writes.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#357-360)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#362-364)
name() should be declared external:
- ERC20Detailed.name() (#388-390)
symbol() should be declared external:
- ERC20Detailed.symbol() (#392-394)
decimals() should be declared external:
- ERC20Detailed.decimals() (#396-398)
getLiquidityBacking(uint256) should be declared external:
- NasdaqVaultFinance.getLiquidityBacking(uint256) (#942-950)
setPairAddress(address) should be declared external:
- NasdaqVaultFinance.setPairAddress(address) (#961-963)
Use the external attribute for functions never called from the contract.
Additional information: link
NasdaqVaultFinance.DEAD (#437) should be constant
NasdaqVaultFinance.ZERO (#438) should be constant
NasdaqVaultFinance._decimals (#410) should be constant
NasdaqVaultFinance._name (#408) should be constant
NasdaqVaultFinance._symbol (#409) should be constant
NasdaqVaultFinance.feeDenominator (#435) should be constant
NasdaqVaultFinance.swapEnabled (#448) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
NasdaqVaultFinance.rebase() (#539-578) performs a multiplication on the result of a division:
-tmp = tmp.mul(deno.mul(100).add(rebaseRate)).div(deno.mul(100)) (#553)
-tmp = tmp.mul(deno.mul(100).add(minuteRebaseRate)).div(deno.mul(100)) (#558)
NasdaqVaultFinance.rebase() (#539-578) performs a multiplication on the result of a division:
-tmp = tmp.mul(deno.mul(100).add(minuteRebaseRate)).div(deno.mul(100)) (#558)
-tmp = tmp.mul(deno.mul(100).add(hourRebaseRate)).div(deno.mul(100)) (#563)
NasdaqVaultFinance.rebase() (#539-578) performs a multiplication on the result of a division:
-tmp = tmp.mul(deno.mul(100).add(hourRebaseRate)).div(deno.mul(100)) (#563)
-tmp = tmp.mul(deno.mul(100).add(dayRebaseRate)).div(deno.mul(100)) (#568)
NasdaqVaultFinance.takeFee(address,address,uint256) (#657-684) performs a multiplication on the result of a division:
-feeAmount = gonAmount.div(feeDenominator).mul(_totalFee) (#668)
NasdaqVaultFinance.takeFee(address,address,uint256) (#657-684) performs a multiplication on the result of a division:
-_gonBalances[firePit] = _gonBalances[firePit].add(gonAmount.div(feeDenominator).mul(burnFee)) (#670-672)
NasdaqVaultFinance.takeFee(address,address,uint256) (#657-684) performs a multiplication on the result of a division:
-_gonBalances[address(this)] = _gonBalances[address(this)].add(gonAmount.div(feeDenominator).mul(maintainFee)) (#675-677)
NasdaqVaultFinance.takeFee(address,address,uint256) (#657-684) performs a multiplication on the result of a division:
-_gonBalances[lpReceiver] = _gonBalances[lpReceiver].add(gonAmount.div(feeDenominator).mul(liquidityFee)) (#678-680)
NasdaqVaultFinance.getLiquidityBacking(uint256) (#942-950) performs a multiplication on the result of a division:
-liquidityBalance = _gonBalances[pair].div(_gonsPerFragment) (#947)
-accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply()) (#948-949)
Consider ordering multiplication before division.
Additional information: link
NasdaqVaultFinance.addLiquidity() (#686-728) ignores return value by router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,owner(),block.timestamp) (#718-725)
Ensure that all the return values of the function calls are used.
Additional information: link
NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._treasuryReceiver (#930) lacks a zero-check on :
- treasuryReceiver = _treasuryReceiver (#935)
NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._insuranceReceiver (#931) lacks a zero-check on :
- insuranceReceiver = _insuranceReceiver (#936)
NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._nftHolderReceiver (#932) lacks a zero-check on :
- nftHolderReceiver = _nftHolderReceiver (#937)
NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._NasdaqBankReceiver (#933) lacks a zero-check on :
- NasdaqBankReceiver = _NasdaqBankReceiver (#938)
NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._lpReceiver (#929) lacks a zero-check on :
- lpReceiver = _lpReceiver (#939)
NasdaqVaultFinance.setPairAddress(address)._pairAddress (#961) lacks a zero-check on :
- pairAddress = _pairAddress (#962)
Check that the address is not zero.
Additional information: link
Reentrancy in NasdaqVaultFinance.addLiquidity() (#686-728):
External calls:
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#707-713)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,owner(),block.timestamp) (#718-725)
External calls sending eth:
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,owner(),block.timestamp) (#718-725)
State variables written after the call(s):
- _lastAddLiquidityTime = block.timestamp (#727)
Reentrancy in NasdaqVaultFinance.constructor() (#479-508):
External calls:
- pair = IPancakeSwapFactory(router.factory()).createPair(router.WETH(),address(this)) (#482-485)
State variables written after the call(s):
- NasdaqBankReceiver = 0x3E2297572944e0B911c4d7bB9519D920117fA96e (#490)
- _allowedFragments[address(this)][address(router)] = uint256(- 1) (#494)
- _gonBalances[owner()] = TOTAL_GONS (#499)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (#500)
- _initRebaseStartTime = block.timestamp (#501)
- _isFeeExempt[owner()] = true (#504)
- _isFeeExempt[address(this)] = true (#505)
- _lastRebasedTime = block.number (#502)
- _totalSupply = INITIAL_FRAGMENTS_SUPPLY (#498)
- firePit = 0x0000000000000000000000000000000000000000 (#492)
- insuranceReceiver = 0xF9ef39E4Fd22698c0b68066fe248EADF9EdbeF65 (#489)
- lpReceiver = 0x17Ae1022d97678F56c21A4f389ac29d416e4475f (#487)
- nftHolderReceiver = 0xb2902C632CA593E6d1713Df1DbcC27c86B43ACDB (#491)
- pairAddress = pair (#495)
- pairContract = IPancakeSwapPair(pair) (#496)
- treasuryReceiver = 0x8f17d5a50a80082F3B81Beb01CC3A3dFE94c4d1A (#488)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in NasdaqVaultFinance._transferFrom(address,address,uint256) (#616-655):
External calls:
- rebase() (#628)
- pairContract.sync() (#575)
- addLiquidity() (#632)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#707-713)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,owner(),block.timestamp) (#718-725)
- swapBack() (#636)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#744-750)
- (success) = address(treasuryReceiver).call{gas: 30000,value: currentBalance.mul(treasuryFee).div(_currentFee)}() (#758-763)
- (success,None) = address(insuranceReceiver).call{gas: 30000,value: currentBalance.mul(insuranceFee).div(_currentFee)}() (#765-770)
- (success,None) = address(NasdaqBankReceiver).call{gas: 30000,value: currentBalance.mul(NasdaqBankFee).div(_currentFee)}() (#772-777)
- (success,None) = address(nftHolderReceiver).call{gas: 30000,value: currentBalance.mul(nftHolderFee).div(_currentFee)}() (#779-784)
External calls sending eth:
- addLiquidity() (#632)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,owner(),block.timestamp) (#718-725)
- swapBack() (#636)
- (success) = address(treasuryReceiver).call{gas: 30000,value: currentBalance.mul(treasuryFee).div(_currentFee)}() (#758-763)
- (success,None) = address(insuranceReceiver).call{gas: 30000,value: currentBalance.mul(insuranceFee).div(_currentFee)}() (#765-770)
- (success,None) = address(NasdaqBankReceiver).call{gas: 30000,value: currentBalance.mul(NasdaqBankFee).div(_currentFee)}() (#772-777)
- (success,None) = address(nftHolderReceiver).call{gas: 30000,value: currentBalance.mul(nftHolderFee).div(_currentFee)}() (#779-784)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount.div(_gonsPerFragment)) (#682)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#641-643)
- Transfer(sender,recipient,gonAmountReceived.div(_gonsPerFragment)) (#649-653)
Reentrancy in NasdaqVaultFinance.constructor() (#479-508):
External calls:
- pair = IPancakeSwapFactory(router.factory()).createPair(router.WETH(),address(this)) (#482-485)
Event emitted after the call(s):
- Transfer(address(0x0),owner(),_totalSupply) (#507)
Reentrancy in NasdaqVaultFinance.rebase() (#539-578):
External calls:
- pairContract.sync() (#575)
Event emitted after the call(s):
- Rebased(block.timestamp,_totalSupply) (#577)
Apply the check-effects-interactions pattern.
Additional information: link
NasdaqVaultFinance.shouldAddLiquidity() (#822-828) uses timestamp for comparisons
Dangerous comparisons:
- _autoAddLiquidity && ! inSwap && msg.sender != pair && block.timestamp >= (_lastAddLiquidityTime + 172800) (#823-827)
Avoid relying on block.timestamp.
Additional information: link
NasdaqVaultFinance.isContract(address) (#977-981) uses assembly
- INLINE ASM (#979)
Do not use evm assembly.
Additional information: link
SafeMathInt.abs(int256) (#41-44) is never used and should be removed
SafeMathInt.add(int256,int256) (#35-39) is never used and should be removed
SafeMathInt.div(int256,int256) (#23-27) is never used and should be removed
SafeMathInt.mul(int256,int256) (#15-21) is never used and should be removed
SafeMathInt.sub(int256,int256) (#29-33) is never used and should be removed
Remove unused functions.
Additional information: link
NasdaqVaultFinance.sellFee (#432) is set pre-construction with a non-constant function or state variable:
- NasdaqBankFee.add(nftHolderFee)
NasdaqVaultFinance.totalFee (#434) is set pre-construction with a non-constant function or state variable:
- liquidityFee.add(treasuryFee).add(insuranceFee).add(burnFee)
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.7.4 (#9) 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 NasdaqVaultFinance.swapBack() (#730-785):
- (success) = address(treasuryReceiver).call{gas: 30000,value: currentBalance.mul(treasuryFee).div(_currentFee)}() (#758-763)
- (success,None) = address(insuranceReceiver).call{gas: 30000,value: currentBalance.mul(insuranceFee).div(_currentFee)}() (#765-770)
- (success,None) = address(NasdaqBankReceiver).call{gas: 30000,value: currentBalance.mul(NasdaqBankFee).div(_currentFee)}() (#772-777)
- (success,None) = address(nftHolderReceiver).call{gas: 30000,value: currentBalance.mul(nftHolderFee).div(_currentFee)}() (#779-784)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IPancakeSwapPair.DOMAIN_SEPARATOR() (#146) is not in mixedCase
Function IPancakeSwapPair.PERMIT_TYPEHASH() (#147) is not in mixedCase
Function IPancakeSwapPair.MINIMUM_LIQUIDITY() (#164) is not in mixedCase
Function IPancakeSwapRouter.WETH() (#184) is not in mixedCase
Parameter NasdaqVaultFinance.setAutoRebase(bool)._flag (#836) is not in mixedCase
Parameter NasdaqVaultFinance.setAutoAddLiquidity(bool)._flag (#845) is not in mixedCase
Parameter NasdaqVaultFinance.checkFeeExempt(address)._addr (#908) is not in mixedCase
Parameter NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._lpReceiver (#929) is not in mixedCase
Parameter NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._treasuryReceiver (#930) is not in mixedCase
Parameter NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._insuranceReceiver (#931) is not in mixedCase
Parameter NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._nftHolderReceiver (#932) is not in mixedCase
Parameter NasdaqVaultFinance.setFeeReceivers(address,address,address,address,address)._NasdaqBankReceiver (#933) is not in mixedCase
Parameter NasdaqVaultFinance.setWhitelist(address)._addr (#952) is not in mixedCase
Parameter NasdaqVaultFinance.setBotBlacklist(address,bool)._botAddress (#956) is not in mixedCase
Parameter NasdaqVaultFinance.setBotBlacklist(address,bool)._flag (#956) is not in mixedCase
Parameter NasdaqVaultFinance.setPairAddress(address)._pairAddress (#961) is not in mixedCase
Parameter NasdaqVaultFinance.setLP(address)._address (#965) is not in mixedCase
Variable NasdaqVaultFinance._name (#408) is not in mixedCase
Variable NasdaqVaultFinance._symbol (#409) is not in mixedCase
Variable NasdaqVaultFinance._decimals (#410) is not in mixedCase
Variable NasdaqVaultFinance._isFeeExempt (#413) is not in mixedCase
Variable NasdaqVaultFinance.NasdaqBankFee (#429) is not in mixedCase
Variable NasdaqVaultFinance.DEAD (#437) is not in mixedCase
Variable NasdaqVaultFinance.ZERO (#438) is not in mixedCase
Variable NasdaqVaultFinance.NasdaqBankReceiver (#440) is not in mixedCase
Variable NasdaqVaultFinance._autoRebase (#462) is not in mixedCase
Variable NasdaqVaultFinance._autoAddLiquidity (#463) is not in mixedCase
Variable NasdaqVaultFinance._initRebaseStartTime (#466) is not in mixedCase
Variable NasdaqVaultFinance._lastRebasedTime (#467) is not in mixedCase
Variable NasdaqVaultFinance._lastAddLiquidityTime (#468) is not in mixedCase
Variable NasdaqVaultFinance._totalSupply (#469) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeSwapRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#189) is too similar to IPancakeSwapRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#190)
Variable NasdaqVaultFinance.rebase().idx_scope_0 (#556) is too similar to NasdaqVaultFinance.rebase().idx_scope_1 (#561)
Variable NasdaqVaultFinance.rebase().idx_scope_0 (#556) is too similar to NasdaqVaultFinance.rebase().idx_scope_2 (#566)
Variable NasdaqVaultFinance.rebase().idx_scope_1 (#561) is too similar to NasdaqVaultFinance.rebase().idx_scope_2 (#566)
Prevent variables from having similar names.
Additional information: link
NasdaqVaultFinance.constructor() (#479-508) uses literals with too many digits:
- firePit = 0x0000000000000000000000000000000000000000 (#492)
NasdaqVaultFinance.rebase() (#539-578) uses literals with too many digits:
- dayRebaseRate = 283000000 * 10 ** 18 (#547)
NasdaqVaultFinance.slitherConstructorVariables() (#401-985) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#437)
NasdaqVaultFinance.slitherConstructorVariables() (#401-985) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#438)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#13) is never used in SafeMathInt (#11-45)
Remove unused state variables.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find audit link on the website
Unable to find whitepaper link on the website
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Unable to find token on CoinHunt
Additional information: link
Young tokens have high risks of scam / price dump / death
Alexa traffic rank is very low
Additional information: link
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Twitter account has relatively few followers
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account
Twitter account has few posts