Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Unify.swapETHForTokens(uint256) (#821-836) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
Unify.addLiquidity(uint256,uint256) (#838-851) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#843-850)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Unify._transfer(address,address,uint256) (#664-781) uses a weak PRNG: "_bBSLimit = _bBSLimitMin + uint256(keccak256(bytes)(abi.encodePacked(block.timestamp,block.difficulty))) % (_bBSLimitMax - _bBSLimitMin + 1) (#725)"
Do not use block.timestamp, now or blockhash as a source of randomness
Additional information: link
Reentrancy in Unify._transfer(address,address,uint256) (#664-781):
External calls:
- swapTokens(contractTokenBalance) (#693)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#810-816)
External calls sending eth:
- swapTokens(contractTokenBalance) (#693)
- recipient.transfer(amount) (#1134)
State variables written after the call(s):
- _removeOldSellHistories() (#720)
- _sellHistories[i].time = _sellHistories[j].time (#1021)
- _sellHistories[i].bnbAmount = _sellHistories[j].bnbAmount (#1022)
- _sellHistories.pop() (#1032)
Reentrancy in Unify._transfer(address,address,uint256) (#664-781):
External calls:
- swapTokens(contractTokenBalance) (#693)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#810-816)
- buyBackTokens(_bBSLimit) (#728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
External calls sending eth:
- swapTokens(contractTokenBalance) (#693)
- recipient.transfer(amount) (#1134)
- buyBackTokens(_bBSLimit) (#728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#957)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#882)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#873)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#893)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#903)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#874)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#884)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#894)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#905)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _rTotal = _rTotal.sub(rFee) (#912)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#959)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#892)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#902)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#883)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#904)
- buyBackTokens(_bBSLimit) (#728)
- inSwapAndLiquify = true (#510)
- inSwapAndLiquify = false (#512)
Apply the check-effects-interactions pattern.
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.
Unify._transfer(address,address,uint256).sellHistory (#680) 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
Unify.addLiquidity(uint256,uint256) (#838-851) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#843-850)
Ensure that all the return values of the function calls are used.
Additional information: link
Unify.allowance(address,address).owner (#565) shadows:
- Ownable.owner() (#156-158) (function)
Unify._approve(address,address,uint256).owner (#656) shadows:
- Ownable.owner() (#156-158) (function)
Rename the local variables that shadow another component.
Additional information: link
Unify.SetBuyBackMaxTimeForHistories(uint256) (#1037-1039) should emit an event for:
- _buyBackMaxTimeForHistories = newMinutes * 60 (#1038)
Unify.SetBuyBackDivisor(uint256) (#1041-1043) should emit an event for:
- _buyBackDivisor = newDivisor (#1042)
Unify.SetBuyBackTimeInterval(uint256) (#1049-1051) should emit an event for:
- _buyBackTimeInterval = newMinutes * 60 (#1050)
Unify.SetBuyBackRangeRate(uint256) (#1053-1056) should emit an event for:
- _buyBackRangeRate = newPercent (#1055)
Unify.SetSwapMinutes(uint256) (#1062-1064) should emit an event for:
- _intervalMinutesForSwap = newMinutes * 60 (#1063)
Unify.setTaxFeePercent(uint256) (#1066-1068) should emit an event for:
- _taxFee = taxFee (#1067)
Unify.setBuyFee(uint256,uint256) (#1070-1073) should emit an event for:
- _buyTaxFee = buyTaxFee (#1071)
- _buyLiquidityFee = buyLiquidityFee (#1072)
Unify.setSellFee(uint256,uint256) (#1075-1078) should emit an event for:
- _sellTaxFee = sellTaxFee (#1076)
- _sellLiquidityFee = sellLiquidityFee (#1077)
Unify.setLiquidityFeePercent(uint256) (#1080-1082) should emit an event for:
- _liquidityFee = liquidityFee (#1081)
Unify.setBuyBackSellLimit(uint256) (#1084-1086) should emit an event for:
- buyBackSellLimit = buyBackSellSetLimit (#1085)
Unify.setMaxTxAmount(uint256) (#1088-1090) should emit an event for:
- _maxTxAmount = maxTxAmount (#1089)
Unify.setMarketingDivisor(uint256) (#1092-1094) should emit an event for:
- marketingDivisor = divisor (#1093)
Unify.setNumTokensSellToAddToBuyBack(uint256) (#1096-1098) should emit an event for:
- minimumTokensBeforeSwap = _minimumTokensBeforeSwap (#1097)
Emit an event for critical parameter changes.
Additional information: link
Unify.setMarketingAddress(address)._marketingAddress (#1100) lacks a zero-check on :
- marketingAddress = address(_marketingAddress) (#1101)
Check that the address is not zero.
Additional information: link
Reentrancy in Unify._transfer(address,address,uint256) (#664-781):
External calls:
- swapTokens(contractTokenBalance) (#693)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#810-816)
- buyBackTokens(_bBSLimit) (#728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
External calls sending eth:
- swapTokens(contractTokenBalance) (#693)
- recipient.transfer(amount) (#1134)
- buyBackTokens(_bBSLimit) (#728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
State variables written after the call(s):
- removeAllFee() (#744)
- _liquidityFee = 0 (#981)
- _liquidityFee = _buyLiquidityFee (#746)
- removeAllFee() (#750)
- _liquidityFee = 0 (#981)
- _liquidityFee = _sellLiquidityFee (#752)
- removeAllFee() (#757)
- _liquidityFee = 0 (#981)
- _liquidityFee = _addressFees[from]._liquidityFee (#759)
- _liquidityFee = _addressFees[from]._sellLiquidityFee (#764)
- removeAllFee() (#771)
- _liquidityFee = 0 (#981)
- _liquidityFee = _addressFees[to]._buyLiquidityFee (#774)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _liquidityFee = _previousLiquidityFee (#986)
- _liquidityFee = 0 (#981)
- removeAllFee() (#744)
- _previousLiquidityFee = _liquidityFee (#978)
- removeAllFee() (#750)
- _previousLiquidityFee = _liquidityFee (#978)
- removeAllFee() (#757)
- _previousLiquidityFee = _liquidityFee (#978)
- removeAllFee() (#771)
- _previousLiquidityFee = _liquidityFee (#978)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _previousLiquidityFee = _liquidityFee (#978)
- removeAllFee() (#744)
- _previousTaxFee = _taxFee (#977)
- removeAllFee() (#750)
- _previousTaxFee = _taxFee (#977)
- removeAllFee() (#757)
- _previousTaxFee = _taxFee (#977)
- removeAllFee() (#771)
- _previousTaxFee = _taxFee (#977)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _previousTaxFee = _taxFee (#977)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _tFeeTotal = _tFeeTotal.add(tFee) (#913)
- removeAllFee() (#744)
- _taxFee = 0 (#980)
- _taxFee = _buyTaxFee (#745)
- removeAllFee() (#750)
- _taxFee = 0 (#980)
- _taxFee = _sellTaxFee (#751)
- removeAllFee() (#757)
- _taxFee = 0 (#980)
- _taxFee = _addressFees[from]._taxFee (#758)
- _taxFee = _addressFees[from]._sellTaxFee (#763)
- removeAllFee() (#771)
- _taxFee = 0 (#980)
- _taxFee = _addressFees[to]._buyTaxFee (#773)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _taxFee = _previousTaxFee (#985)
- _taxFee = 0 (#980)
Reentrancy in Unify.changeRouterVersion(address) (#1137-1150):
External calls:
- _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1143-1144)
State variables written after the call(s):
- uniswapV2Pair = _pair (#1146)
- uniswapV2Router = _uniswapV2Router (#1149)
Reentrancy in Unify.constructor() (#515-537):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#525-526)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#531)
- _isExcludedFromFee[address(this)] = true (#532)
- _startTimeForSwap = block.timestamp (#534)
- uniswapV2Router = _uniswapV2Router (#528)
Reentrancy in Unify.transferFrom(address,address,uint256) (#574-578):
External calls:
- _transfer(sender,recipient,amount) (#575)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#810-816)
External calls sending eth:
- _transfer(sender,recipient,amount) (#575)
- recipient.transfer(amount) (#1134)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#576)
- _allowances[owner][spender] = amount (#660)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Unify._transfer(address,address,uint256) (#664-781):
External calls:
- swapTokens(contractTokenBalance) (#693)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#810-816)
- buyBackTokens(_bBSLimit) (#728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
External calls sending eth:
- swapTokens(contractTokenBalance) (#693)
- recipient.transfer(amount) (#1134)
- buyBackTokens(_bBSLimit) (#728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#835)
- buyBackTokens(_bBSLimit) (#728)
- Transfer(sender,recipient,tTransferAmount) (#877)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- Transfer(sender,recipient,tTransferAmount) (#887)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- Transfer(sender,recipient,tTransferAmount) (#897)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- Transfer(sender,recipient,tTransferAmount) (#908)
- _tokenTransfer(from,to,amount,takeFee) (#780)
Reentrancy in Unify.constructor() (#515-537):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#525-526)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#536)
Reentrancy in Unify.swapETHForTokens(uint256) (#821-836):
External calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#835)
Reentrancy in Unify.swapTokensForEth(uint256) (#801-819):
External calls:
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#810-816)
Event emitted after the call(s):
- SwapTokensForETH(tokenAmount,path) (#818)
Reentrancy in Unify.transferFrom(address,address,uint256) (#574-578):
External calls:
- _transfer(sender,recipient,amount) (#575)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#810-816)
External calls sending eth:
- _transfer(sender,recipient,amount) (#575)
- recipient.transfer(amount) (#1134)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#661)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#576)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#191-196) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Contract is locked until 7 days) (#193)
Unify._transfer(address,address,uint256) (#664-781) uses timestamp for comparisons
Dangerous comparisons:
- overMinimumTokenBalance && _startTimeForSwap + _intervalMinutesForSwap <= block.timestamp (#690)
- _sellHistories[i].time >= startTime (#710)
- balance > _bBSLimit (#727)
Unify.buyBackTokens(uint256) (#795-799) uses timestamp for comparisons
Dangerous comparisons:
- amount > 0 (#796)
Unify._removeOldSellHistories() (#1013-1035) uses timestamp for comparisons
Dangerous comparisons:
- _sellHistories[j].time >= maxStartTimeForHistories (#1019)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#86-95) uses assembly
- INLINE ASM (#93)
Address._functionCallWithValue(address,bytes,uint256,string) (#123-140) uses assembly
- INLINE ASM (#132-135)
Do not use evm assembly.
Additional information: link
Unify.includeInReward(address) (#643-654) has costly operations inside a loop:
- _excluded.pop() (#650)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#123-140) is never used and should be removed
Address.functionCall(address,bytes) (#106-108) is never used and should be removed
Address.functionCall(address,bytes,string) (#110-112) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#114-116) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#118-121) is never used and should be removed
Address.isContract(address) (#86-95) is never used and should be removed
Address.sendValue(address,uint256) (#97-103) is never used and should be removed
Context._msgData() (#9-12) is never used and should be removed
SafeMath.mod(uint256,uint256) (#74-76) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#78-81) is never used and should be removed
Unify.addLiquidity(uint256,uint256) (#838-851) is never used and should be removed
Remove unused functions.
Additional information: link
Unify._rTotal (#425) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
Unify._previousTaxFee (#448) is set pre-construction with a non-constant function or state variable:
- _taxFee
Unify._previousLiquidityFee (#451) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
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
Low level call in Address.sendValue(address,uint256) (#97-103):
- (success) = recipient.call{value: amount}() (#101)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#123-140):
- (success,returndata) = target.call{value: weiValue}(data) (#126)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#235) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#236) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#252) is not in mixedCase
Function IUniswapV2Router01.WETH() (#273) is not in mixedCase
Parameter Unify.calculateTaxFee(uint256)._amount (#962) is not in mixedCase
Parameter Unify.calculateLiquidityFee(uint256)._amount (#968) is not in mixedCase
Function Unify.SetBuyBackMaxTimeForHistories(uint256) (#1037-1039) is not in mixedCase
Function Unify.SetBuyBackDivisor(uint256) (#1041-1043) is not in mixedCase
Function Unify.GetBuyBackTimeInterval() (#1045-1047) is not in mixedCase
Function Unify.SetBuyBackTimeInterval(uint256) (#1049-1051) is not in mixedCase
Function Unify.SetBuyBackRangeRate(uint256) (#1053-1056) is not in mixedCase
Function Unify.GetSwapMinutes() (#1058-1060) is not in mixedCase
Function Unify.SetSwapMinutes(uint256) (#1062-1064) is not in mixedCase
Parameter Unify.setNumTokensSellToAddToBuyBack(uint256)._minimumTokensBeforeSwap (#1096) is not in mixedCase
Parameter Unify.setMarketingAddress(address)._marketingAddress (#1100) is not in mixedCase
Parameter Unify.setSwapAndLiquifyEnabled(bool)._enabled (#1104) is not in mixedCase
Parameter Unify.setBuyBackEnabled(bool)._enabled (#1109) is not in mixedCase
Parameter Unify.setAutoBuyBackEnabled(bool)._enabled (#1114) is not in mixedCase
Parameter Unify.changeRouterVersion(address)._router (#1137) is not in mixedCase
Parameter Unify.transferForeignToken(address,address)._token (#1156) is not in mixedCase
Parameter Unify.transferForeignToken(address,address)._to (#1156) is not in mixedCase
Function Unify.Sweep() (#1162-1165) is not in mixedCase
Parameter Unify.setAddressFee(address,bool,uint256,uint256)._address (#1167) is not in mixedCase
Parameter Unify.setAddressFee(address,bool,uint256,uint256)._enable (#1167) is not in mixedCase
Parameter Unify.setAddressFee(address,bool,uint256,uint256)._addressTaxFee (#1167) is not in mixedCase
Parameter Unify.setAddressFee(address,bool,uint256,uint256)._addressLiquidityFee (#1167) is not in mixedCase
Parameter Unify.setBuyAddressFee(address,bool,uint256,uint256)._address (#1173) is not in mixedCase
Parameter Unify.setBuyAddressFee(address,bool,uint256,uint256)._enable (#1173) is not in mixedCase
Parameter Unify.setBuyAddressFee(address,bool,uint256,uint256)._addressTaxFee (#1173) is not in mixedCase
Parameter Unify.setBuyAddressFee(address,bool,uint256,uint256)._addressLiquidityFee (#1173) is not in mixedCase
Parameter Unify.setSellAddressFee(address,bool,uint256,uint256)._address (#1179) is not in mixedCase
Parameter Unify.setSellAddressFee(address,bool,uint256,uint256)._enable (#1179) is not in mixedCase
Parameter Unify.setSellAddressFee(address,bool,uint256,uint256)._addressTaxFee (#1179) is not in mixedCase
Parameter Unify.setSellAddressFee(address,bool,uint256,uint256)._addressLiquidityFee (#1179) is not in mixedCase
Variable Unify._taxFee (#447) is not in mixedCase
Variable Unify._liquidityFee (#450) is not in mixedCase
Variable Unify._buyTaxFee (#453) is not in mixedCase
Variable Unify._buyLiquidityFee (#454) is not in mixedCase
Variable Unify._sellTaxFee (#456) is not in mixedCase
Variable Unify._sellLiquidityFee (#457) is not in mixedCase
Variable Unify._startTimeForSwap (#459) is not in mixedCase
Variable Unify._intervalMinutesForSwap (#460) is not in mixedCase
Variable Unify._buyBackRangeRate (#462) is not in mixedCase
Variable Unify._addressFees (#465) is not in mixedCase
Variable Unify._maxTxAmount (#469) is not in mixedCase
Variable Unify._sellHistories (#474) is not in mixedCase
Variable Unify._isAutoBuyBack (#475) is not in mixedCase
Variable Unify._buyBackDivisor (#476) is not in mixedCase
Variable Unify._buyBackTimeInterval (#477) is not in mixedCase
Variable Unify._buyBackMaxTimeForHistories (#478) is not in mixedCase
Variable Unify._isEnabledBuyBackAndBurn (#487) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#10)" inContext (#4-13)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in Unify._transfer(address,address,uint256) (#664-781):
External calls:
- swapTokens(contractTokenBalance) (#693)
- recipient.transfer(amount) (#1134)
State variables written after the call(s):
- _removeOldSellHistories() (#720)
- _sellHistories[i].time = _sellHistories[j].time (#1021)
- _sellHistories[i].bnbAmount = _sellHistories[j].bnbAmount (#1022)
- _sellHistories.pop() (#1032)
Reentrancy in Unify._transfer(address,address,uint256) (#664-781):
External calls:
- swapTokens(contractTokenBalance) (#693)
- recipient.transfer(amount) (#1134)
External calls sending eth:
- swapTokens(contractTokenBalance) (#693)
- recipient.transfer(amount) (#1134)
- buyBackTokens(_bBSLimit) (#728)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
State variables written after the call(s):
- removeAllFee() (#744)
- _liquidityFee = 0 (#981)
- _liquidityFee = _buyLiquidityFee (#746)
- removeAllFee() (#750)
- _liquidityFee = 0 (#981)
- _liquidityFee = _sellLiquidityFee (#752)
- removeAllFee() (#757)
- _liquidityFee = 0 (#981)
- _liquidityFee = _addressFees[from]._liquidityFee (#759)
- _liquidityFee = _addressFees[from]._sellLiquidityFee (#764)
- removeAllFee() (#771)
- _liquidityFee = 0 (#981)
- _liquidityFee = _addressFees[to]._buyLiquidityFee (#774)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _liquidityFee = _previousLiquidityFee (#986)
- _liquidityFee = 0 (#981)
- removeAllFee() (#744)
- _previousLiquidityFee = _liquidityFee (#978)
- removeAllFee() (#750)
- _previousLiquidityFee = _liquidityFee (#978)
- removeAllFee() (#757)
- _previousLiquidityFee = _liquidityFee (#978)
- removeAllFee() (#771)
- _previousLiquidityFee = _liquidityFee (#978)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _previousLiquidityFee = _liquidityFee (#978)
- removeAllFee() (#744)
- _previousTaxFee = _taxFee (#977)
- removeAllFee() (#750)
- _previousTaxFee = _taxFee (#977)
- removeAllFee() (#757)
- _previousTaxFee = _taxFee (#977)
- removeAllFee() (#771)
- _previousTaxFee = _taxFee (#977)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _previousTaxFee = _taxFee (#977)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#957)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#882)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#873)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#893)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#903)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#874)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#884)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#894)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#905)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _rTotal = _rTotal.sub(rFee) (#912)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _tFeeTotal = _tFeeTotal.add(tFee) (#913)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#959)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#892)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#902)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#883)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#904)
- removeAllFee() (#744)
- _taxFee = 0 (#980)
- _taxFee = _buyTaxFee (#745)
- removeAllFee() (#750)
- _taxFee = 0 (#980)
- _taxFee = _sellTaxFee (#751)
- removeAllFee() (#757)
- _taxFee = 0 (#980)
- _taxFee = _addressFees[from]._taxFee (#758)
- _taxFee = _addressFees[from]._sellTaxFee (#763)
- removeAllFee() (#771)
- _taxFee = 0 (#980)
- _taxFee = _addressFees[to]._buyTaxFee (#773)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- _taxFee = _previousTaxFee (#985)
- _taxFee = 0 (#980)
- buyBackTokens(_bBSLimit) (#728)
- inSwapAndLiquify = true (#510)
- inSwapAndLiquify = false (#512)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#835)
- buyBackTokens(_bBSLimit) (#728)
- Transfer(sender,recipient,tTransferAmount) (#877)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- Transfer(sender,recipient,tTransferAmount) (#887)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- Transfer(sender,recipient,tTransferAmount) (#897)
- _tokenTransfer(from,to,amount,takeFee) (#780)
- Transfer(sender,recipient,tTransferAmount) (#908)
- _tokenTransfer(from,to,amount,takeFee) (#780)
Reentrancy in Unify.transferFrom(address,address,uint256) (#574-578):
External calls:
- _transfer(sender,recipient,amount) (#575)
- recipient.transfer(amount) (#1134)
External calls sending eth:
- _transfer(sender,recipient,amount) (#575)
- recipient.transfer(amount) (#1134)
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,deadAddress,block.timestamp.add(300)) (#828-833)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#576)
- _allowances[owner][spender] = amount (#660)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#661)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#576)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#278) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#279)
Variable Unify._transferBothExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Unify._transferToExcluded(address,address,uint256).tTransferAmount (#881)
Variable Unify._transferFromExcluded(address,address,uint256).rTransferAmount (#891) is too similar to Unify._transferStandard(address,address,uint256).tTransferAmount (#872)
Variable Unify._transferFromExcluded(address,address,uint256).rTransferAmount (#891) is too similar to Unify._transferBothExcluded(address,address,uint256).tTransferAmount (#901)
Variable Unify._transferStandard(address,address,uint256).rTransferAmount (#872) is too similar to Unify._getTValues(uint256).tTransferAmount (#925)
Variable Unify._transferToExcluded(address,address,uint256).rTransferAmount (#881) is too similar to Unify._transferStandard(address,address,uint256).tTransferAmount (#872)
Variable Unify._transferBothExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Unify._transferFromExcluded(address,address,uint256).tTransferAmount (#891)
Variable Unify._transferFromExcluded(address,address,uint256).rTransferAmount (#891) is too similar to Unify._transferToExcluded(address,address,uint256).tTransferAmount (#881)
Variable Unify._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#933) is too similar to Unify._getTValues(uint256).tTransferAmount (#925)
Variable Unify._transferToExcluded(address,address,uint256).rTransferAmount (#881) is too similar to Unify._transferToExcluded(address,address,uint256).tTransferAmount (#881)
Variable Unify._getValues(uint256).rTransferAmount (#918) is too similar to Unify._getTValues(uint256).tTransferAmount (#925)
Variable Unify._transferStandard(address,address,uint256).rTransferAmount (#872) is too similar to Unify._transferStandard(address,address,uint256).tTransferAmount (#872)
Variable Unify._transferFromExcluded(address,address,uint256).rTransferAmount (#891) is too similar to Unify._transferFromExcluded(address,address,uint256).tTransferAmount (#891)
Variable Unify._transferBothExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Unify._getTValues(uint256).tTransferAmount (#925)
Variable Unify._transferBothExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Unify._getValues(uint256).tTransferAmount (#917)
Variable Unify._transferToExcluded(address,address,uint256).rTransferAmount (#881) is too similar to Unify._transferFromExcluded(address,address,uint256).tTransferAmount (#891)
Variable Unify.reflectionFromToken(uint256,bool).rTransferAmount (#622) is too similar to Unify._getTValues(uint256).tTransferAmount (#925)
Variable Unify._transferFromExcluded(address,address,uint256).rTransferAmount (#891) is too similar to Unify._getTValues(uint256).tTransferAmount (#925)
Variable Unify._transferFromExcluded(address,address,uint256).rTransferAmount (#891) is too similar to Unify._getValues(uint256).tTransferAmount (#917)
Variable Unify._transferBothExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Unify._transferStandard(address,address,uint256).tTransferAmount (#872)
Variable Unify._transferToExcluded(address,address,uint256).rTransferAmount (#881) is too similar to Unify._getTValues(uint256).tTransferAmount (#925)
Variable Unify._transferToExcluded(address,address,uint256).rTransferAmount (#881) is too similar to Unify._getValues(uint256).tTransferAmount (#917)
Variable Unify._transferBothExcluded(address,address,uint256).rTransferAmount (#901) is too similar to Unify._transferBothExcluded(address,address,uint256).tTransferAmount (#901)
Variable Unify._transferStandard(address,address,uint256).rTransferAmount (#872) is too similar to Unify._getValues(uint256).tTransferAmount (#917)
Variable Unify._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#933) is too similar to Unify._getValues(uint256).tTransferAmount (#917)
Variable Unify._transferStandard(address,address,uint256).rTransferAmount (#872) is too similar to Unify._transferBothExcluded(address,address,uint256).tTransferAmount (#901)
Variable Unify._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#933) is too similar to Unify._transferBothExcluded(address,address,uint256).tTransferAmount (#901)
Variable Unify.reflectionFromToken(uint256,bool).rTransferAmount (#622) is too similar to Unify._getValues(uint256).tTransferAmount (#917)
Variable Unify._getValues(uint256).rTransferAmount (#918) is too similar to Unify._getValues(uint256).tTransferAmount (#917)
Variable Unify._transferToExcluded(address,address,uint256).rTransferAmount (#881) is too similar to Unify._transferBothExcluded(address,address,uint256).tTransferAmount (#901)
Variable Unify._transferStandard(address,address,uint256).rTransferAmount (#872) is too similar to Unify._transferToExcluded(address,address,uint256).tTransferAmount (#881)
Variable Unify.reflectionFromToken(uint256,bool).rTransferAmount (#622) is too similar to Unify._transferBothExcluded(address,address,uint256).tTransferAmount (#901)
Variable Unify._transferStandard(address,address,uint256).rTransferAmount (#872) is too similar to Unify._transferFromExcluded(address,address,uint256).tTransferAmount (#891)
Variable Unify._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#933) is too similar to Unify._transferToExcluded(address,address,uint256).tTransferAmount (#881)
Variable Unify._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#933) is too similar to Unify._transferFromExcluded(address,address,uint256).tTransferAmount (#891)
Variable Unify._getValues(uint256).rTransferAmount (#918) is too similar to Unify._transferBothExcluded(address,address,uint256).tTransferAmount (#901)
Variable Unify.reflectionFromToken(uint256,bool).rTransferAmount (#622) is too similar to Unify._transferToExcluded(address,address,uint256).tTransferAmount (#881)
Variable Unify.reflectionFromToken(uint256,bool).rTransferAmount (#622) is too similar to Unify._transferFromExcluded(address,address,uint256).tTransferAmount (#891)
Variable Unify._getValues(uint256).rTransferAmount (#918) is too similar to Unify._transferToExcluded(address,address,uint256).tTransferAmount (#881)
Variable Unify._getValues(uint256).rTransferAmount (#918) is too similar to Unify._transferFromExcluded(address,address,uint256).tTransferAmount (#891)
Variable Unify._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#933) is too similar to Unify._transferStandard(address,address,uint256).tTransferAmount (#872)
Variable Unify.reflectionFromToken(uint256,bool).rTransferAmount (#622) is too similar to Unify._transferStandard(address,address,uint256).tTransferAmount (#872)
Variable Unify._getValues(uint256).rTransferAmount (#918) is too similar to Unify._transferStandard(address,address,uint256).tTransferAmount (#872)
Prevent variables from having similar names.
Additional information: link
Unify.prepareForPreSale() (#1119-1124) uses literals with too many digits:
- _maxTxAmount = 1000000000 * 10 ** 6 * 10 ** 9 (#1123)
Unify.afterPreSale() (#1126-1131) uses literals with too many digits:
- _maxTxAmount = 3000000 * 10 ** 6 * 10 ** 9 (#1130)
Unify.slitherConstructorVariables() (#408-1186) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#413)
Unify.slitherConstructorVariables() (#408-1186) uses literals with too many digits:
- _tTotal = 10000000000 * 10 ** 2 * 10 ** 9 (#424)
Unify.slitherConstructorVariables() (#408-1186) uses literals with too many digits:
- _maxTxAmount = 10000000000 * 10 ** 2 * 10 ** 9 (#469)
Unify.slitherConstructorVariables() (#408-1186) uses literals with too many digits:
- minimumTokensBeforeSwap = 200000 * 10 ** 2 * 10 ** 9 (#470)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Unify._decimals (#430) should be constant
Unify._isEnabledBuyBackAndBurn (#487) should be constant
Unify._name (#428) should be constant
Unify._symbol (#429) should be constant
Unify._tTotal (#424) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#165-168)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#170-174)
getUnlockTime() should be declared external:
- Ownable.getUnlockTime() (#176-178)
getTime() should be declared external:
- Ownable.getTime() (#180-182)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#184-189)
unlock() should be declared external:
- Ownable.unlock() (#191-196)
name() should be declared external:
- Unify.name() (#539-541)
symbol() should be declared external:
- Unify.symbol() (#543-545)
decimals() should be declared external:
- Unify.decimals() (#547-549)
totalSupply() should be declared external:
- Unify.totalSupply() (#551-553)
transfer(address,uint256) should be declared external:
- Unify.transfer(address,uint256) (#560-563)
allowance(address,address) should be declared external:
- Unify.allowance(address,address) (#565-567)
approve(address,uint256) should be declared external:
- Unify.approve(address,uint256) (#569-572)
transferFrom(address,address,uint256) should be declared external:
- Unify.transferFrom(address,address,uint256) (#574-578)
increaseAllowance(address,uint256) should be declared external:
- Unify.increaseAllowance(address,uint256) (#580-583)
decreaseAllowance(address,uint256) should be declared external:
- Unify.decreaseAllowance(address,uint256) (#585-588)
isExcludedFromReward(address) should be declared external:
- Unify.isExcludedFromReward(address) (#590-592)
totalFees() should be declared external:
- Unify.totalFees() (#594-596)
minimumTokensBeforeSwapAmount() should be declared external:
- Unify.minimumTokensBeforeSwapAmount() (#598-600)
buyBackSellLimitAmount() should be declared external:
- Unify.buyBackSellLimitAmount() (#602-604)
deliver(uint256) should be declared external:
- Unify.deliver(uint256) (#606-613)
reflectionFromToken(uint256,bool) should be declared external:
- Unify.reflectionFromToken(uint256,bool) (#616-625)
excludeFromReward(address) should be declared external:
- Unify.excludeFromReward(address) (#633-641)
isExcludedFromFee(address) should be declared external:
- Unify.isExcludedFromFee(address) (#989-991)
excludeFromFee(address) should be declared external:
- Unify.excludeFromFee(address) (#993-995)
includeInFee(address) should be declared external:
- Unify.includeInFee(address) (#997-999)
GetBuyBackTimeInterval() should be declared external:
- Unify.GetBuyBackTimeInterval() (#1045-1047)
GetSwapMinutes() should be declared external:
- Unify.GetSwapMinutes() (#1058-1060)
setBuyBackEnabled(bool) should be declared external:
- Unify.setBuyBackEnabled(bool) (#1109-1112)
setAutoBuyBackEnabled(bool) should be declared external:
- Unify.setAutoBuyBackEnabled(bool) (#1114-1117)
changeRouterVersion(address) should be declared external:
- Unify.changeRouterVersion(address) (#1137-1150)
transferForeignToken(address,address) should be declared external:
- Unify.transferForeignToken(address,address) (#1156-1160)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts