Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
FutureFinance.collectTheStatistics(uint256,uint256,address) (#665-682) uses a dangerous strict equality:
- lastBuyOrSellTime == 0 (#667)
FutureFinance.collectTheStatistics(uint256,uint256,address) (#665-682) uses a dangerous strict equality:
- crashTime == standartValuation (#671)
FutureFinance.collectTheStatistics(uint256,uint256,address) (#665-682) uses a dangerous strict equality:
- crashTime == 0 (#673)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Contract ownership is not renounced (belongs to a wallet)
FutureFinance.excludeFromAll(address) (#788-800) ignores return value by tokenHoldersEnumSet.remove(account) (#799)
FutureFinance._tokenTransfer(address,address,uint256,bool) (#940-1004) ignores return value by tokenHoldersEnumSet.add(recipient) (#999)
FutureFinance._tokenTransfer(address,address,uint256,bool) (#940-1004) ignores return value by tokenHoldersEnumSet.remove(sender) (#1002)
FutureFinance.addLiquidity(uint256,uint256) (#1007-1018) ignores return value by PancakeSwapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1009-1016)
Ensure that all the return values of the function calls are used.
Additional information: link
FutureFinance.allowance(address,address).owner (#733) shadows:
- Ownable.owner() (#244-246) (function)
FutureFinance._approve(address,address,uint256).owner (#921) shadows:
- Ownable.owner() (#244-246) (function)
Rename the local variables that shadow another component.
Additional information: link
FutureFinance.setValuation(uint256) (#684-686) should emit an event for:
- standartValuation = newValuation (#685)
FutureFinance.setTheRewardTime(uint256) (#688-690) should emit an event for:
- theRewardTime = theRedistribution (#689)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in FutureFinance.constructor() (#617-641):
External calls:
- pancakeswapV2Pair = IUniswapV2Factory(_PancakeSwapV2Router.factory()).createPair(address(this),_PancakeSwapV2Router.WETH()) (#621-622)
State variables written after the call(s):
- PancakeSwapV2Router = _PancakeSwapV2Router (#624)
- _excluded.push(address(this)) (#635)
- _excluded.push(pancakeswapV2Pair) (#638)
- _isExcluded[address(this)] = true (#634)
- _isExcluded[pancakeswapV2Pair] = true (#637)
- _isExcludedFromFee[owner()] = true (#626)
- _isExcludedFromFee[address(this)] = true (#627)
- _isExcludedFromFee[address(_PancakeSwapV2RouterUniswap)] = true (#628)
- _isExcludedFromFee[address(0xe853889c8c7a03C1f7935B87355Dc58eCd3d92B0)] = true (#629)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in FutureFinance.addLiquidity(uint256,uint256) (#1007-1018):
External calls:
- PancakeSwapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1009-1016)
Event emitted after the call(s):
- LiquidityAdded(tokenAmount,bnbAmount) (#1017)
Reentrancy in FutureFinance.constructor() (#617-641):
External calls:
- pancakeswapV2Pair = IUniswapV2Factory(_PancakeSwapV2Router.factory()).createPair(address(this),_PancakeSwapV2Router.WETH()) (#621-622)
Event emitted after the call(s):
- Transfer(address(0),owner(),_tTotal) (#640)
Apply the check-effects-interactions pattern.
Additional information: link
FutureFinance.collectTheStatistics(uint256,uint256,address) (#665-682) uses timestamp for comparisons
Dangerous comparisons:
- lastBuyOrSellTime == 0 (#667)
- crashTime == standartValuation (#671)
- crashTime == 0 (#673)
- crashTime <= theData (#678)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#133-139) uses assembly
- INLINE ASM (#135-137)
Address._verifyCallResult(bool,bytes,string) (#211-230) uses assembly
- INLINE ASM (#222-225)
EnumerableSet.values(EnumerableSet.AddressSet) (#497-506) uses assembly
- INLINE ASM (#501-503)
Do not use evm assembly.
Additional information: link
FutureFinance.includeInReward(address) (#802-813) has costly operations inside a loop:
- _excluded.pop() (#809)
Use a local variable to hold the loop computation result.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#211-230) is never used and should be removed
Address.functionCall(address,bytes) (#148-150) is never used and should be removed
Address.functionCall(address,bytes,string) (#152-158) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#160-166) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#168-179) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#196-198) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#200-209) is never used and should be removed
Address.functionStaticCall(address,bytes) (#181-183) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#185-194) is never used and should be removed
Address.isContract(address) (#133-139) is never used and should be removed
Address.sendValue(address,uint256) (#141-146) is never used and should be removed
Context._msgData() (#125-128) is never used and should be removed
EnumerableSet._at(EnumerableSet.Set,uint256) (#465-467) is never used and should be removed
EnumerableSet._length(EnumerableSet.Set) (#461-463) is never used and should be removed
EnumerableSet._values(EnumerableSet.Set) (#469-471) is never used and should be removed
EnumerableSet.at(EnumerableSet.AddressSet,uint256) (#493-495) is never used and should be removed
EnumerableSet.contains(EnumerableSet.AddressSet,address) (#485-487) is never used and should be removed
EnumerableSet.length(EnumerableSet.AddressSet) (#489-491) is never used and should be removed
EnumerableSet.values(EnumerableSet.AddressSet) (#497-506) is never used and should be removed
FutureFinance.addLiquidity(uint256,uint256) (#1007-1018) is never used and should be removed
SafeMath.add(uint256,uint256) (#66-68) is never used and should be removed
SafeMath.div(uint256,uint256) (#78-80) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#97-106) is never used and should be removed
SafeMath.mod(uint256,uint256) (#82-84) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#108-117) is never used and should be removed
SafeMath.mul(uint256,uint256) (#74-76) is never used and should be removed
SafeMath.sub(uint256,uint256) (#70-72) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#28-34) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#52-57) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#59-64) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#43-50) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#36-41) is never used and should be removed
Remove unused functions.
Additional information: link
FutureFinance._rTotal (#535) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
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.8.0 (#1) 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) (#141-146):
- (success) = recipient.call{value: amount}() (#144)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#168-179):
- (success,returndata) = target.call{value: value}(data) (#177)
Low level call in Address.functionStaticCall(address,bytes,string) (#185-194):
- (success,returndata) = target.staticcall(data) (#192)
Low level call in Address.functionDelegateCall(address,bytes,string) (#200-209):
- (success,returndata) = target.delegatecall(data) (#207)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Router01.WETH() (#267) is not in mixedCase
Struct FutureFinance.feeRatesStruct (#555-560) is not in CapWords
Struct FutureFinance.balances (#562-565) is not in CapWords
Struct FutureFinance.valuesFromGetValues (#585-597) is not in CapWords
Function FutureFinance.TrandingOn(bool) (#718-720) is not in mixedCase
Parameter FutureFinance.TrandingOn(bool)._enable (#718) is not in mixedCase
Parameter FutureFinance.settransform(bool)._enable (#729) is not in mixedCase
Parameter FutureFinance.setSwapAndLiquifyEnabled(bool)._enabled (#827) is not in mixedCase
Constant FutureFinance._decimals (#525) is not in UPPER_CASE_WITH_UNDERSCORES
Constant FutureFinance._name (#528) is not in UPPER_CASE_WITH_UNDERSCORES
Constant FutureFinance._symbol (#529) is not in UPPER_CASE_WITH_UNDERSCORES
Variable FutureFinance._PancakeSwapV1RouterUniswap (#531) is not in mixedCase
Variable FutureFinance._PancakeSwapV2RouterUniswap (#532) is not in mixedCase
Variable FutureFinance._lastWallet (#539) is not in mixedCase
Variable FutureFinance.PancakeSwapV2Router (#599) is not in mixedCase
Variable FutureFinance.Trading (#603) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#126)" inContext (#120-129)
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 (#272) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#273)
Variable FutureFinance._PancakeSwapV1RouterUniswap (#531) is too similar to FutureFinance._PancakeSwapV2RouterUniswap (#532)
Prevent variables from having similar names.
Additional information: link
FutureFinance.slitherConstructorVariables() (#509-1026) uses literals with too many digits:
- _tTotal = 1000000000 * 10 ** _decimals (#534)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
FutureFinance._PancakeSwapV1RouterUniswap (#531) should be constant
FutureFinance._PancakeSwapV2RouterUniswap (#532) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#253-256)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#258-262)
getFromLastSell(address) should be declared external:
- FutureFinance.getFromLastSell(address) (#647-649)
setBuyRates(uint256,uint256,uint256,uint256) should be declared external:
- FutureFinance.setBuyRates(uint256,uint256,uint256,uint256) (#651-656)
setSellRates(uint256,uint256,uint256,uint256) should be declared external:
- FutureFinance.setSellRates(uint256,uint256,uint256,uint256) (#658-663)
setValuation(uint256) should be declared external:
- FutureFinance.setValuation(uint256) (#684-686)
setTheRewardTime(uint256) should be declared external:
- FutureFinance.setTheRewardTime(uint256) (#688-690)
name() should be declared external:
- FutureFinance.name() (#692-694)
symbol() should be declared external:
- FutureFinance.symbol() (#696-698)
decimals() should be declared external:
- FutureFinance.decimals() (#700-702)
totalSupply() should be declared external:
- FutureFinance.totalSupply() (#704-706)
transfer(address,uint256) should be declared external:
- FutureFinance.transfer(address,uint256) (#713-716)
TrandingOn(bool) should be declared external:
- FutureFinance.TrandingOn(bool) (#718-720)
setRewardPool(address[]) should be declared external:
- FutureFinance.setRewardPool(address[]) (#723-727)
settransform(bool) should be declared external:
- FutureFinance.settransform(bool) (#729-731)
allowance(address,address) should be declared external:
- FutureFinance.allowance(address,address) (#733-735)
approve(address,uint256) should be declared external:
- FutureFinance.approve(address,uint256) (#737-740)
transferFrom(address,address,uint256) should be declared external:
- FutureFinance.transferFrom(address,address,uint256) (#742-746)
increaseAllowance(address,uint256) should be declared external:
- FutureFinance.increaseAllowance(address,uint256) (#748-751)
decreaseAllowance(address,uint256) should be declared external:
- FutureFinance.decreaseAllowance(address,uint256) (#753-756)
isExcludedFromReward(address) should be declared external:
- FutureFinance.isExcludedFromReward(address) (#758-760)
reflectionFromToken(uint256,bool) should be declared external:
- FutureFinance.reflectionFromToken(uint256,bool) (#762-771)
excludeFromReward(address) should be declared external:
- FutureFinance.excludeFromReward(address) (#779-786)
excludeFromAll(address) should be declared external:
- FutureFinance.excludeFromAll(address) (#788-800)
excludeFromFee(address) should be declared external:
- FutureFinance.excludeFromFee(address) (#815-817)
includeInFee(address) should be declared external:
- FutureFinance.includeInFee(address) (#819-821)
isExcludedFromFee(address) should be declared external:
- FutureFinance.isExcludedFromFee(address) (#823-825)
setSwapAndLiquifyEnabled(bool) should be declared external:
- FutureFinance.setSwapAndLiquifyEnabled(bool) (#827-830)
withdraw() should be declared external:
- FutureFinance.withdraw() (#1020-1023)
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