The Instant Jackpot Protocol is a Stake-to-Earn Auto-compounding Protocol protocol that makes staking easier, more efficient and awards $INSTANT token holders with the highest stable returns in crypto - 383,025.80% Fixed APY. As Audited & LP Locked for 100 years, we will be the next gem in BSC.
INSTANT.swapBack() (#683-721) sends eth to arbitrary user
Dangerous calls:
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#709-714)
- (success,None) = address(instantjackpotInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(instantjackpotInsuranceFundFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#715-720)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in INSTANT._transferFrom(address,address,uint256) (#569-608):
External calls:
- rebase() (#581)
- pairContract.sync() (#528)
- addLiquidity() (#585)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#660-666)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#671-678)
- swapBack() (#589)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#697-703)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#709-714)
- (success,None) = address(instantjackpotInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(instantjackpotInsuranceFundFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#715-720)
External calls sending eth:
- addLiquidity() (#585)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#671-678)
- swapBack() (#589)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#709-714)
- (success,None) = address(instantjackpotInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(instantjackpotInsuranceFundFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#715-720)
State variables written after the call(s):
- _gonBalances[sender] = _gonBalances[sender].sub(gonAmount) (#593)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonAmountReceived) (#597-599)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#594-596)
- _gonBalances[firePit] = _gonBalances[firePit].add(gonAmount.div(feeDenominator).mul(firePitFee)) (#625-627)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(gonAmount.div(feeDenominator).mul(_treasuryFee.add(instantjackpotInsuranceFundFee))) (#628-630)
- _gonBalances[autoLiquidityReceiver] = _gonBalances[autoLiquidityReceiver].add(gonAmount.div(feeDenominator).mul(liquidityFee)) (#631-633)
- swapBack() (#589)
- inSwap = true (#447)
- inSwap = false (#449)
Apply the check-effects-interactions pattern.
Additional information: link
INSTANT._name (#404) shadows:
- ERC20Detailed._name (#370)
INSTANT._symbol (#405) shadows:
- ERC20Detailed._symbol (#371)
INSTANT._decimals (#406) shadows:
- ERC20Detailed._decimals (#372)
Remove the state variable shadowing.
Additional information: link
Too many vulnerabilities (Unchecked transfer, Reentrancy vulnerability, etc.). High risk of a scam. DYOR & manual audit are advised.
INSTANT.swapBack().success (#709) is written in both
(success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#709-714)
(success,None) = address(instantjackpotInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(instantjackpotInsuranceFundFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#715-720)
Fix or remove the writes.
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)
INSTANT.rebase() (#500-531) performs a multiplication on the result of a division:
-times = deltaTime.div(900) (#506)
-epoch = times.mul(15) (#507)
INSTANT.rebase() (#500-531) performs a multiplication on the result of a division:
-times = deltaTime.div(900) (#506)
-_lastRebasedTime = _lastRebasedTime.add(times.mul(900)) (#526)
INSTANT.takeFee(address,address,uint256) (#610-637) performs a multiplication on the result of a division:
-feeAmount = gonAmount.div(feeDenominator).mul(_totalFee) (#623)
INSTANT.takeFee(address,address,uint256) (#610-637) performs a multiplication on the result of a division:
-_gonBalances[firePit] = _gonBalances[firePit].add(gonAmount.div(feeDenominator).mul(firePitFee)) (#625-627)
INSTANT.takeFee(address,address,uint256) (#610-637) performs a multiplication on the result of a division:
-_gonBalances[address(this)] = _gonBalances[address(this)].add(gonAmount.div(feeDenominator).mul(_treasuryFee.add(instantjackpotInsuranceFundFee))) (#628-630)
INSTANT.takeFee(address,address,uint256) (#610-637) performs a multiplication on the result of a division:
-_gonBalances[autoLiquidityReceiver] = _gonBalances[autoLiquidityReceiver].add(gonAmount.div(feeDenominator).mul(liquidityFee)) (#631-633)
INSTANT.getLiquidityBacking(uint256) (#875-883) performs a multiplication on the result of a division:
-liquidityBalance = _gonBalances[pair].div(_gonsPerFragment) (#880)
-accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply()) (#881-882)
Consider ordering multiplication before division.
Additional information: link
INSTANT.rebase().rebaseRate (#503) 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
INSTANT.addLiquidity() (#639-681) ignores return value by router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#671-678)
Ensure that all the return values of the function calls are used.
Additional information: link
INSTANT.setFeeReceivers(address,address,address,address)._autoLiquidityReceiver (#864) lacks a zero-check on :
- autoLiquidityReceiver = _autoLiquidityReceiver (#869)
INSTANT.setFeeReceivers(address,address,address,address)._treasuryReceiver (#865) lacks a zero-check on :
- treasuryReceiver = _treasuryReceiver (#870)
INSTANT.setFeeReceivers(address,address,address,address)._instantjackpotInsuranceFundReceiver (#866) lacks a zero-check on :
- instantjackpotInsuranceFundReceiver = _instantjackpotInsuranceFundReceiver (#871)
INSTANT.setFeeReceivers(address,address,address,address)._firePit (#867) lacks a zero-check on :
- firePit = _firePit (#872)
INSTANT.setPairAddress(address)._pairAddress (#894) lacks a zero-check on :
- pairAddress = _pairAddress (#895)
Check that the address is not zero.
Additional information: link
owner() should be declared external:
- Ownable.owner() (#340-342)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#353-356)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#358-360)
name() should be declared external:
- ERC20Detailed.name() (#384-386)
symbol() should be declared external:
- ERC20Detailed.symbol() (#388-390)
decimals() should be declared external:
- ERC20Detailed.decimals() (#392-394)
getLiquidityBacking(uint256) should be declared external:
- INSTANT.getLiquidityBacking(uint256) (#875-883)
setPairAddress(address) should be declared external:
- INSTANT.setPairAddress(address) (#894-896)
wLiquidity() should be declared external:
- INSTANT.wLiquidity() (#916-918)
Use the external attribute for functions never called from the contract.
Additional information: link
Reentrancy in INSTANT.addLiquidity() (#639-681):
External calls:
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#660-666)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#671-678)
External calls sending eth:
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#671-678)
State variables written after the call(s):
- _lastAddLiquidityTime = block.timestamp (#680)
Reentrancy in INSTANT.constructor() (#469-498):
External calls:
- pair = IPancakeSwapFactory(router.factory()).createPair(router.WETH(),address(this)) (#472-475)
State variables written after the call(s):
- _allowedFragments[address(this)][address(router)] = uint256(- 1) (#482)
- _autoAddLiquidity = true (#492)
- _autoRebase = true (#491)
- _gonBalances[treasuryReceiver] = TOTAL_GONS (#487)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (#488)
- _initRebaseStartTime = block.timestamp (#489)
- _isFeeExempt[treasuryReceiver] = true (#493)
- _isFeeExempt[address(this)] = true (#494)
- _lastRebasedTime = block.timestamp (#490)
- _transferOwnership(treasuryReceiver) (#496)
- _owner = newOwner (#365)
- _totalSupply = INITIAL_FRAGMENTS_SUPPLY (#486)
- autoLiquidityReceiver = 0xdF8bD7e8784A0Ee750973eD1eDa064a6f5737A1B (#477)
- firePit = 0x29AC807511b1fCDd678272Bb5f533027cE753FB6 (#480)
- instantjackpotInsuranceFundReceiver = 0x626DFD4D921628A31685f4193701c43597cD1782 (#479)
- pairAddress = pair (#483)
- pairContract = IPancakeSwapPair(pair) (#484)
- treasuryReceiver = 0xA8Ce8953f22Fb6bE85c797DAA4e3E28939a293ee (#478)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in INSTANT._transferFrom(address,address,uint256) (#569-608):
External calls:
- rebase() (#581)
- pairContract.sync() (#528)
- addLiquidity() (#585)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#660-666)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#671-678)
- swapBack() (#589)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#697-703)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#709-714)
- (success,None) = address(instantjackpotInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(instantjackpotInsuranceFundFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#715-720)
External calls sending eth:
- addLiquidity() (#585)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#671-678)
- swapBack() (#589)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#709-714)
- (success,None) = address(instantjackpotInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(instantjackpotInsuranceFundFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#715-720)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount.div(_gonsPerFragment)) (#635)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#594-596)
- Transfer(sender,recipient,gonAmountReceived.div(_gonsPerFragment)) (#602-606)
Reentrancy in INSTANT.constructor() (#469-498):
External calls:
- pair = IPancakeSwapFactory(router.factory()).createPair(router.WETH(),address(this)) (#472-475)
Event emitted after the call(s):
- OwnershipTransferred(_owner,newOwner) (#364)
- _transferOwnership(treasuryReceiver) (#496)
- Transfer(address(0x0),treasuryReceiver,_totalSupply) (#497)
Reentrancy in INSTANT.rebase() (#500-531):
External calls:
- pairContract.sync() (#528)
Event emitted after the call(s):
- LogRebase(epoch,_totalSupply) (#530)
Apply the check-effects-interactions pattern.
Additional information: link
INSTANT.rebase() (#500-531) uses timestamp for comparisons
Dangerous comparisons:
- deltaTimeFromInit < (31536000) (#509)
- deltaTimeFromInit >= (31536000) (#511)
- deltaTimeFromInit >= ((15 * 31536000) / 10) (#513)
- deltaTimeFromInit >= (7 * 31536000) (#515)
- i < times (#519)
INSTANT.shouldRebase() (#749-756) uses timestamp for comparisons
Dangerous comparisons:
- _autoRebase && (_totalSupply < MAX_SUPPLY) && msg.sender != pair && ! inSwap && block.timestamp >= (_lastRebasedTime + 900) (#750-755)
INSTANT.shouldAddLiquidity() (#758-764) uses timestamp for comparisons
Dangerous comparisons:
- _autoAddLiquidity && ! inSwap && msg.sender != pair && block.timestamp >= (_lastAddLiquidityTime + 172800) (#759-763)
Avoid relying on block.timestamp.
Additional information: link
INSTANT.isContract(address) (#910-914) uses assembly
- INLINE ASM (#912)
Do not use evm assembly.
Additional information: link
SafeMath.mod(uint256,uint256) (#92-95) is never used and should be removed
SafeMathInt.abs(int256) (#37-40) is never used and should be removed
SafeMathInt.add(int256,int256) (#31-35) is never used and should be removed
SafeMathInt.div(int256,int256) (#19-23) is never used and should be removed
SafeMathInt.mul(int256,int256) (#11-17) is never used and should be removed
SafeMathInt.sub(int256,int256) (#25-29) is never used and should be removed
Remove unused functions.
Additional information: link
INSTANT.totalFee (#428-431) is set pre-construction with a non-constant function or state variable:
- liquidityFee.add(treasuryFee).add(instantjackpotInsuranceFundFee).add(firePitFee)
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 (#5) allows old versions
solc-0.7.4 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
Low level call in INSTANT.swapBack() (#683-721):
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#709-714)
- (success,None) = address(instantjackpotInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(instantjackpotInsuranceFundFee).div(treasuryFee.add(instantjackpotInsuranceFundFee))}() (#715-720)
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() (#142) is not in mixedCase
Function IPancakeSwapPair.PERMIT_TYPEHASH() (#143) is not in mixedCase
Function IPancakeSwapPair.MINIMUM_LIQUIDITY() (#160) is not in mixedCase
Function IPancakeSwapRouter.WETH() (#180) is not in mixedCase
Parameter INSTANT.setAutoRebase(bool)._flag (#772) is not in mixedCase
Parameter INSTANT.setAutoAddLiquidity(bool)._flag (#781) is not in mixedCase
Parameter INSTANT.checkFeeExempt(address)._addr (#844) is not in mixedCase
Parameter INSTANT.setFeeReceivers(address,address,address,address)._autoLiquidityReceiver (#864) is not in mixedCase
Parameter INSTANT.setFeeReceivers(address,address,address,address)._treasuryReceiver (#865) is not in mixedCase
Parameter INSTANT.setFeeReceivers(address,address,address,address)._instantjackpotInsuranceFundReceiver (#866) is not in mixedCase
Parameter INSTANT.setFeeReceivers(address,address,address,address)._firePit (#867) is not in mixedCase
Parameter INSTANT.setWhitelist(address)._addr (#885) is not in mixedCase
Parameter INSTANT.setBotBlacklist(address,bool)._botAddress (#889) is not in mixedCase
Parameter INSTANT.setBotBlacklist(address,bool)._flag (#889) is not in mixedCase
Parameter INSTANT.setPairAddress(address)._pairAddress (#894) is not in mixedCase
Parameter INSTANT.setLP(address)._address (#898) is not in mixedCase
Variable INSTANT._name (#404) is not in mixedCase
Variable INSTANT._symbol (#405) is not in mixedCase
Variable INSTANT._decimals (#406) is not in mixedCase
Variable INSTANT._isFeeExempt (#409) is not in mixedCase
Variable INSTANT.DEAD (#434) is not in mixedCase
Variable INSTANT.ZERO (#435) is not in mixedCase
Variable INSTANT._autoRebase (#457) is not in mixedCase
Variable INSTANT._autoAddLiquidity (#458) is not in mixedCase
Variable INSTANT._initRebaseStartTime (#459) is not in mixedCase
Variable INSTANT._lastRebasedTime (#460) is not in mixedCase
Variable INSTANT._lastAddLiquidityTime (#461) is not in mixedCase
Variable INSTANT._totalSupply (#462) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeSwapRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#185) is too similar to IPancakeSwapRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#186)
Prevent variables from having similar names.
Additional information: link
INSTANT.slitherConstructorVariables() (#397-922) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#434)
INSTANT.slitherConstructorVariables() (#397-922) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#435)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#9) is never used in SafeMathInt (#7-41)
Remove unused state variables.
Additional information: link
INSTANT.DEAD (#434) should be constant
INSTANT.ZERO (#435) should be constant
INSTANT._decimals (#406) should be constant
INSTANT._name (#404) should be constant
INSTANT._symbol (#405) should be constant
INSTANT.feeDenominator (#432) should be constant
INSTANT.firePitFee (#427) should be constant
INSTANT.instantjackpotInsuranceFundFee (#425) should be constant
INSTANT.liquidityFee (#423) should be constant
INSTANT.sellFee (#426) should be constant
INSTANT.swapEnabled (#442) should be constant
INSTANT.treasuryFee (#424) should be constant
Add the constant attributes to state variables that never change.
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
Unable to find code repository for the project
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
Young tokens have high risks of price dump / death
Telegram account link seems to be invalid
Unable to find Youtube account
Unable to find Discord account