NutGain is offering users and developers powerful tools including Web3, Defi, Metaverse, NFT's, Defi Wallet, D-Hyper Ecommerce and dApps.
NUTG.addLiquidity(uint256,uint256) (#1795-1809) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
NUTG.buyBackAndBurn(uint256) (#1811-1832) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
State variables written after the call(s):
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- _balances[account] = _balances[account].sub(amount,NutGain: burn amount exceeds balance) (#429)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
- swapTokensForBNB(swapTokens_scope_0) (#1731)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- success = INutGain(dividendToken).transfer(dividendTracker,amount) (#1883)
- dividendPayingTracker.distributeDividends(amount) (#1886)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,_recipient,block.timestamp) (#1863-1869)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
State variables written after the call(s):
- super._transfer(from,address(this),fees) (#1759)
- _balances[sender] = _balances[sender].sub(amount,NutGain: transfer amount exceeds balance) (#389)
- _balances[recipient] = _balances[recipient].add(amount) (#390)
- super._transfer(from,to,amount) (#1762)
- _balances[sender] = _balances[sender].sub(amount,NutGain: transfer amount exceeds balance) (#389)
- _balances[recipient] = _balances[recipient].add(amount) (#390)
- swapping = false (#1743)
Reentrancy in NUTG.buyBackAndBurn(uint256) (#1811-1832):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
State variables written after the call(s):
- _burn(developmentWallet,swappedBalance) (#1829)
- _balances[account] = _balances[account].sub(amount,NutGain: burn amount exceeds balance) (#429)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
NUTG.rand() (#1617-1633) uses a dangerous strict equality:
- randNumber == 0 (#1627)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Contract locking ether found:
Contract NutgDividendTracker (#1892-2120) has payable functions:
- DividendPayingToken.receive() (#585-586)
But does not have a function to withdraw the ether
Remove the payable attribute or add a withdraw function.
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.
NUTG.rand() (#1617-1633) performs a multiplication on the result of a division:
-randNumber = (seed - ((seed / 100) * 100)) (#1626)
NUTG._transfer(address,address,uint256) (#1672-1777) performs a multiplication on the result of a division:
-fees = amount.div(100).mul(totalFees) (#1750)
NUTG._transfer(address,address,uint256) (#1672-1777) performs a multiplication on the result of a division:
-fees = fees.div(100).mul(sellFeeIncreaseFactor) (#1754)
NUTG._transfer(address,address,uint256) (#1672-1777) performs a multiplication on the result of a division:
-swapTokens = contractTokenBalance.div(totalFees).mul(developmentFee) (#1717)
NUTG._transfer(address,address,uint256) (#1672-1777) performs a multiplication on the result of a division:
-swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
NUTG._transfer(address,address,uint256) (#1672-1777) performs a multiplication on the result of a division:
-swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
NUTG._transfer(address,address,uint256) (#1672-1777) performs a multiplication on the result of a division:
-swapTokens_scope_0 = contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee) (#1730)
NUTG._transfer(address,address,uint256) (#1672-1777) performs a multiplication on the result of a division:
-buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in DividendPayingToken._withdrawDividendOfUser(address) (#629-645):
External calls:
- success = INutGain(dividendToken).transfer(user,_withdrawableDividend) (#634)
State variables written after the call(s):
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#637)
Reentrancy in NUTG.updatenutgDividendTracker(address) (#1469-1484):
External calls:
- newnutgDividendTracker.excludeFromDividends(address(newnutgDividendTracker)) (#1476)
- newnutgDividendTracker.excludeFromDividends(address(this)) (#1477)
- newnutgDividendTracker.excludeFromDividends(address(uniswapV2Router)) (#1478)
- newnutgDividendTracker.excludeFromDividends(address(deadAddress)) (#1479)
State variables written after the call(s):
- nutgDividendTracker = newnutgDividendTracker (#1483)
Reentrancy in NUTG.whitelistPresale(address,address) (#1384-1391):
External calls:
- nutgDividendTracker.excludeFromDividends(_presaleAddress) (#1386)
- nutgDividendTracker.excludeFromDividends(_routerAddress) (#1389)
State variables written after the call(s):
- setExcludeFromFees(_routerAddress,true) (#1390)
- isExcludedFromFees[account] = excluded (#1518)
Apply the check-effects-interactions pattern.
Additional information: link
NUTG._transfer(address,address,uint256).lastProcessedIndex (#1770) is a local variable never initialized
NUTG._transfer(address,address,uint256).iterations (#1770) is a local variable never initialized
NUTG._transfer(address,address,uint256).claims (#1770) 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
NUTG.claim() (#1635-1637) ignores return value by nutgDividendTracker.processAccount(address(msg.sender),false) (#1636)
NUTG._transfer(address,address,uint256) (#1672-1777) ignores return value by nutgDividendTracker.process(gas) (#1770-1775)
NUTG.addLiquidity(uint256,uint256) (#1795-1809) ignores return value by uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
Ensure that all the return values of the function calls are used.
Additional information: link
DividendPayingToken.constructor(string,string,address)._name (#581) shadows:
- NutGain._name (#217) (state variable)
DividendPayingToken.constructor(string,string,address)._symbol (#581) shadows:
- NutGain._symbol (#218) (state variable)
DividendPayingToken.dividendOf(address)._owner (#651) shadows:
- Ownable._owner (#59) (state variable)
DividendPayingToken.withdrawableDividendOf(address)._owner (#658) shadows:
- Ownable._owner (#59) (state variable)
DividendPayingToken.withdrawnDividendOf(address)._owner (#665) shadows:
- Ownable._owner (#59) (state variable)
DividendPayingToken.accumulativeDividendOf(address)._owner (#675) shadows:
- Ownable._owner (#59) (state variable)
Rename the local variables that shadow another component.
Additional information: link
NUTG.setMaxBuyTransaction(uint256) (#1398-1400) should emit an event for:
- maxBuyTranscationAmount = _maxTxn * (10 ** 18) (#1399)
NUTG.setMaxSellTransaction(uint256) (#1408-1410) should emit an event for:
- maxSellTransactionAmount = _maxTxn * (10 ** 18) (#1409)
NUTG.setMaxWalletToken(uint256) (#1425-1427) should emit an event for:
- maxWalletToken = _maxToken * (10 ** 18) (#1426)
NUTG.setSwapTokensAtAmount(uint256) (#1429-1431) should emit an event for:
- swapTokensAtAmount = _swapAmount * (10 ** 18) (#1430)
NUTG.setSellTransactionMultiplier(uint256) (#1433-1435) should emit an event for:
- sellFeeIncreaseFactor = _multiplier (#1434)
Emit an event for critical parameter changes.
Additional information: link
NUTG.whitelistPresale(address,address)._presaleAddress (#1384) lacks a zero-check on :
- presaleAddress = _presaleAddress (#1385)
NUTG.updatenutgDividentToken(address)._newContract (#1412) lacks a zero-check on :
- nutgDividentToken = _newContract (#1413)
DividendPayingToken.constructor(string,string,address)._token (#581) lacks a zero-check on :
- dividendToken = _token (#582)
NutgDividendTracker.setDividendTokenAddress(address).newToken (#1928) lacks a zero-check on :
- dividendToken = newToken (#1929)
Check that the address is not zero.
Additional information: link
DividendPayingToken._withdrawDividendOfUser(address) (#629-645) has external calls inside a loop: success = INutGain(dividendToken).transfer(user,_withdrawableDividend) (#634)
Favor pull over push strategy for external calls.
Additional information: link
Variable 'NUTG._transfer(address,address,uint256).claims (#1770)' in NUTG._transfer(address,address,uint256) (#1672-1777) potentially used before declaration: ProcessednutgDividendTracker(iterations,claims,lastProcessedIndex,true,gas,msg.sender) (#1771)
Variable 'NUTG._transfer(address,address,uint256).iterations (#1770)' in NUTG._transfer(address,address,uint256) (#1672-1777) potentially used before declaration: ProcessednutgDividendTracker(iterations,claims,lastProcessedIndex,true,gas,msg.sender) (#1771)
Variable 'NUTG._transfer(address,address,uint256).lastProcessedIndex (#1770)' in NUTG._transfer(address,address,uint256) (#1672-1777) potentially used before declaration: ProcessednutgDividendTracker(iterations,claims,lastProcessedIndex,true,gas,msg.sender) (#1771)
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 NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapTokensForBNB(swapTokens_scope_0) (#1731)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
State variables written after the call(s):
- swapTokensForBNB(swapTokens_scope_0) (#1731)
- _allowances[owner][spender] = amount (#451)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
State variables written after the call(s):
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- _allowances[owner][spender] = amount (#451)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
- swapTokensForBNB(swapTokens_scope_0) (#1731)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- success = INutGain(dividendToken).transfer(dividendTracker,amount) (#1883)
- dividendPayingTracker.distributeDividends(amount) (#1886)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,_recipient,block.timestamp) (#1863-1869)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
State variables written after the call(s):
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- _allowances[owner][spender] = amount (#451)
Reentrancy in NUTG.buyBackAndBurn(uint256) (#1811-1832):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
State variables written after the call(s):
- _burn(developmentWallet,swappedBalance) (#1829)
- _totalSupply = _totalSupply.sub(amount) (#430)
Reentrancy in NUTG.constructor() (#1347-1380):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1356-1357)
State variables written after the call(s):
- lpReceiver = msg.sender (#1361)
- uniswapV2Pair = _uniswapV2Pair (#1360)
- uniswapV2Router = _uniswapV2Router (#1359)
Reentrancy in NUTG.constructor() (#1347-1380):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1356-1357)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1363)
- nutgDividendTracker.excludeFromDividends(pair) (#1546)
- excludeFromDividend(address(nutgDividendTracker)) (#1365)
- nutgDividendTracker.excludeFromDividends(address(account)) (#1524)
- excludeFromDividend(address(this)) (#1366)
- nutgDividendTracker.excludeFromDividends(address(account)) (#1524)
- excludeFromDividend(address(_uniswapV2Router)) (#1367)
- nutgDividendTracker.excludeFromDividends(address(account)) (#1524)
- excludeFromDividend(deadAddress) (#1368)
- nutgDividendTracker.excludeFromDividends(address(account)) (#1524)
State variables written after the call(s):
- _mint(owner(),1500000000 * (10 ** 18)) (#1379)
- _balances[account] = _balances[account].add(amount) (#409)
- _mint(owner(),1500000000 * (10 ** 18)) (#1379)
- _totalSupply = _totalSupply.add(amount) (#408)
- setExcludeFromFees(developmentWallet,true) (#1371)
- isExcludedFromFees[account] = excluded (#1518)
- setExcludeFromFees(address(this),true) (#1372)
- isExcludedFromFees[account] = excluded (#1518)
- setExcludeFromFees(owner(),true) (#1373)
- isExcludedFromFees[account] = excluded (#1518)
Reentrancy in NUTG.prepareForPartnerOrExchangeListing(address) (#1393-1396):
External calls:
- nutgDividendTracker.excludeFromDividends(_partnerOrExchangeAddress) (#1394)
State variables written after the call(s):
- setExcludeFromFees(_partnerOrExchangeAddress,true) (#1395)
- isExcludedFromFees[account] = excluded (#1518)
Reentrancy in NutgDividendTracker.processAccount(address,bool) (#2108-2118):
External calls:
- amount = _withdrawDividendOfUser(account) (#2109)
- success = INutGain(dividendToken).transfer(user,_withdrawableDividend) (#634)
State variables written after the call(s):
- lastClaimTimes[account] = block.timestamp (#2112)
Reentrancy in NUTG.swapAndLiquify(uint256) (#1779-1793):
External calls:
- swapTokensForBNB(half) (#1786)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- addLiquidity(otherHalf,newBalance) (#1790)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1790)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1790)
- _allowances[owner][spender] = amount (#451)
Reentrancy in NUTG.whitelistPresale(address,address) (#1384-1391):
External calls:
- nutgDividendTracker.excludeFromDividends(_presaleAddress) (#1386)
State variables written after the call(s):
- setExcludeFromFees(_presaleAddress,true) (#1387)
- isExcludedFromFees[account] = excluded (#1518)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in NUTG._setAutomatedMarketMakerPair(address,bool) (#1541-1550):
External calls:
- nutgDividendTracker.excludeFromDividends(pair) (#1546)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (#1549)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
Event emitted after the call(s):
- SwapBNBForTokens(amount,path) (#1831)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- Transfer(account,address(0),amount) (#431)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapTokensForBNB(swapTokens_scope_0) (#1731)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#452)
- swapTokensForBNB(swapTokens_scope_0) (#1731)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#452)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- SwapAndLiquify(half,newBalance,otherHalf) (#1792)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
- swapTokensForBNB(swapTokens_scope_0) (#1731)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- success = INutGain(dividendToken).transfer(dividendTracker,amount) (#1883)
- dividendPayingTracker.distributeDividends(amount) (#1886)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,_recipient,block.timestamp) (#1863-1869)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#452)
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- SendDividends(amount) (#1887)
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- Transfer(sender,recipient,amount) (#391)
- super._transfer(from,address(this),fees) (#1759)
- Transfer(sender,recipient,amount) (#391)
- super._transfer(from,to,amount) (#1762)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- swapTokensForBNB(swapTokens) (#1718)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
- swapTokensForBNB(swapTokens_scope_0) (#1731)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- success = INutGain(dividendToken).transfer(dividendTracker,amount) (#1883)
- dividendPayingTracker.distributeDividends(amount) (#1886)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,_recipient,block.timestamp) (#1863-1869)
- nutgDividendTracker.setBalance(address(from),balanceOf(from)) (#1764)
- nutgDividendTracker.setBalance(address(to),balanceOf(to)) (#1765)
- nutgDividendTracker.process(gas) (#1770-1775)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
Event emitted after the call(s):
- ProcessednutgDividendTracker(iterations,claims,lastProcessedIndex,true,gas,msg.sender) (#1771)
Reentrancy in NUTG.buyBackAndBurn(uint256) (#1811-1832):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
Event emitted after the call(s):
- SwapBNBForTokens(amount,path) (#1831)
- Transfer(account,address(0),amount) (#431)
- _burn(developmentWallet,swappedBalance) (#1829)
Reentrancy in NUTG.constructor() (#1347-1380):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1356-1357)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1363)
- nutgDividendTracker.excludeFromDividends(pair) (#1546)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (#1549)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1363)
Reentrancy in NUTG.constructor() (#1347-1380):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1356-1357)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1363)
- nutgDividendTracker.excludeFromDividends(pair) (#1546)
- excludeFromDividend(address(nutgDividendTracker)) (#1365)
- nutgDividendTracker.excludeFromDividends(address(account)) (#1524)
- excludeFromDividend(address(this)) (#1366)
- nutgDividendTracker.excludeFromDividends(address(account)) (#1524)
- excludeFromDividend(address(_uniswapV2Router)) (#1367)
- nutgDividendTracker.excludeFromDividends(address(account)) (#1524)
- excludeFromDividend(deadAddress) (#1368)
- nutgDividendTracker.excludeFromDividends(address(account)) (#1524)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#1520)
- setExcludeFromFees(address(this),true) (#1372)
- ExcludeFromFees(account,excluded) (#1520)
- setExcludeFromFees(developmentWallet,true) (#1371)
- ExcludeFromFees(account,excluded) (#1520)
- setExcludeFromFees(owner(),true) (#1373)
- Transfer(address(0),account,amount) (#410)
- _mint(owner(),1500000000 * (10 ** 18)) (#1379)
Reentrancy in NUTG.prepareForPartnerOrExchangeListing(address) (#1393-1396):
External calls:
- nutgDividendTracker.excludeFromDividends(_partnerOrExchangeAddress) (#1394)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#1520)
- setExcludeFromFees(_partnerOrExchangeAddress,true) (#1395)
Reentrancy in NutgDividendTracker.processAccount(address,bool) (#2108-2118):
External calls:
- amount = _withdrawDividendOfUser(account) (#2109)
- success = INutGain(dividendToken).transfer(user,_withdrawableDividend) (#634)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#2113)
Reentrancy in NUTG.processDividendTracker(uint256) (#1612-1615):
External calls:
- (ethIterations,ethClaims,ethLastProcessedIndex) = nutgDividendTracker.process(gas) (#1613)
Event emitted after the call(s):
- ProcessednutgDividendTracker(ethIterations,ethClaims,ethLastProcessedIndex,false,gas,msg.sender) (#1614)
Reentrancy in NUTG.swapAndLiquify(uint256) (#1779-1793):
External calls:
- swapTokensForBNB(half) (#1786)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1843-1849)
- addLiquidity(otherHalf,newBalance) (#1790)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1790)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#452)
- addLiquidity(otherHalf,newBalance) (#1790)
- SwapAndLiquify(half,newBalance,otherHalf) (#1792)
Reentrancy in NUTG.swapAndSendnutgDividends(uint256) (#1872-1876):
External calls:
- swapTokensForDividendToken(tokens,address(this),nutgDividentToken) (#1873)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,_recipient,block.timestamp) (#1863-1869)
- transferDividends(nutgDividentToken,address(nutgDividendTracker),nutgDividendTracker,nutgDividends) (#1875)
- success = INutGain(dividendToken).transfer(dividendTracker,amount) (#1883)
- dividendPayingTracker.distributeDividends(amount) (#1886)
Event emitted after the call(s):
- SendDividends(amount) (#1887)
- transferDividends(nutgDividentToken,address(nutgDividendTracker),nutgDividendTracker,nutgDividends) (#1875)
Reentrancy in NUTG.transferDividends(address,address,DividendPayingToken,uint256) (#1882-1889):
External calls:
- success = INutGain(dividendToken).transfer(dividendTracker,amount) (#1883)
- dividendPayingTracker.distributeDividends(amount) (#1886)
Event emitted after the call(s):
- SendDividends(amount) (#1887)
Reentrancy in NUTG.updatenutgDividendTracker(address) (#1469-1484):
External calls:
- newnutgDividendTracker.excludeFromDividends(address(newnutgDividendTracker)) (#1476)
- newnutgDividendTracker.excludeFromDividends(address(this)) (#1477)
- newnutgDividendTracker.excludeFromDividends(address(uniswapV2Router)) (#1478)
- newnutgDividendTracker.excludeFromDividends(address(deadAddress)) (#1479)
Event emitted after the call(s):
- UpdatenutgDividendTracker(newAddress,address(nutgDividendTracker)) (#1481)
Reentrancy in NUTG.whitelistPresale(address,address) (#1384-1391):
External calls:
- nutgDividendTracker.excludeFromDividends(_presaleAddress) (#1386)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#1520)
- setExcludeFromFees(_presaleAddress,true) (#1387)
Reentrancy in NUTG.whitelistPresale(address,address) (#1384-1391):
External calls:
- nutgDividendTracker.excludeFromDividends(_presaleAddress) (#1386)
- nutgDividendTracker.excludeFromDividends(_routerAddress) (#1389)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#1520)
- setExcludeFromFees(_routerAddress,true) (#1390)
Apply the check-effects-interactions pattern.
Additional information: link
NUTG.rand() (#1617-1633) uses timestamp for comparisons
Dangerous comparisons:
- randNumber == 0 (#1627)
NUTG._transfer(address,address,uint256) (#1672-1777) uses timestamp for comparisons
Dangerous comparisons:
- buyBackOrLiquidity <= 50 (#1725)
- buyBackOrLiquidity > 50 (#1733)
NutgDividendTracker.getAccount(address) (#1972-2015) uses timestamp for comparisons
Dangerous comparisons:
- nextClaimTime > block.timestamp (#2012-2014)
NutgDividendTracker.canAutoClaim(uint256) (#2036-2042) uses timestamp for comparisons
Dangerous comparisons:
- lastClaimTime > block.timestamp (#2037)
- block.timestamp.sub(lastClaimTime) >= claimWait (#2041)
Avoid relying on block.timestamp.
Additional information: link
Context._msgData() (#40-43) is never used and should be removed
DividendPayingToken._transfer(address,address,uint256) (#685-691) is never used and should be removed
NutGain._setupDecimals(uint8) (#462-464) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#1184-1187) is never used and should be removed
SafeMath.mod(uint256,uint256) (#1146-1149) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#1204-1207) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#1018-1022) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#1054-1057) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#1064-1067) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#1039-1047) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#1029-1032) is never used and should be removed
SafeMathInt.div(int256,int256) (#1227-1233) is never used and should be removed
SafeMathInt.mul(int256,int256) (#1217-1225) is never used and should be removed
Remove unused functions.
Additional information: link
Parameter DividendPayingToken.dividendOf(address)._owner (#651) is not in mixedCase
Parameter DividendPayingToken.withdrawableDividendOf(address)._owner (#658) is not in mixedCase
Parameter DividendPayingToken.withdrawnDividendOf(address)._owner (#665) is not in mixedCase
Parameter DividendPayingToken.accumulativeDividendOf(address)._owner (#675) is not in mixedCase
Constant DividendPayingToken.magnitude (#558) is not in UPPER_CASE_WITH_UNDERSCORES
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#763) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#764) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#781) is not in mixedCase
Function IUniswapV2Router01.WETH() (#801) is not in mixedCase
Struct NUTG.feeStore (#1285-1290) is not in CapWords
Event NUTGnutgDividendEnabledUpdated(bool) (#1319) is not in CapWords
Parameter NUTG.whitelistPresale(address,address)._presaleAddress (#1384) is not in mixedCase
Parameter NUTG.whitelistPresale(address,address)._routerAddress (#1384) is not in mixedCase
Parameter NUTG.prepareForPartnerOrExchangeListing(address)._partnerOrExchangeAddress (#1393) is not in mixedCase
Parameter NUTG.setMaxBuyTransaction(uint256)._maxTxn (#1398) is not in mixedCase
Parameter NUTG.setMaxSellTransaction(uint256)._maxTxn (#1408) is not in mixedCase
Parameter NUTG.updatenutgDividentToken(address)._newContract (#1412) is not in mixedCase
Parameter NUTG.updateDevelopmentWallet(address)._newWallet (#1418) is not in mixedCase
Parameter NUTG.setMaxWalletToken(uint256)._maxToken (#1425) is not in mixedCase
Parameter NUTG.setSwapTokensAtAmount(uint256)._swapAmount (#1429) is not in mixedCase
Parameter NUTG.setSellTransactionMultiplier(uint256)._multiplier (#1433) is not in mixedCase
Parameter NUTG.setTradingIsEnabled(bool)._enabled (#1450) is not in mixedCase
Parameter NUTG.setBuyBackAndLiquifyEnabled(bool)._enabled (#1454) is not in mixedCase
Parameter NUTG.setnutgDividendEnabled(bool)._enabled (#1459) is not in mixedCase
Parameter NUTG.setDevelopmentEnabled(bool)._enabled (#1464) is not in mixedCase
Parameter NUTG.setBuyFee(uint256,uint256,uint256)._developmentFee (#1486) is not in mixedCase
Parameter NUTG.setBuyFee(uint256,uint256,uint256)._buyBackAndLiquidityFee (#1486) is not in mixedCase
Parameter NUTG.setBuyFee(uint256,uint256,uint256)._nutgDividendRewardsFee (#1486) is not in mixedCase
Parameter NUTG.setSellFee(uint256,uint256,uint256)._developmentFee (#1494) is not in mixedCase
Parameter NUTG.setSellFee(uint256,uint256,uint256)._buyBackAndLiquidityFee (#1494) is not in mixedCase
Parameter NUTG.setSellFee(uint256,uint256,uint256)._nutgDividendRewardsFee (#1494) is not in mixedCase
Parameter NUTG.setTransferFee(uint256,uint256,uint256)._developmentFee (#1502) is not in mixedCase
Parameter NUTG.setTransferFee(uint256,uint256,uint256)._buyBackAndLiquidityFee (#1502) is not in mixedCase
Parameter NUTG.setTransferFee(uint256,uint256,uint256)._nutgDividendRewardsFee (#1502) is not in mixedCase
Parameter NUTG.swapTokensForDividendToken(uint256,address,address)._tokenAmount (#1853) is not in mixedCase
Parameter NUTG.swapTokensForDividendToken(uint256,address,address)._recipient (#1853) is not in mixedCase
Parameter NUTG.swapTokensForDividendToken(uint256,address,address)._dividendAddress (#1853) is not in mixedCase
Parameter NutgDividendTracker.updateMinimumTokenBalanceForDividends(uint256)._newMinimumBalance (#1932) is not in mixedCase
Parameter NutgDividendTracker.getAccount(address)._account (#1972) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#41)" inContext (#35-44)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
State variables written after the call(s):
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- _balances[account] = _balances[account].sub(amount,NutGain: burn amount exceeds balance) (#429)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- _totalSupply = _totalSupply.sub(amount) (#430)
Event emitted after the call(s):
- SwapBNBForTokens(amount,path) (#1831)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- Transfer(account,address(0),amount) (#431)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
State variables written after the call(s):
- swapTokensForBNB(swapTokens_scope_0) (#1731)
- _allowances[owner][spender] = amount (#451)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#452)
- swapTokensForBNB(swapTokens_scope_0) (#1731)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
State variables written after the call(s):
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- _allowances[owner][spender] = amount (#451)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#452)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- SwapAndLiquify(half,newBalance,otherHalf) (#1792)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
Reentrancy in NUTG._transfer(address,address,uint256) (#1672-1777):
External calls:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
External calls sending eth:
- transferToWallet(address(developmentWallet),developmentPortion) (#1720)
- recipient.transfer(amount) (#1879)
- buyBackAndBurn(buyBackBalance.div(10 ** 2).mul(rand())) (#1728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,developmentWallet,block.timestamp.add(300)) (#1820-1825)
- swapAndLiquify(contractTokenBalance.div(totalFees).mul(buyBackAndLiquidityFee)) (#1734)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,lpReceiver,block.timestamp) (#1801-1808)
State variables written after the call(s):
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- _allowances[owner][spender] = amount (#451)
- super._transfer(from,address(this),fees) (#1759)
- _balances[sender] = _balances[sender].sub(amount,NutGain: transfer amount exceeds balance) (#389)
- _balances[recipient] = _balances[recipient].add(amount) (#390)
- super._transfer(from,to,amount) (#1762)
- _balances[sender] = _balances[sender].sub(amount,NutGain: transfer amount exceeds balance) (#389)
- _balances[recipient] = _balances[recipient].add(amount) (#390)
- swapping = false (#1743)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#452)
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- ProcessednutgDividendTracker(iterations,claims,lastProcessedIndex,true,gas,msg.sender) (#1771)
- SendDividends(amount) (#1887)
- swapAndSendnutgDividends(sellTokens.div(10 ** 2).mul(rand())) (#1740)
- Transfer(sender,recipient,amount) (#391)
- super._transfer(from,address(this),fees) (#1759)
- Transfer(sender,recipient,amount) (#391)
- super._transfer(from,to,amount) (#1762)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#806) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#807)
Variable DividendPayingToken._withdrawDividendOfUser(address)._withdrawableDividend (#630) is too similar to NutgDividendTracker.getAccount(address).withdrawableDividends (#1977)
Prevent variables from having similar names.
Additional information: link
NUTG.constructor() (#1347-1380) uses literals with too many digits:
- _mint(owner(),1500000000 * (10 ** 18)) (#1379)
NUTG.afterPreSale() (#1437-1448) uses literals with too many digits:
- swapTokensAtAmount = 3000000 * (10 ** 18) (#1444)
NUTG.afterPreSale() (#1437-1448) uses literals with too many digits:
- maxBuyTranscationAmount = 1500000000 * (10 ** 18) (#1445)
NUTG.afterPreSale() (#1437-1448) uses literals with too many digits:
- maxSellTransactionAmount = 15000000 * (10 ** 18) (#1446)
NUTG.afterPreSale() (#1437-1448) uses literals with too many digits:
- maxWalletToken = 1500000000 * (10 ** 18) (#1447)
NUTG.slitherConstructorVariables() (#1269-1890) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#1275)
NUTG.slitherConstructorVariables() (#1269-1890) uses literals with too many digits:
- gasForProcessing = 300000 (#1303)
NutgDividendTracker.constructor() (#1914-1918) uses literals with too many digits:
- minimumTokenBalanceForDividends = 500000 * (10 ** 18) (#1916)
NutgDividendTracker.getAccountAtIndex(uint256) (#2017-2034) uses literals with too many digits:
- (0x0000000000000000000000000000000000000000,- 1,- 1,0,0,0,0,0) (#2028)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Ownable._previousOwner (#60) is never used in NUTG (#1269-1890)
Ownable._lockTime (#61) is never used in NUTG (#1269-1890)
Ownable._previousOwner (#60) is never used in NutgDividendTracker (#1892-2120)
Ownable._lockTime (#61) is never used in NutgDividendTracker (#1892-2120)
DividendPayingToken.lastAmount (#561) is never used in NutgDividendTracker (#1892-2120)
Remove unused state variables.
Additional information: link
DividendPayingToken.lastAmount (#561) should be constant
NUTG.deadAddress (#1275) should be constant
Ownable._lockTime (#61) should be constant
Ownable._previousOwner (#60) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#96-99)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#105-109)
name() should be declared external:
- NutGain.name() (#239-241)
symbol() should be declared external:
- NutGain.symbol() (#247-249)
decimals() should be declared external:
- NutGain.decimals() (#264-266)
transfer(address,uint256) should be declared external:
- NutGain.transfer(address,uint256) (#290-293)
allowance(address,address) should be declared external:
- NutGain.allowance(address,address) (#298-300)
approve(address,uint256) should be declared external:
- NutGain.approve(address,uint256) (#309-312)
transferFrom(address,address,uint256) should be declared external:
- NutGain.transferFrom(address,address,uint256) (#327-331)
increaseAllowance(address,uint256) should be declared external:
- NutGain.increaseAllowance(address,uint256) (#345-348)
decreaseAllowance(address,uint256) should be declared external:
- NutGain.decreaseAllowance(address,uint256) (#364-367)
distributeDividends(uint256) should be declared external:
- DividendPayingToken.distributeDividends(uint256) (#603-614)
withdrawDividend() should be declared external:
- DividendPayingToken.withdrawDividend() (#618-620)
- NutgDividendTracker.withdrawDividend() (#1924-1926)
dividendOf(address) should be declared external:
- DividendPayingToken.dividendOf(address) (#651-653)
withdrawnDividendOf(address) should be declared external:
- DividendPayingToken.withdrawnDividendOf(address) (#665-667)
get(IterableMapping.Map,address) should be declared external:
- IterableMapping.get(IterableMapping.Map,address) (#947-949)
getIndexOfKey(IterableMapping.Map,address) should be declared external:
- IterableMapping.getIndexOfKey(IterableMapping.Map,address) (#951-956)
getKeyAtIndex(IterableMapping.Map,uint256) should be declared external:
- IterableMapping.getKeyAtIndex(IterableMapping.Map,uint256) (#958-960)
size(IterableMapping.Map) should be declared external:
- IterableMapping.size(IterableMapping.Map) (#964-966)
setAutomatedMarketMakerPair(address,bool) should be declared external:
- NUTG.setAutomatedMarketMakerPair(address,bool) (#1535-1539)
getIsExcludedFromFees(address) should be declared external:
- NUTG.getIsExcludedFromFees(address) (#1574-1576)
getAccountAtIndex(uint256) should be declared external:
- NutgDividendTracker.getAccountAtIndex(uint256) (#2017-2034)
process(uint256) should be declared external:
- NutgDividendTracker.process(uint256) (#2061-2106)
Use the external attribute for functions never called from the contract.
Additional information: link
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
Young tokens have high risks of price dump / death
Unable to find Telegram and Twitter accounts