Seed Token Logo

Seed Token

About Seed

Listings

Not Found
Token 20 days
white paper

📢 Seed protocol is DeFi3.0 first platform with the Highest Paying Auto-Staking & Auto-Compounding Protocol.
✅ Highest Fixed APY in Crypto – 1,284,609.98%🚀
✅ Low Risk with Seed Insurance Fund (SIF) 📈
✅ Automatic Dividends USDT To Wallet 📈
✅ Interest Paid Every 3 Seconds: 👉 28,800 Times Daily!
Automatic Staking and Compounding in Your Wallet!

Laser Scorebeta Last Audit: 12 May 2022

report
Code:

Third Party Audit: untrusted audit

Seed.addLiquidity() (#1556-1596) sends eth to arbitrary user
Dangerous calls:
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
Seed.swapBack() (#1629-1667) sends eth to arbitrary user
Dangerous calls:
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
Ensure that an arbitrary user cannot withdraw unauthorized funds.

Additional information: link

Reentrancy in Seed._transferFrom(address,address,uint256) (#1450-1495):
External calls:
- rebase() (#1460)
- pairContract.sync() (#1550)
- addLiquidity() (#1464)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1576-1582)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1643-1649)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
External calls sending eth:
- addLiquidity() (#1464)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
State variables written after the call(s):
- swapBack() (#1468)
- inSwap = true (#1343)
- inSwap = false (#1345)
Reentrancy in Seed._transferFrom(address,address,uint256) (#1450-1495):
External calls:
- rebase() (#1460)
- pairContract.sync() (#1550)
- addLiquidity() (#1464)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1576-1582)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1643-1649)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
- swapUSDT() (#1472)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1612-1618)
- success = usdt.transfer(address(dividendTracker),dividends) (#1621)
- dividendTracker.distributeUSDTDividends(dividends) (#1624)
External calls sending eth:
- addLiquidity() (#1464)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
State variables written after the call(s):
- swapUSDT() (#1472)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(_gonBalances[address(dividendTracker)]) (#1601-1603)
- _gonBalances[address(dividendTracker)] = 0 (#1604)
- _gonBalances[sender] = _gonBalances[sender].sub(gonAmount) (#1476)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonAmountReceived) (#1478)
- gonAmountReceived = takeFee(sender,gonAmount) (#1477)
- _gonBalances[firePit] = _gonBalances[firePit].add(fee) (#1504)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(fee) (#1508)
- _gonBalances[autoLiquidityReceiver] = _gonBalances[autoLiquidityReceiver].add(fee) (#1512)
- _gonBalances[address(dividendTracker)] = _gonBalances[address(dividendTracker)].add(fee) (#1516)
- swapUSDT() (#1472)
- inSwap = true (#1343)
- inSwap = false (#1345)
Apply the check-effects-interactions pattern.

Additional information: link

USDTDividendTracker.updateClaimWait(uint256) (#1133-1138) contains a tautology or contradiction:
- require(bool,string)(newClaimWait >= 0 && newClaimWait <= 86400,Dividend_Tracker: claimWait must be updated to between 0 and 24 hours) (#1134)
Fix the incorrect comparison by changing the value type or the comparison.

Additional information: link

Seed.swapBack().success (#1655) is written in both
(success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
(success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
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)

Seed._transferFrom(address,address,uint256) (#1450-1495) ignores return value by dividendTracker.process(gasForProcessing) (#1487-1492)
Seed.addLiquidity() (#1556-1596) ignores return value by router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
Seed.claim() (#1978-1980) ignores return value by dividendTracker.processAccount(msg.sender,false) (#1979)
Ensure that all the return values of the function calls are used.

Additional information: link

Seed.takeFee(address,uint256) (#1497-1520) performs a multiplication on the result of a division:
-feeAmount = gonAmount.div(feeDenominator).mul(totalFee) (#1501)
Seed.rebase() (#1522-1554) performs a multiplication on the result of a division:
-tmp = tmp.mul(deno.add(rebaseRate)).div(deno) (#1528)
-tmp = tmp.mul(deno.add(minuteRebaseRate)).div(deno) (#1533)
Seed.rebase() (#1522-1554) performs a multiplication on the result of a division:
-tmp = tmp.mul(deno.add(minuteRebaseRate)).div(deno) (#1533)
-tmp = tmp.mul(deno.add(hourRebaseRate)).div(deno) (#1538)
Seed.rebase() (#1522-1554) performs a multiplication on the result of a division:
-tmp = tmp.mul(deno.add(hourRebaseRate)).div(deno) (#1538)
-tmp = tmp.mul(deno.add(dayRebaseRate)).div(deno) (#1543)
Seed.getSeedToUSD() (#1875-1880) performs a multiplication on the result of a division:
-bnbPrice = usdt.balanceOf(address(bnbPair)).mul(10 ** 18).div(IERC20(router.WETH()).balanceOf(address(bnbPair))) (#1877)
-currentPrice = getSeedToBNB().mul(bnbPrice).div(10 ** 18) (#1878)
Seed.getLiquidityBacking(uint256) (#1889-1896) performs a multiplication on the result of a division:
-liquidityBalance = _gonBalances[address(pairContract)].div(_gonsPerFragment) (#1894)
-accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply()) (#1895)
Consider ordering multiplication before division.

Additional information: link

Reentrancy in DividendPayingToken._withdrawDividendOfUser(address) (#991-1007):
External calls:
- success = IERC20(usdt).transfer(user,_withdrawableDividend) (#996)
State variables written after the call(s):
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#999)
Apply the check-effects-interactions pattern.

Additional information: link

Seed._transferFrom(address,address,uint256).iterations (#1487) is a local variable never initialized
Seed._transferFrom(address,address,uint256).lastProcessedIndex (#1487) is a local variable never initialized
Seed._transferFrom(address,address,uint256).claims (#1487) 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

DividendPayingToken.constructor(string,string,address)._name (#962) shadows:
- ERC20._name (#586) (state variable)
DividendPayingToken.constructor(string,string,address)._symbol (#962) shadows:
- ERC20._symbol (#587) (state variable)
DividendPayingToken.dividendOf(address)._owner (#1012) shadows:
- Ownable._owner (#535) (state variable)
DividendPayingToken.withdrawableDividendOf(address)._owner (#1019) shadows:
- Ownable._owner (#535) (state variable)
DividendPayingToken.withdrawnDividendOf(address)._owner (#1026) shadows:
- Ownable._owner (#535) (state variable)
DividendPayingToken.accumulativeDividendOf(address)._owner (#1036) shadows:
- Ownable._owner (#535) (state variable)
Rename the local variables that shadow another component.

Additional information: link

Seed.setFee(uint256,uint256,uint256,uint256,uint256) (#1803-1816) should emit an event for:
- liquidityFee = _liquidityFee (#1810)
- treasuryFee = _treasuryFee (#1811)
- safuuInsuranceFundFee = _safuuInsuranceFundFee (#1812)
- usdtFee = _usdtFee (#1813)
- firePitFee = _firePitFee (#1814)
- totalFee = liquidityFee.add(treasuryFee).add(safuuInsuranceFundFee).add(usdtFee).add(firePitFee) (#1815)
Seed.setMinDividendTime(uint256) (#1828-1830) should emit an event for:
- minDividendTime = _minDividendTime (#1829)
Emit an event for critical parameter changes.

Additional information: link

DividendPayingToken.constructor(string,string,address)._usdt (#962) lacks a zero-check on :
- usdt = _usdt (#963)
Seed.constructor(address,IERC20,address,address,address)._autoLiquidityReceiver (#1383) lacks a zero-check on :
- autoLiquidityReceiver = _autoLiquidityReceiver (#1390)
Seed.constructor(address,IERC20,address,address,address)._treasuryReceiver (#1383) lacks a zero-check on :
- treasuryReceiver = _treasuryReceiver (#1391)
Seed.constructor(address,IERC20,address,address,address)._safuuInsuranceFundReceiver (#1383) lacks a zero-check on :
- safuuInsuranceFundReceiver = _safuuInsuranceFundReceiver (#1392)
Seed.setFeeReceivers(address,address,address,address)._autoLiquidityReceiver (#1792) lacks a zero-check on :
- autoLiquidityReceiver = _autoLiquidityReceiver (#1797)
Seed.setFeeReceivers(address,address,address,address)._treasuryReceiver (#1793) lacks a zero-check on :
- treasuryReceiver = _treasuryReceiver (#1798)
Seed.setFeeReceivers(address,address,address,address)._safuuInsuranceFundReceiver (#1794) lacks a zero-check on :
- safuuInsuranceFundReceiver = _safuuInsuranceFundReceiver (#1799)
Seed.setFeeReceivers(address,address,address,address)._firePit (#1795) lacks a zero-check on :
- firePit = _firePit (#1800)
Check that the address is not zero.

Additional information: link

DividendPayingToken._withdrawDividendOfUser(address) (#991-1007) has external calls inside a loop: success = IERC20(usdt).transfer(user,_withdrawableDividend) (#996)
Favor pull over push strategy for external calls.

Additional information: link

Variable 'Seed._transferFrom(address,address,uint256).iterations (#1487)' in Seed._transferFrom(address,address,uint256) (#1450-1495) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gasForProcessing,tx.origin) (#1488)
Variable 'Seed._transferFrom(address,address,uint256).lastProcessedIndex (#1487)' in Seed._transferFrom(address,address,uint256) (#1450-1495) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gasForProcessing,tx.origin) (#1488)
Variable 'Seed._transferFrom(address,address,uint256).claims (#1487)' in Seed._transferFrom(address,address,uint256) (#1450-1495) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gasForProcessing,tx.origin) (#1488)
Move all variable declarations prior to any usage of the variable, and ensure that reaching a variable declaration does not depend on some conditional if it is used unconditionally.

Additional information: link

Reentrancy in Seed._transferFrom(address,address,uint256) (#1450-1495):
External calls:
- rebase() (#1460)
- pairContract.sync() (#1550)
- addLiquidity() (#1464)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1576-1582)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1643-1649)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
- swapUSDT() (#1472)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1612-1618)
- success = usdt.transfer(address(dividendTracker),dividends) (#1621)
- dividendTracker.distributeUSDTDividends(dividends) (#1624)
- dividendTracker.setBalance(sender,balanceOf(sender)) (#1482)
- dividendTracker.setBalance(recipient,balanceOf(recipient)) (#1483)
External calls sending eth:
- addLiquidity() (#1464)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
State variables written after the call(s):
- lastDividendTime = block.timestamp (#1486)
Reentrancy in Seed.constructor(address,IERC20,address,address,address) (#1383-1413):
External calls:
- pair = IPancakeSwapFactory(router.factory()).createPair(router.WETH(),address(this)) (#1386-1389)
State variables written after the call(s):
- _allowedFragments[address(this)][address(router)] = uint256(- 1) (#1394)
- _gonBalances[msg.sender] = TOTAL_GONS (#1398)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (#1399)
- _initRebaseStartTime = block.timestamp (#1400)
- _isFeeExempt[msg.sender] = true (#1403)
- _isFeeExempt[address(this)] = true (#1404)
- _lastRebasedTime = block.number (#1401)
- _totalSupply = INITIAL_FRAGMENTS_SUPPLY (#1397)
- autoLiquidityReceiver = _autoLiquidityReceiver (#1390)
- dividendTracker = new USDTDividendTracker(address(_usdt),address(this)) (#1407)
- pairContract = IPancakeSwapPair(pair) (#1395)
- safuuInsuranceFundReceiver = _safuuInsuranceFundReceiver (#1392)
- treasuryReceiver = _treasuryReceiver (#1391)
Reentrancy in USDTDividendTracker.processAccount(address,bool) (#1288-1298):
External calls:
- amount = _withdrawDividendOfUser(account) (#1289)
- success = IERC20(usdt).transfer(user,_withdrawableDividend) (#996)
State variables written after the call(s):
- lastClaimTimes[account] = block.timestamp (#1292)
Apply the check-effects-interactions pattern.

Additional information: link

Reentrancy in Seed._transferFrom(address,address,uint256) (#1450-1495):
External calls:
- rebase() (#1460)
- pairContract.sync() (#1550)
- addLiquidity() (#1464)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1576-1582)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
External calls sending eth:
- addLiquidity() (#1464)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
Event emitted after the call(s):
- Transfer(autoLiquidityReceiver,address(this),autoLiquidityAmount) (#1565)
- addLiquidity() (#1464)
Reentrancy in Seed._transferFrom(address,address,uint256) (#1450-1495):
External calls:
- rebase() (#1460)
- pairContract.sync() (#1550)
- addLiquidity() (#1464)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1576-1582)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1643-1649)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
- swapUSDT() (#1472)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1612-1618)
- success = usdt.transfer(address(dividendTracker),dividends) (#1621)
- dividendTracker.distributeUSDTDividends(dividends) (#1624)
External calls sending eth:
- addLiquidity() (#1464)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
Event emitted after the call(s):
- SendDividends(amountToSwap,dividends) (#1625)
- swapUSDT() (#1472)
- Transfer(sender,firePit,fee.div(_gonsPerFragment)) (#1505)
- gonAmountReceived = takeFee(sender,gonAmount) (#1477)
- Transfer(address(dividendTracker),address(this),amountToSwap) (#1605)
- swapUSDT() (#1472)
- Transfer(sender,address(this),fee.div(_gonsPerFragment)) (#1509)
- gonAmountReceived = takeFee(sender,gonAmount) (#1477)
- Transfer(sender,autoLiquidityReceiver,fee.div(_gonsPerFragment)) (#1513)
- gonAmountReceived = takeFee(sender,gonAmount) (#1477)
- Transfer(sender,address(dividendTracker),fee.div(_gonsPerFragment)) (#1517)
- gonAmountReceived = takeFee(sender,gonAmount) (#1477)
- Transfer(sender,recipient,gonAmountReceived.div(_gonsPerFragment)) (#1480)
Reentrancy in Seed._transferFrom(address,address,uint256) (#1450-1495):
External calls:
- rebase() (#1460)
- pairContract.sync() (#1550)
- addLiquidity() (#1464)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1576-1582)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1643-1649)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
- swapUSDT() (#1472)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1612-1618)
- success = usdt.transfer(address(dividendTracker),dividends) (#1621)
- dividendTracker.distributeUSDTDividends(dividends) (#1624)
- dividendTracker.setBalance(sender,balanceOf(sender)) (#1482)
- dividendTracker.setBalance(recipient,balanceOf(recipient)) (#1483)
- dividendTracker.process(gasForProcessing) (#1487-1492)
External calls sending eth:
- addLiquidity() (#1464)
- router.addLiquidityETH{value: amountETHLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#1587-1594)
- swapBack() (#1468)
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gasForProcessing,tx.origin) (#1488)
Reentrancy in Seed.constructor(address,IERC20,address,address,address) (#1383-1413):
External calls:
- pair = IPancakeSwapFactory(router.factory()).createPair(router.WETH(),address(this)) (#1386-1389)
Event emitted after the call(s):
- Transfer(address(0x0),msg.sender,_totalSupply) (#1405)
Reentrancy in USDTDividendTracker.processAccount(address,bool) (#1288-1298):
External calls:
- amount = _withdrawDividendOfUser(account) (#1289)
- success = IERC20(usdt).transfer(user,_withdrawableDividend) (#996)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1293)
Reentrancy in Seed.processDividendTracker(uint256) (#1973-1976):
External calls:
- (iterations,claims,lastProcessedIndex) = dividendTracker.process(gas) (#1974)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,false,gas,tx.origin) (#1975)
Reentrancy in Seed.rebase() (#1522-1554):
External calls:
- pairContract.sync() (#1550)
Event emitted after the call(s):
- Rebased(block.timestamp,_totalSupply) (#1552)
Reentrancy in Seed.swapUSDT() (#1598-1627):
External calls:
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1612-1618)
- success = usdt.transfer(address(dividendTracker),dividends) (#1621)
- dividendTracker.distributeUSDTDividends(dividends) (#1624)
Event emitted after the call(s):
- SendDividends(amountToSwap,dividends) (#1625)
Apply the check-effects-interactions pattern.

Additional information: link

USDTDividendTracker.getAccount(address) (#1148-1190) uses timestamp for comparisons
Dangerous comparisons:
- nextClaimTime > block.timestamp (#1187-1189)
USDTDividendTracker.canAutoClaim(uint256) (#1211-1217) uses timestamp for comparisons
Dangerous comparisons:
- lastClaimTime > block.timestamp (#1212)
- block.timestamp.sub(lastClaimTime) >= claimWait (#1216)
Seed._transferFrom(address,address,uint256) (#1450-1495) uses timestamp for comparisons
Dangerous comparisons:
- ! inSwap && block.timestamp - lastDividendTime > minDividendTime (#1485)
Seed.getRoi() (#1848-1867) uses timestamp for comparisons
Dangerous comparisons:
- deltaTimeFromInit < (15552000) (#1852)
- deltaTimeFromInit < (31536000) (#1854)
- deltaTimeFromInit < (2 * 31536000) (#1856)
Avoid relying on block.timestamp.

Additional information: link

Seed.isContract(address) (#1906-1910) uses assembly
- INLINE ASM (#1908)
Do not use evm assembly.

Additional information: link

Context._msgData() (#9-13) is never used and should be removed
DividendPayingToken._transfer(address,address,uint256) (#1046-1052) is never used and should be removed
ERC20._transfer(address,address,uint256) (#754-767) is never used and should be removed
SafeMathInt.abs(int256) (#64-67) is never used and should be removed
SafeMathInt.div(int256,int256) (#35-41) is never used and should be removed
SafeMathInt.mul(int256,int256) (#23-30) is never used and should be removed
Seed.isContract(address) (#1906-1910) is never used and should be removed
Remove unused functions.

Additional information: link

Seed.totalFee (#1324) is set pre-construction with a non-constant function or state variable:
- liquidityFee.add(treasuryFee).add(safuuInsuranceFundFee).add(usdtFee).add(firePitFee)
Seed.firePit (#1334) is set pre-construction with a non-constant function or state variable:
- ZERO
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 (#2) 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 Seed.swapBack() (#1629-1667):
- (success) = address(treasuryReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(treasuryFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1655-1660)
- (success,None) = address(safuuInsuranceFundReceiver).call{gas: 30000,value: amountETHToTreasuryAndSIF.mul(safuuInsuranceFundFee).div(treasuryFee.add(safuuInsuranceFundFee))}() (#1661-1666)
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() (#313) is not in mixedCase
Function IPancakeSwapPair.PERMIT_TYPEHASH() (#315) is not in mixedCase
Function IPancakeSwapPair.MINIMUM_LIQUIDITY() (#333) is not in mixedCase
Function IPancakeSwapRouter.WETH() (#365) is not in mixedCase
Parameter DividendPayingToken.dividendOf(address)._owner (#1012) is not in mixedCase
Parameter DividendPayingToken.withdrawableDividendOf(address)._owner (#1019) is not in mixedCase
Parameter DividendPayingToken.withdrawnDividendOf(address)._owner (#1026) is not in mixedCase
Parameter DividendPayingToken.accumulativeDividendOf(address)._owner (#1036) is not in mixedCase
Constant DividendPayingToken.magnitude (#942) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter USDTDividendTracker.getAccount(address)._account (#1148) is not in mixedCase
Parameter Seed.checkFeeExempt(address)._addr (#1776) is not in mixedCase
Parameter Seed.setFeeReceivers(address,address,address,address)._autoLiquidityReceiver (#1792) is not in mixedCase
Parameter Seed.setFeeReceivers(address,address,address,address)._treasuryReceiver (#1793) is not in mixedCase
Parameter Seed.setFeeReceivers(address,address,address,address)._safuuInsuranceFundReceiver (#1794) is not in mixedCase
Parameter Seed.setFeeReceivers(address,address,address,address)._firePit (#1795) is not in mixedCase
Parameter Seed.setFee(uint256,uint256,uint256,uint256,uint256)._liquidityFee (#1804) is not in mixedCase
Parameter Seed.setFee(uint256,uint256,uint256,uint256,uint256)._treasuryFee (#1805) is not in mixedCase
Parameter Seed.setFee(uint256,uint256,uint256,uint256,uint256)._safuuInsuranceFundFee (#1806) is not in mixedCase
Parameter Seed.setFee(uint256,uint256,uint256,uint256,uint256)._usdtFee (#1807) is not in mixedCase
Parameter Seed.setFee(uint256,uint256,uint256,uint256,uint256)._firePitFee (#1808) is not in mixedCase
Parameter Seed.setMinToken(uint256,uint256,uint256)._minTokenLiquidity (#1819) is not in mixedCase
Parameter Seed.setMinToken(uint256,uint256,uint256)._minTokenUSDT (#1820) is not in mixedCase
Parameter Seed.setMinToken(uint256,uint256,uint256)._minTokenBack (#1821) is not in mixedCase
Parameter Seed.setMinDividendTime(uint256)._minDividendTime (#1828) is not in mixedCase
Parameter Seed.setWhitelist(address,bool)._addr (#1838) is not in mixedCase
Parameter Seed.setLP(address)._address (#1842) is not in mixedCase
Variable Seed._isFeeExempt (#1306) is not in mixedCase
Variable Seed.DEAD (#1327) is not in mixedCase
Variable Seed.ZERO (#1328) is not in mixedCase
Variable Seed._autoRebase (#1352) is not in mixedCase
Variable Seed._autoAddLiquidity (#1353) is not in mixedCase
Variable Seed._autoSwapBack (#1354) is not in mixedCase
Variable Seed._autoSwapUSDT (#1355) is not in mixedCase
Variable Seed._initRebaseStartTime (#1357) is not in mixedCase
Variable Seed._lastRebasedTime (#1358) is not in mixedCase
Variable Seed._totalSupply (#1359) is not in mixedCase
Follow the Solidity naming convention.

Additional information: link

Redundant expression "this (#10)" inContext (#4-14)
Remove redundant statements if they congest code but offer no value.

Additional information: link

Variable IPancakeSwapRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#370) is too similar to IPancakeSwapRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#371)
Variable DividendPayingToken._withdrawDividendOfUser(address)._withdrawableDividend (#992) is too similar to USDTDividendTracker.getAccount(address).withdrawableDividends (#1153)
Variable Seed.rebase().idx_scope_0 (#1531) is too similar to Seed.rebase().idx_scope_1 (#1536)
Variable Seed.rebase().idx_scope_0 (#1531) is too similar to Seed.rebase().idx_scope_2 (#1541)
Variable Seed.rebase().idx_scope_1 (#1536) is too similar to Seed.rebase().idx_scope_2 (#1541)
Prevent variables from having similar names.

Additional information: link

USDTDividendTracker.getAccountAtIndex(uint256) (#1192-1209) uses literals with too many digits:
- (0x0000000000000000000000000000000000000000,- 1,- 1,0,0,0,0,0) (#1203)
Seed.updateGasForProcessing(uint256) (#1916-1920) uses literals with too many digits:
- require(bool,string)(newValue >= 200000 && newValue <= 500000,gasForProcessing must be between 200,000 and 500,000) (#1917)
Seed.slitherConstructorVariables() (#1301-2003) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#1327)
Seed.slitherConstructorVariables() (#1301-2003) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#1328)
Seed.slitherConstructorVariables() (#1301-2003) uses literals with too many digits:
- gasForProcessing = 300000 (#1369)
Use: Ether suffix, Time suffix, or The scientific notation

Additional information: link

SafeMathInt.MAX_INT256 (#18) is never used in SafeMathInt (#16-74)
Remove unused state variables.

Additional information: link

Seed.DEAD (#1327) should be constant
Seed.ZERO (#1328) should be constant
Seed.feeDenominator (#1325) should be constant
Add the constant attributes to state variables that never change.

Additional information: link

get(IterableMapping.Map,address) should be declared external:
- IterableMapping.get(IterableMapping.Map,address) (#148-150)
getIndexOfKey(IterableMapping.Map,address) should be declared external:
- IterableMapping.getIndexOfKey(IterableMapping.Map,address) (#152-157)
getKeyAtIndex(IterableMapping.Map,uint256) should be declared external:
- IterableMapping.getKeyAtIndex(IterableMapping.Map,uint256) (#159-161)
size(IterableMapping.Map) should be declared external:
- IterableMapping.size(IterableMapping.Map) (#164-166)
owner() should be declared external:
- Ownable.owner() (#548-550)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#561-564)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#566-568)
name() should be declared external:
- ERC20.name() (#606-608)
symbol() should be declared external:
- ERC20.symbol() (#614-616)
decimals() should be declared external:
- ERC20.decimals() (#631-633)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#657-660)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#665-667)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#676-679)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#694-702)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#716-719)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#735-738)
name() should be declared external:
- ERC20Detailed.name() (#870-872)
symbol() should be declared external:
- ERC20Detailed.symbol() (#874-876)
distributeUSDTDividends(uint256) should be declared external:
- DividendPayingToken.distributeUSDTDividends(uint256) (#967-981)
withdrawDividend() should be declared external:
- DividendPayingToken.withdrawDividend() (#985-987)
- USDTDividendTracker.withdrawDividend() (#1119-1121)
dividendOf(address) should be declared external:
- DividendPayingToken.dividendOf(address) (#1012-1014)
withdrawnDividendOf(address) should be declared external:
- DividendPayingToken.withdrawnDividendOf(address) (#1026-1028)
getAccountAtIndex(uint256) should be declared external:
- USDTDividendTracker.getAccountAtIndex(uint256) (#1192-1209)
process(uint256) should be declared external:
- USDTDividendTracker.process(uint256) (#1241-1286)
getInfo() should be declared external:
- Seed.getInfo() (#1882-1887)
getLiquidityBacking(uint256) should be declared external:
- Seed.getLiquidityBacking(uint256) (#1889-1896)
updateGasForProcessing(uint256) should be declared external:
- Seed.updateGasForProcessing(uint256) (#1916-1920)
withdrawableDividendOf(address) should be declared external:
- Seed.withdrawableDividendOf(address) (#1935-1937)
dividendTokenBalanceOf(address) should be declared external:
- Seed.dividendTokenBalanceOf(address) (#1939-1941)
updateDividendTracker(address) should be declared external:
- Seed.updateDividendTracker(address) (#1990-1995)
getDividendInfo() should be declared external:
- Seed.getDividendInfo() (#1997-1999)
Use the external attribute for functions never called from the contract.

Additional information: link


Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.


Not a direct threat, but may indicate unreliable intentions of developer. Both name and ticker of current token are widespread, i.e. common across multiple tokens. This is slightly suspicious

Holders:

Contract has 15% buy tax and 15% sell tax.
Taxes are suspiciously high (over 10%) and contract ownership is not renounced. Token has a high risk of becoming a honeypot.


Number of Binance Smart Chain (BSC) token holders is low.


Token is deployed only at one blockchain


Token has only one trading pair

No disclosed threats
Search:


BscScan page for the token does not contain additional info: website, socials, description, etc.

Additional information: link


Unable to find token on CoinGecko

Additional information: link


Unable to find token on CoinMarketCap

Additional information: link


Unable to find whitepaper link on the website


Token is not listed at Mobula.Finance

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

Anti-Scam Checks

Price for Seed

News for Seed