The Highest Paying Auto-Staking & Auto-Compounding Protocol
Highest Sustainable Fixed APY in Crypto – 392,637%
Interest Paid Every 15 Minutes: 96 Times Daily
Automatic Staking and Compounding in Your Wallet
Low Risk with Safe Insurance Fund (SIF)
SafeAPY.swapBack() (#693-730) sends eth to arbitrary user
Dangerous calls:
- (success) = address(treasuryFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#718-723)
- (success,None) = address(safeInsuranceFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safeInsuranceFundFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#724-729)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in SafeAPY._transferFrom(address,address,uint256) (#580-618):
External calls:
- rebase() (#591)
- pairContract.sync() (#540)
- addLiquidity() (#595)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#670-676)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityFund,block.timestamp) (#681-688)
- swapBack() (#599)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#706-712)
- (success) = address(treasuryFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#718-723)
- (success,None) = address(safeInsuranceFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safeInsuranceFundFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#724-729)
External calls sending eth:
- addLiquidity() (#595)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityFund,block.timestamp) (#681-688)
- swapBack() (#599)
- (success) = address(treasuryFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#718-723)
- (success,None) = address(safeInsuranceFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safeInsuranceFundFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#724-729)
State variables written after the call(s):
- _gonBalances[sender] = _gonBalances[sender].sub(gonAmount) (#603)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonAmountReceived) (#607-609)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#604-606)
- _gonBalances[supplyControl] = _gonBalances[supplyControl].add(gonAmount.div(feeDenominator).mul(supplyControlFee)) (#635-637)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(gonAmount.div(feeDenominator).mul(_treasuryFee.add(safeInsuranceFundFee))) (#638-640)
- _gonBalances[autoLiquidityFund] = _gonBalances[autoLiquidityFund].add(gonAmount.div(feeDenominator).mul(liquidityFee)) (#641-643)
- swapBack() (#599)
- inSwap = true (#453)
- inSwap = false (#455)
Apply the check-effects-interactions pattern.
Additional information: link
SafeAPY._name (#410) shadows:
- ERC20Detailed._name (#376)
SafeAPY._symbol (#411) shadows:
- ERC20Detailed._symbol (#377)
SafeAPY._decimals (#412) shadows:
- ERC20Detailed._decimals (#378)
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.
SafeAPY.swapBack().success (#718) is written in both
(success) = address(treasuryFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#718-723)
(success,None) = address(safeInsuranceFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safeInsuranceFundFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#724-729)
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)
Low level call in SafeAPY.swapBack() (#693-730):
- (success) = address(treasuryFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#718-723)
- (success,None) = address(safeInsuranceFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safeInsuranceFundFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#724-729)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
SafeMath.mod(uint256,uint256) (#98-101) is never used and should be removed
SafeMathInt.abs(int256) (#43-46) is never used and should be removed
SafeMathInt.add(int256,int256) (#37-41) is never used and should be removed
SafeMathInt.div(int256,int256) (#25-29) is never used and should be removed
SafeMathInt.mul(int256,int256) (#17-23) is never used and should be removed
SafeMathInt.sub(int256,int256) (#31-35) is never used and should be removed
Remove unused functions.
Additional information: link
SafeAPY.totalFee (#434-437) is set pre-construction with a non-constant function or state variable:
- liquidityFee.add(treasuryFee).add(safeInsuranceFundFee).add(supplyControlFee)
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 (#11) 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
SafeAPY.rebase() (#509-543) performs a multiplication on the result of a division:
-times = deltaTime.div(900) (#514)
-epoch = times.mul(15) (#515)
SafeAPY.rebase() (#509-543) performs a multiplication on the result of a division:
-times = deltaTime.div(900) (#514)
-_lastRebasedTime = _lastRebasedTime.add(times.mul(900)) (#538)
SafeAPY.takeFee(address,address,uint256) (#620-647) performs a multiplication on the result of a division:
-feeAmount = gonAmount.div(feeDenominator).mul(_totalFee) (#633)
SafeAPY.takeFee(address,address,uint256) (#620-647) performs a multiplication on the result of a division:
-_gonBalances[supplyControl] = _gonBalances[supplyControl].add(gonAmount.div(feeDenominator).mul(supplyControlFee)) (#635-637)
SafeAPY.takeFee(address,address,uint256) (#620-647) performs a multiplication on the result of a division:
-_gonBalances[address(this)] = _gonBalances[address(this)].add(gonAmount.div(feeDenominator).mul(_treasuryFee.add(safeInsuranceFundFee))) (#638-640)
SafeAPY.takeFee(address,address,uint256) (#620-647) performs a multiplication on the result of a division:
-_gonBalances[autoLiquidityFund] = _gonBalances[autoLiquidityFund].add(gonAmount.div(feeDenominator).mul(liquidityFee)) (#641-643)
SafeAPY.getLiquidityBacking(uint256) (#883-891) performs a multiplication on the result of a division:
-liquidityBalance = _gonBalances[pair].div(_gonsPerFragment) (#888)
-accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply()) (#889-890)
Consider ordering multiplication before division.
Additional information: link
SafeAPY.addLiquidity() (#649-691) ignores return value by router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityFund,block.timestamp) (#681-688)
Ensure that all the return values of the function calls are used.
Additional information: link
SafeAPY.setFeeReceivers(address,address,address,address)._autoLiquidityFund (#872) lacks a zero-check on :
- autoLiquidityFund = _autoLiquidityFund (#877)
SafeAPY.setFeeReceivers(address,address,address,address)._treasuryFund (#873) lacks a zero-check on :
- treasuryFund = _treasuryFund (#878)
SafeAPY.setFeeReceivers(address,address,address,address)._safeInsuranceFund (#874) lacks a zero-check on :
- safeInsuranceFund = _safeInsuranceFund (#879)
SafeAPY.setFeeReceivers(address,address,address,address)._supplyControl (#875) lacks a zero-check on :
- supplyControl = _supplyControl (#880)
SafeAPY.setPairAddress(address)._pairAddress (#902) lacks a zero-check on :
- pairAddress = _pairAddress (#903)
Check that the address is not zero.
Additional information: link
Reentrancy in SafeAPY.addLiquidity() (#649-691):
External calls:
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#670-676)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityFund,block.timestamp) (#681-688)
External calls sending eth:
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityFund,block.timestamp) (#681-688)
State variables written after the call(s):
- _lastAddLiquidityTime = block.timestamp (#690)
Reentrancy in SafeAPY.constructor() (#477-507):
External calls:
- pair = IPancakeSwapFactory(router.factory()).createPair(router.WETH(),address(this)) (#479-482)
State variables written after the call(s):
- INDEX = gonsForBalance(100000) (#503)
- _allowedFragments[address(this)][address(router)] = uint256(- 1) (#489)
- _autoAddLiquidity = true (#499)
- _autoRebase = true (#498)
- _gonBalances[treasuryFund] = TOTAL_GONS (#494)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (#495)
- _initRebaseStartTime = block.timestamp (#496)
- _isFeeExempt[treasuryFund] = true (#500)
- _isFeeExempt[address(this)] = true (#501)
- _lastRebasedTime = block.timestamp (#497)
- _transferOwnership(treasuryFund) (#505)
- _owner = newOwner (#371)
- _totalSupply = INITIAL_FRAGMENTS_SUPPLY (#493)
- autoLiquidityFund = 0x36ea5535e4d8a870e9c8526d1DE3EC196e4380e4 (#484)
- pairAddress = pair (#490)
- pairContract = IPancakeSwapPair(pair) (#491)
- safeInsuranceFund = 0x0e48cAe51e82271059d00cB416881ec9878eE9C3 (#486)
- supplyControl = 0x6670701B569d276bacDEA3369EE5B4DCdd914E7f (#487)
- treasuryFund = 0xF7Bdc7666eA80f843973d856df081A70551A643b (#485)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in SafeAPY._transferFrom(address,address,uint256) (#580-618):
External calls:
- rebase() (#591)
- pairContract.sync() (#540)
- addLiquidity() (#595)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#670-676)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityFund,block.timestamp) (#681-688)
- swapBack() (#599)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#706-712)
- (success) = address(treasuryFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#718-723)
- (success,None) = address(safeInsuranceFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safeInsuranceFundFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#724-729)
External calls sending eth:
- addLiquidity() (#595)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityFund,block.timestamp) (#681-688)
- swapBack() (#599)
- (success) = address(treasuryFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#718-723)
- (success,None) = address(safeInsuranceFund).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safeInsuranceFundFee).div(treasuryFee.add(safeInsuranceFundFee))}() (#724-729)
Event emitted after the call(s):
- Transfer(sender,address(this),feeAmount.div(_gonsPerFragment)) (#645)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#604-606)
- Transfer(sender,recipient,gonAmountReceived.div(_gonsPerFragment)) (#612-616)
Reentrancy in SafeAPY.constructor() (#477-507):
External calls:
- pair = IPancakeSwapFactory(router.factory()).createPair(router.WETH(),address(this)) (#479-482)
Event emitted after the call(s):
- OwnershipTransferred(_owner,newOwner) (#370)
- _transferOwnership(treasuryFund) (#505)
- Transfer(address(0x0),treasuryFund,_totalSupply) (#506)
Reentrancy in SafeAPY.rebase() (#509-543):
External calls:
- pairContract.sync() (#540)
Event emitted after the call(s):
- LogRebase(epoch,_totalSupply) (#542)
Apply the check-effects-interactions pattern.
Additional information: link
SafeAPY.rebase() (#509-543) uses timestamp for comparisons
Dangerous comparisons:
- deltaTimeFromInit >= (8 * 31536000) (#517)
- deltaTimeFromInit >= (5 * 31536000) (#519)
- deltaTimeFromInit >= (3 * 31536000) (#521)
- deltaTimeFromInit >= (2 * 31536000) (#523)
- deltaTimeFromInit >= (31536000) (#525)
- i < times (#531)
SafeAPY.shouldRebase() (#757-764) uses timestamp for comparisons
Dangerous comparisons:
- _autoRebase && (_totalSupply < MAX_SUPPLY) && msg.sender != pair && ! inSwap && block.timestamp >= (_lastRebasedTime + 900) (#758-763)
SafeAPY.shouldAddLiquidity() (#766-772) uses timestamp for comparisons
Dangerous comparisons:
- _autoAddLiquidity && ! inSwap && msg.sender != pair && block.timestamp >= (_lastAddLiquidityTime + 86400) (#767-771)
Avoid relying on block.timestamp.
Additional information: link
SafeAPY.isContract(address) (#918-922) uses assembly
- INLINE ASM (#920)
Do not use evm assembly.
Additional information: link
Function IPancakeSwapPair.DOMAIN_SEPARATOR() (#148) is not in mixedCase
Function IPancakeSwapPair.PERMIT_TYPEHASH() (#149) is not in mixedCase
Function IPancakeSwapPair.MINIMUM_LIQUIDITY() (#166) is not in mixedCase
Function IPancakeSwapRouter.WETH() (#186) is not in mixedCase
Parameter SafeAPY.setAutoRebase(bool)._flag (#780) is not in mixedCase
Parameter SafeAPY.setAutoAddLiquidity(bool)._flag (#789) is not in mixedCase
Parameter SafeAPY.checkFeeExempt(address)._addr (#852) is not in mixedCase
Parameter SafeAPY.setFeeReceivers(address,address,address,address)._autoLiquidityFund (#872) is not in mixedCase
Parameter SafeAPY.setFeeReceivers(address,address,address,address)._treasuryFund (#873) is not in mixedCase
Parameter SafeAPY.setFeeReceivers(address,address,address,address)._safeInsuranceFund (#874) is not in mixedCase
Parameter SafeAPY.setFeeReceivers(address,address,address,address)._supplyControl (#875) is not in mixedCase
Parameter SafeAPY.setWhitelist(address)._addr (#893) is not in mixedCase
Parameter SafeAPY.setBotBlacklist(address,bool)._botAddress (#897) is not in mixedCase
Parameter SafeAPY.setBotBlacklist(address,bool)._flag (#897) is not in mixedCase
Parameter SafeAPY.setPairAddress(address)._pairAddress (#902) is not in mixedCase
Parameter SafeAPY.setLP(address)._address (#906) is not in mixedCase
Variable SafeAPY._name (#410) is not in mixedCase
Variable SafeAPY._symbol (#411) is not in mixedCase
Variable SafeAPY._decimals (#412) is not in mixedCase
Variable SafeAPY._isFeeExempt (#415) is not in mixedCase
Variable SafeAPY.INDEX (#463) is not in mixedCase
Variable SafeAPY._autoRebase (#465) is not in mixedCase
Variable SafeAPY._autoAddLiquidity (#466) is not in mixedCase
Variable SafeAPY._initRebaseStartTime (#467) is not in mixedCase
Variable SafeAPY._lastRebasedTime (#468) is not in mixedCase
Variable SafeAPY._lastAddLiquidityTime (#469) is not in mixedCase
Variable SafeAPY._totalSupply (#470) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeSwapRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#191) is too similar to IPancakeSwapRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#192)
Prevent variables from having similar names.
Additional information: link
SafeAPY.constructor() (#477-507) uses literals with too many digits:
- INDEX = gonsForBalance(100000) (#503)
SafeAPY.slitherConstructorConstantVariables() (#403-938) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#440)
SafeAPY.slitherConstructorConstantVariables() (#403-938) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#441)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#15) is never used in SafeMathInt (#13-47)
Remove unused state variables.
Additional information: link
SafeAPY._decimals (#412) should be constant
SafeAPY._name (#410) should be constant
SafeAPY._symbol (#411) should be constant
SafeAPY.feeDenominator (#438) should be constant
SafeAPY.liquidityFee (#429) should be constant
SafeAPY.safeInsuranceFundFee (#431) should be constant
SafeAPY.sellFee (#432) should be constant
SafeAPY.supplyControlFee (#433) should be constant
SafeAPY.swapEnabled (#448) should be constant
SafeAPY.treasuryFee (#430) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
owner() should be declared external:
- Ownable.owner() (#346-348)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#359-362)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#364-366)
name() should be declared external:
- ERC20Detailed.name() (#390-392)
symbol() should be declared external:
- ERC20Detailed.symbol() (#394-396)
decimals() should be declared external:
- ERC20Detailed.decimals() (#398-400)
index() should be declared external:
- SafeAPY.index() (#932-934)
Use the external attribute for functions never called from the contract.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
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 code repository for the project
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
Telegram account has relatively few subscribers
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Twitter account has few posts