The world's first Triple passive income & Hyper Deflationary token coming to Centralized Exchanges (CEXes)
The next Break Through in Defi space by Libero Financial - an innovation enabling the 158,893.59% Fixed APY token to be Hyper Deflationary
LiberaToken._transferBNBToWallet(address,uint256) (#850-852) sends eth to arbitrary user
Dangerous calls:
- recipient.transfer(amount) (#851)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _swapTokensForBNB(swapTokens,address(this)) (#699)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#818-824)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
External calls sending eth:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
State variables written after the call(s):
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- _balances[sender] = _balances[sender].sub(amount,exceeds balance) (#236)
- _balances[recipient] = _balances[recipient].add(amount) (#237)
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _swapTokensForBNB(swapTokens,address(this)) (#699)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#818-824)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
- _swapTokensForBusd(feeAmount,address(busdTreasury)) (#723)
- dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#841-847)
- busdTreasury.updateRewards() (#724)
External calls sending eth:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
State variables written after the call(s):
- super._transfer(from,address(this),fees) (#766)
- _balances[sender] = _balances[sender].sub(amount,exceeds balance) (#236)
- _balances[recipient] = _balances[recipient].add(amount) (#237)
- super._transfer(from,to,amount) (#770)
- _balances[sender] = _balances[sender].sub(amount,exceeds balance) (#236)
- _balances[recipient] = _balances[recipient].add(amount) (#237)
- swapping = false (#727)
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _swapTokensForBNB(swapTokens,address(this)) (#699)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#818-824)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
- _swapTokensForBusd(feeAmount,address(busdTreasury)) (#723)
- dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#841-847)
- busdTreasury.updateRewards() (#724)
- _nukeLpTokenFromBuildup() (#789)
- nukeTreasury.updateRewards() (#492)
- pair.sync() (#497-501)
External calls sending eth:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- recipient.transfer(amount) (#851)
State variables written after the call(s):
- _nukeLpTokenFromBuildup() (#789)
- _balances[sender] = _balances[sender].sub(amount,exceeds balance) (#236)
- _balances[recipient] = _balances[recipient].add(amount) (#237)
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.
LiberaToken._checkAndPayBiggestBuyer(uint256) (#854-870) uses a dangerous strict equality:
- _currentPeriod > 1 && biggestBuyerAmount[_prevPeriod] > 0 && biggestBuyerPaid[_prevPeriod] == 0 (#857-859)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Contract name (Libera.Financial) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.
LiberaToken._isContract(address) (#665-669) uses assembly
- INLINE ASM (#667)
Do not use evm assembly.
Additional information: link
Low level call in LiberaToken.retrieveBNB() (#961-966):
- (success) = address(msg.sender).call{value: amount}() (#964)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Redundant expression "this (#75)" inContext (#69-78)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#285) is too similar to IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#286)
Prevent variables from having similar names.
Additional information: link
LiberaToken.slitherConstructorConstantVariables() (#339-978) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#351)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Reentrancy in LiberaToken.constructor() (#421-442):
External calls:
- _dexPair = IDEXFactory(_dexRouter.factory()).createPair(address(this),dexToken) (#425)
State variables written after the call(s):
- setDexRouter(address(_dexRouter),_dexPair,dexToken) (#427)
- dexToken = _dexToken (#540)
Apply the check-effects-interactions pattern.
Additional information: link
LiberaToken._nukeFromLp(address,uint256).reason (#499) is a local variable never initialized
LiberaToken._swapAndLiquify(uint256).reason (#799) 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
LiberaToken.excludeFromFees(address,bool)._status (#516) shadows:
- ReentrancyGuard._status (#130) (state variable)
LiberaToken.setAutomatedMarketMakerPair(address,bool)._status (#553) shadows:
- ReentrancyGuard._status (#130) (state variable)
LiberaToken.setIsNotMigrating(bool)._status (#607) shadows:
- ReentrancyGuard._status (#130) (state variable)
LiberaToken.setFeesOnNormalTransfers(bool,uint256)._status (#635) shadows:
- ReentrancyGuard._status (#130) (state variable)
LiberaToken.setLpNukeEnabled(bool,uint256,bool,uint256,uint256)._status (#640) shadows:
- ReentrancyGuard._status (#130) (state variable)
LiberaToken.setIsRewardBiggestBuyer(bool,uint256)._status (#658) shadows:
- ReentrancyGuard._status (#130) (state variable)
Rename the local variables that shadow another component.
Additional information: link
LiberaToken.setMaxSell(uint256) (#573-576) should emit an event for:
- maxSellTransactionAmount = _amount (#575)
LiberaToken.setSwapTokensAtAmount(uint256) (#603-605) should emit an event for:
- swapTokensAtAmount = _amount (#604)
LiberaToken.setTokenFees(uint256,uint256,uint256,uint256,uint256,uint256) (#612-633) should emit an event for:
- liquidityFee = _liquidityFee (#625)
- busdDividendFee = _busdDividendFee (#626)
- marketingFee = _marketingFee (#627)
- treasuryFee = _treasuryFee (#628)
- totalBuyFees = _totalBuyFees (#629)
- rewardBuyerFee = _rewardBuyerFee (#630)
- totalSellFees = _totalSellFees (#632)
LiberaToken.setFeesOnNormalTransfers(bool,uint256) (#635-638) should emit an event for:
- normalTransferFee = _normalTransferFee (#637)
LiberaToken.setLpNukeEnabled(bool,uint256,bool,uint256,uint256) (#640-656) should emit an event for:
- nukePercentPerSell = _percent (#647)
- nukePercentToBurn = _nukePercentToBurn (#648)
- minNukeAmount = _minNukeAmount (#649)
LiberaToken.setIsRewardBiggestBuyer(bool,uint256) (#658-662) should emit an event for:
- biggestBuyerPeriod = _biggestBuyerPeriod (#661)
LiberaToken.setFeesOnBreaker(bool,bool,uint256,int256,uint256,uint256) (#886-902) should emit an event for:
- breakerPeriod = _breakerPeriod (#897)
- breakerPercent = _breakerPercent (#898)
- breakerBuyFee = _breakerBuyFee (#900)
- breakerSellFee = _breakerSellFee (#901)
Emit an event for critical parameter changes.
Additional information: link
Auth.transferOwnership(address).adr (#115) lacks a zero-check on :
- owner = adr (#116)
LiberaToken.setDexRouter(address,address,address)._dexPair (#537) lacks a zero-check on :
- dexPair = _dexPair (#539)
LiberaToken.setDexRouter(address,address,address)._dexToken (#537) lacks a zero-check on :
- dexToken = _dexToken (#540)
LiberaToken.setMarketingWallet(address)._newAddress (#578) lacks a zero-check on :
- marketingWallet = _newAddress (#580)
LiberaToken.setTaxTreasury(address)._newAddress (#583) lacks a zero-check on :
- taxTreasury = _newAddress (#585)
LiberaToken.setReserveTreasury(address)._newAddress (#598) lacks a zero-check on :
- reserveTreasury = _newAddress (#600)
LiberaToken.setLiquidityParams(address,bool,address)._liquidityToken (#947) lacks a zero-check on :
- liquidityToken = _liquidityToken (#951)
Check that the address is not zero.
Additional information: link
Variable 'LiberaToken._nukeFromLp(address,uint256).reason (#499)' in LiberaToken._nukeFromLp(address,uint256) (#481-505) potentially used before declaration: SyncLpErrorEvent(lpAddress,reason) (#500)
Variable 'LiberaToken._swapAndLiquify(uint256).reason (#799)' in LiberaToken._swapAndLiquify(uint256) (#794-803) potentially used before declaration: AutoLpErrorEvent(reason) (#800)
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 LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _swapTokensForBNB(swapTokens,address(this)) (#699)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#818-824)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
- _swapTokensForBusd(feeAmount,address(busdTreasury)) (#723)
- dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#841-847)
- busdTreasury.updateRewards() (#724)
External calls sending eth:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
State variables written after the call(s):
- biggestBuyer[_periodAfterLaunch] = to (#777)
- biggestBuyerAmount[_periodAfterLaunch] = amount (#778)
- _accuTaxSystem(amount,isBuying) (#734)
- circuitBreakerFlag = 2 (#881)
- circuitBreakerFlag = 1 (#874)
- _accuTaxSystem(amount,false) (#736)
- circuitBreakerFlag = 2 (#881)
- circuitBreakerFlag = 1 (#874)
- _accuTaxSystem(amount,isBuying) (#734)
- circuitBreakerTime = block.timestamp (#882)
- _accuTaxSystem(amount,false) (#736)
- circuitBreakerTime = block.timestamp (#882)
- nextSellTax[from] = 0 (#746)
- _accuTaxSystem(amount,isBuying) (#734)
- taxBreakerCheck = 1 (#875)
- taxBreakerCheck = _taxBreakerCheck (#932)
- _accuTaxSystem(amount,false) (#736)
- taxBreakerCheck = 1 (#875)
- taxBreakerCheck = _taxBreakerCheck (#932)
- _accuTaxSystem(amount,isBuying) (#734)
- timeBreakerCheck = block.timestamp.sub(1) (#876)
- timeBreakerCheck = _timeBreakerCheck (#933)
- _accuTaxSystem(amount,false) (#736)
- timeBreakerCheck = block.timestamp.sub(1) (#876)
- timeBreakerCheck = _timeBreakerCheck (#933)
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _swapTokensForBNB(swapTokens,address(this)) (#699)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#818-824)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
- _swapTokensForBusd(feeAmount,address(busdTreasury)) (#723)
- dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#841-847)
- busdTreasury.updateRewards() (#724)
External calls sending eth:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- recipient.transfer(amount) (#851)
State variables written after the call(s):
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- biggestBuyerPaid[_prevPeriod] = _rewardAmount (#865)
- lpNukeBuildup[to] += amount.mul(nukePercentPerSell).div(10000) (#786)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- totalBiggestBuyerPaid = totalBiggestBuyerPaid + _rewardAmount (#864)
Reentrancy in LiberaToken.constructor() (#421-442):
External calls:
- _dexPair = IDEXFactory(_dexRouter.factory()).createPair(address(this),dexToken) (#425)
State variables written after the call(s):
- setDexRouter(address(_dexRouter),_dexPair,dexToken) (#427)
- _allowances[owner][spender] = amount (#263)
- _mint(msg.sender,MAX_SUPPLY) (#441)
- _balances[account] = _balances[account].add(amount) (#247)
- setDexRouter(address(_dexRouter),_dexPair,dexToken) (#427)
- _markerPairs.push(_dexPair) (#557)
- _markerPairs[i] = _markerPairs[_markerPairs.length - 1] (#563)
- _markerPairs.pop() (#564)
- _mint(msg.sender,MAX_SUPPLY) (#441)
- _totalSupply = _totalSupply.add(amount) (#246)
- setLiquidityParams(0xF0f14634971C43d872d1cF1785195C0Ce1000a9d,autoLiquidityCall,busdToken) (#439)
- autoLiquidityCall = _autoLiquidityCall (#950)
- setLiquidityParams(0xF0f14634971C43d872d1cF1785195C0Ce1000a9d,autoLiquidityCall,busdToken) (#439)
- autoLiquidityTreasury = IAutoLiquidityTreasury(_autoLiquidityTreasury) (#949)
- setDexRouter(address(_dexRouter),_dexPair,dexToken) (#427)
- automatedMarketMakerPairs[_dexPair] = _status (#554)
- setBusdTreasury(0xa267AFb36DAb3C97082863431Aff7F88edbCaE29) (#438)
- busdTreasury = ITreasury(_newAddress) (#595)
- setDexRouter(address(_dexRouter),_dexPair,dexToken) (#427)
- dexPair = _dexPair (#539)
- setDexRouter(address(_dexRouter),_dexPair,dexToken) (#427)
- dexRouter = IDEXRouter(_dexRouter) (#538)
- excludeFromFees(address(this),true) (#429)
- isExcludedFromFees[account] = _status (#518)
- excludeFromFees(owner,true) (#430)
- isExcludedFromFees[account] = _status (#518)
- excludeFromFees(deadAddress,true) (#431)
- isExcludedFromFees[account] = _status (#518)
- setMarketingWallet(0x770BdD792f6471EB28cBccD4F193BB26e8B5B07E) (#433)
- isExcludedFromFees[account] = _status (#518)
- setTaxTreasury(0x4Dfa03c64ABd96359B77E7cCa8219B451C19f27E) (#434)
- isExcludedFromFees[account] = _status (#518)
- setReserveTreasury(0xd01c6969C7Dc0B086f118bA3B4D926Da73acA2c7) (#436)
- isExcludedFromFees[account] = _status (#518)
- setNukeTreasury(0x5f791D180126871aE3174db38fcdd28800CcBd77) (#437)
- isExcludedFromFees[account] = _status (#518)
- setBusdTreasury(0xa267AFb36DAb3C97082863431Aff7F88edbCaE29) (#438)
- isExcludedFromFees[account] = _status (#518)
- setLiquidityParams(0xF0f14634971C43d872d1cF1785195C0Ce1000a9d,autoLiquidityCall,busdToken) (#439)
- isExcludedFromFees[account] = _status (#518)
- setLiquidityParams(0xF0f14634971C43d872d1cF1785195C0Ce1000a9d,autoLiquidityCall,busdToken) (#439)
- liquidityToken = _liquidityToken (#951)
- setMarketingWallet(0x770BdD792f6471EB28cBccD4F193BB26e8B5B07E) (#433)
- marketingWallet = _newAddress (#580)
- setNukeTreasury(0x5f791D180126871aE3174db38fcdd28800CcBd77) (#437)
- nukeTreasury = ITreasury(_newAddress) (#590)
- setReserveTreasury(0xd01c6969C7Dc0B086f118bA3B4D926Da73acA2c7) (#436)
- reserveTreasury = _newAddress (#600)
- setTaxTreasury(0x4Dfa03c64ABd96359B77E7cCa8219B451C19f27E) (#434)
- taxTreasury = _newAddress (#585)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in LiberaToken._nukeFromLp(address,uint256) (#481-505):
External calls:
- nukeTreasury.updateRewards() (#492)
- pair.sync() (#497-501)
Event emitted after the call(s):
- SyncLpErrorEvent(lpAddress,reason) (#500)
Reentrancy in LiberaToken._swapAndLiquify(uint256) (#794-803):
External calls:
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
Event emitted after the call(s):
- AutoLpErrorEvent(reason) (#800)
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _swapTokensForBNB(swapTokens,address(this)) (#699)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#818-824)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
External calls sending eth:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
Event emitted after the call(s):
- AutoLpErrorEvent(reason) (#800)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- Transfer(sender,recipient,amount) (#238)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _swapTokensForBNB(swapTokens,address(this)) (#699)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#818-824)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
- _swapTokensForBusd(feeAmount,address(busdTreasury)) (#723)
- dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#841-847)
- busdTreasury.updateRewards() (#724)
External calls sending eth:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
Event emitted after the call(s):
- CircuitBreakerActivated() (#883)
- _accuTaxSystem(amount,isBuying) (#734)
- CircuitBreakerActivated() (#883)
- _accuTaxSystem(amount,false) (#736)
- Transfer(sender,recipient,amount) (#238)
- super._transfer(from,address(this),fees) (#766)
- Transfer(sender,recipient,amount) (#238)
- super._transfer(from,to,amount) (#770)
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _swapTokensForBNB(swapTokens,address(this)) (#699)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#818-824)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
- _swapTokensForBusd(feeAmount,address(busdTreasury)) (#723)
- dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#841-847)
- busdTreasury.updateRewards() (#724)
External calls sending eth:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- recipient.transfer(amount) (#851)
Event emitted after the call(s):
- PayBiggestBuyer(biggestBuyer[_prevPeriod],_prevPeriod,_rewardAmount) (#867)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _swapTokensForBNB(swapTokens,address(this)) (#699)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#818-824)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- autoLiquidityTreasury.autoLiquidify(address(this),liquidityToken,dexToken,address(dexRouter)) (#797-801)
- _swapTokensForBusd(feeAmount,address(busdTreasury)) (#723)
- dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#841-847)
- busdTreasury.updateRewards() (#724)
- _nukeLpTokenFromBuildup() (#789)
- nukeTreasury.updateRewards() (#492)
- pair.sync() (#497-501)
External calls sending eth:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- recipient.transfer(amount) (#851)
Event emitted after the call(s):
- SyncLpErrorEvent(lpAddress,reason) (#500)
- _nukeLpTokenFromBuildup() (#789)
- Transfer(sender,recipient,amount) (#238)
- _nukeLpTokenFromBuildup() (#789)
Reentrancy in LiberaToken.constructor() (#421-442):
External calls:
- _dexPair = IDEXFactory(_dexRouter.factory()).createPair(address(this),dexToken) (#425)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#264)
- setDexRouter(address(_dexRouter),_dexPair,dexToken) (#427)
- ExcludeFromFees(account,_status) (#519)
- excludeFromFees(address(this),true) (#429)
- ExcludeFromFees(account,_status) (#519)
- setNukeTreasury(0x5f791D180126871aE3174db38fcdd28800CcBd77) (#437)
- ExcludeFromFees(account,_status) (#519)
- setLiquidityParams(0xF0f14634971C43d872d1cF1785195C0Ce1000a9d,autoLiquidityCall,busdToken) (#439)
- ExcludeFromFees(account,_status) (#519)
- setBusdTreasury(0xa267AFb36DAb3C97082863431Aff7F88edbCaE29) (#438)
- ExcludeFromFees(account,_status) (#519)
- setTaxTreasury(0x4Dfa03c64ABd96359B77E7cCa8219B451C19f27E) (#434)
- ExcludeFromFees(account,_status) (#519)
- setMarketingWallet(0x770BdD792f6471EB28cBccD4F193BB26e8B5B07E) (#433)
- ExcludeFromFees(account,_status) (#519)
- excludeFromFees(deadAddress,true) (#431)
- ExcludeFromFees(account,_status) (#519)
- excludeFromFees(owner,true) (#430)
- ExcludeFromFees(account,_status) (#519)
- setReserveTreasury(0xd01c6969C7Dc0B086f118bA3B4D926Da73acA2c7) (#436)
- SetAutomatedMarketMakerPair(_dexPair,_status) (#570)
- setDexRouter(address(_dexRouter),_dexPair,dexToken) (#427)
Apply the check-effects-interactions pattern.
Additional information: link
LiberaToken._checkAndPayBiggestBuyer(uint256) (#854-870) uses timestamp for comparisons
Dangerous comparisons:
- _currentPeriod > 1 && biggestBuyerAmount[_prevPeriod] > 0 && biggestBuyerPaid[_prevPeriod] == 0 (#857-859)
LiberaToken._accuTaxSystem(uint256,bool) (#904-934) uses timestamp for comparisons
Dangerous comparisons:
- circuitBreakerTime + breakerPeriod < block.timestamp (#908)
- timeDiffGlobal < breakerPeriod (#921)
Avoid relying on block.timestamp.
Additional information: link
LiberaToken.manualNukeLpTokens(address,uint256) (#454-458) compares to a boolean constant:
-require(bool,string)(automatedMarketMakerPairs[_lpAddress] == true,Invalid lpAddress) (#455)
Remove the equality to the boolean constant.
Additional information: link
LiberaToken.setAutomatedMarketMakerPair(address,bool) (#553-571) has costly operations inside a loop:
- _markerPairs.pop() (#564)
Use a local variable to hold the loop computation result.
Additional information: link
Context._msgData() (#74-77) is never used and should be removed
ERC20._burn(address,uint256) (#250-257) is never used and should be removed
ERC20._setupDecimals(uint8) (#267-269) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#59-62) is never used and should be removed
SafeMath.mod(uint256,uint256) (#51-54) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#63-66) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#6-10) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#24-27) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#28-31) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#15-23) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#11-14) is never used and should be removed
Remove unused functions.
Additional information: link
LiberaToken.totalBuyFees (#374) is set pre-construction with a non-constant function or state variable:
- liquidityFee + busdDividendFee + marketingFee + treasuryFee + rewardBuyerFee
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
Function IDEXRouter.WETH() (#280) is not in mixedCase
Parameter LiberaToken.manualNukeLpTokens(address,uint256)._lpAddress (#454) is not in mixedCase
Parameter LiberaToken.manualNukeLpTokens(address,uint256)._percent (#454) is not in mixedCase
Parameter LiberaToken.payBiggestBuyer(uint256)._hour (#507) is not in mixedCase
Parameter LiberaToken.excludeFromFees(address,bool)._status (#516) is not in mixedCase
Parameter LiberaToken.checkIsExcludedFromFees(address)._account (#522) is not in mixedCase
Parameter LiberaToken.setBotBlacklist(address,bool,bool)._statusFrom (#526) is not in mixedCase
Parameter LiberaToken.setBotBlacklist(address,bool,bool)._statusTo (#526) is not in mixedCase
Parameter LiberaToken.setDexRouter(address,address,address)._dexRouter (#537) is not in mixedCase
Parameter LiberaToken.setDexRouter(address,address,address)._dexPair (#537) is not in mixedCase
Parameter LiberaToken.setDexRouter(address,address,address)._dexToken (#537) is not in mixedCase
Parameter LiberaToken.setAutomatedMarketMakerPair(address,bool)._dexPair (#553) is not in mixedCase
Parameter LiberaToken.setAutomatedMarketMakerPair(address,bool)._status (#553) is not in mixedCase
Parameter LiberaToken.setMaxSell(uint256)._amount (#573) is not in mixedCase
Parameter LiberaToken.setMarketingWallet(address)._newAddress (#578) is not in mixedCase
Parameter LiberaToken.setTaxTreasury(address)._newAddress (#583) is not in mixedCase
Parameter LiberaToken.setNukeTreasury(address)._newAddress (#588) is not in mixedCase
Parameter LiberaToken.setBusdTreasury(address)._newAddress (#593) is not in mixedCase
Parameter LiberaToken.setReserveTreasury(address)._newAddress (#598) is not in mixedCase
Parameter LiberaToken.setSwapTokensAtAmount(uint256)._amount (#603) is not in mixedCase
Parameter LiberaToken.setIsNotMigrating(bool)._status (#607) is not in mixedCase
Parameter LiberaToken.setTokenFees(uint256,uint256,uint256,uint256,uint256,uint256)._liquidityFee (#613) is not in mixedCase
Parameter LiberaToken.setTokenFees(uint256,uint256,uint256,uint256,uint256,uint256)._busdDividendFee (#614) is not in mixedCase
Parameter LiberaToken.setTokenFees(uint256,uint256,uint256,uint256,uint256,uint256)._marketingFee (#615) is not in mixedCase
Parameter LiberaToken.setTokenFees(uint256,uint256,uint256,uint256,uint256,uint256)._treasuryFee (#616) is not in mixedCase
Parameter LiberaToken.setTokenFees(uint256,uint256,uint256,uint256,uint256,uint256)._rewardBuyerFee (#617) is not in mixedCase
Parameter LiberaToken.setTokenFees(uint256,uint256,uint256,uint256,uint256,uint256)._totalSellFees (#618) is not in mixedCase
Parameter LiberaToken.setFeesOnNormalTransfers(bool,uint256)._status (#635) is not in mixedCase
Parameter LiberaToken.setFeesOnNormalTransfers(bool,uint256)._normalTransferFee (#635) is not in mixedCase
Parameter LiberaToken.setLpNukeEnabled(bool,uint256,bool,uint256,uint256)._status (#640) is not in mixedCase
Parameter LiberaToken.setLpNukeEnabled(bool,uint256,bool,uint256,uint256)._percent (#640) is not in mixedCase
Parameter LiberaToken.setLpNukeEnabled(bool,uint256,bool,uint256,uint256)._auto (#640) is not in mixedCase
Parameter LiberaToken.setLpNukeEnabled(bool,uint256,bool,uint256,uint256)._minNukeAmount (#640) is not in mixedCase
Parameter LiberaToken.setLpNukeEnabled(bool,uint256,bool,uint256,uint256)._nukePercentToBurn (#640) is not in mixedCase
Parameter LiberaToken.setIsRewardBiggestBuyer(bool,uint256)._status (#658) is not in mixedCase
Parameter LiberaToken.setIsRewardBiggestBuyer(bool,uint256)._biggestBuyerPeriod (#658) is not in mixedCase
Parameter LiberaToken.setFeesOnBreaker(bool,bool,uint256,int256,uint256,uint256)._isBreakerEnable (#886) is not in mixedCase
Parameter LiberaToken.setFeesOnBreaker(bool,bool,uint256,int256,uint256,uint256)._breakerOnSellOnly (#886) is not in mixedCase
Parameter LiberaToken.setFeesOnBreaker(bool,bool,uint256,int256,uint256,uint256)._breakerPeriod (#886) is not in mixedCase
Parameter LiberaToken.setFeesOnBreaker(bool,bool,uint256,int256,uint256,uint256)._breakerPercent (#886) is not in mixedCase
Parameter LiberaToken.setFeesOnBreaker(bool,bool,uint256,int256,uint256,uint256)._breakerBuyFee (#887) is not in mixedCase
Parameter LiberaToken.setFeesOnBreaker(bool,bool,uint256,int256,uint256,uint256)._breakerSellFee (#887) is not in mixedCase
Parameter LiberaToken.setLiquidityParams(address,bool,address)._autoLiquidityTreasury (#947) is not in mixedCase
Parameter LiberaToken.setLiquidityParams(address,bool,address)._autoLiquidityCall (#947) is not in mixedCase
Parameter LiberaToken.setLiquidityParams(address,bool,address)._liquidityToken (#947) is not in mixedCase
Parameter LiberaToken.retrieveTokens(address)._token (#954) is not in mixedCase
Constant LiberaToken.deadAddress (#351) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Reentrancy in LiberaToken._checkAndPayBiggestBuyer(uint256) (#854-870):
External calls:
- _transferBNBToWallet(address(biggestBuyer[_prevPeriod]),_rewardAmount) (#863)
- recipient.transfer(amount) (#851)
State variables written after the call(s):
- biggestBuyerPaid[_prevPeriod] = _rewardAmount (#865)
- totalBiggestBuyerPaid = totalBiggestBuyerPaid + _rewardAmount (#864)
Event emitted after the call(s):
- PayBiggestBuyer(biggestBuyer[_prevPeriod],_prevPeriod,_rewardAmount) (#867)
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
State variables written after the call(s):
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- _balances[sender] = _balances[sender].sub(amount,exceeds balance) (#236)
- _balances[recipient] = _balances[recipient].add(amount) (#237)
- super._transfer(from,address(this),fees) (#766)
- _balances[sender] = _balances[sender].sub(amount,exceeds balance) (#236)
- _balances[recipient] = _balances[recipient].add(amount) (#237)
- super._transfer(from,to,amount) (#770)
- _balances[sender] = _balances[sender].sub(amount,exceeds balance) (#236)
- _balances[recipient] = _balances[recipient].add(amount) (#237)
- biggestBuyer[_periodAfterLaunch] = to (#777)
- biggestBuyerAmount[_periodAfterLaunch] = amount (#778)
- _accuTaxSystem(amount,isBuying) (#734)
- circuitBreakerFlag = 2 (#881)
- circuitBreakerFlag = 1 (#874)
- _accuTaxSystem(amount,false) (#736)
- circuitBreakerFlag = 2 (#881)
- circuitBreakerFlag = 1 (#874)
- _accuTaxSystem(amount,isBuying) (#734)
- circuitBreakerTime = block.timestamp (#882)
- _accuTaxSystem(amount,false) (#736)
- circuitBreakerTime = block.timestamp (#882)
- nextSellTax[from] = 0 (#746)
- swapping = false (#727)
- _accuTaxSystem(amount,isBuying) (#734)
- taxBreakerCheck = 1 (#875)
- taxBreakerCheck = _taxBreakerCheck (#932)
- _accuTaxSystem(amount,false) (#736)
- taxBreakerCheck = 1 (#875)
- taxBreakerCheck = _taxBreakerCheck (#932)
- _accuTaxSystem(amount,isBuying) (#734)
- timeBreakerCheck = block.timestamp.sub(1) (#876)
- timeBreakerCheck = _timeBreakerCheck (#933)
- _accuTaxSystem(amount,false) (#736)
- timeBreakerCheck = block.timestamp.sub(1) (#876)
- timeBreakerCheck = _timeBreakerCheck (#933)
Event emitted after the call(s):
- AutoLpErrorEvent(reason) (#800)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
- CircuitBreakerActivated() (#883)
- _accuTaxSystem(amount,isBuying) (#734)
- CircuitBreakerActivated() (#883)
- _accuTaxSystem(amount,false) (#736)
- Transfer(sender,recipient,amount) (#238)
- super._transfer(from,to,amount) (#770)
- Transfer(sender,recipient,amount) (#238)
- super._transfer(from,address(this),fees) (#766)
- Transfer(sender,recipient,amount) (#238)
- _swapAndLiquify(contractTokenBalance.mul(liquidityFee).div(totalBuyFees)) (#717)
Reentrancy in LiberaToken._transfer(address,address,uint256) (#671-792):
External calls:
- _transferBNBToWallet(address(marketingWallet),marketingAmount) (#707)
- recipient.transfer(amount) (#851)
- _transferBNBToWallet(address(taxTreasury),treasuryAmount) (#711)
- recipient.transfer(amount) (#851)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- recipient.transfer(amount) (#851)
State variables written after the call(s):
- _nukeLpTokenFromBuildup() (#789)
- _balances[sender] = _balances[sender].sub(amount,exceeds balance) (#236)
- _balances[recipient] = _balances[recipient].add(amount) (#237)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- biggestBuyerPaid[_prevPeriod] = _rewardAmount (#865)
- lpNukeBuildup[to] += amount.mul(nukePercentPerSell).div(10000) (#786)
- _nukeLpTokenFromBuildup() (#789)
- lpNukeBuildup[lpAddress] = 0 (#484)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- totalBiggestBuyerPaid = totalBiggestBuyerPaid + _rewardAmount (#864)
- _nukeLpTokenFromBuildup() (#789)
- totalNuked = totalNuked + amount (#485)
Event emitted after the call(s):
- PayBiggestBuyer(biggestBuyer[_prevPeriod],_prevPeriod,_rewardAmount) (#867)
- _checkAndPayBiggestBuyer(_periodAfterLaunch) (#782)
- SyncLpErrorEvent(lpAddress,reason) (#500)
- _nukeLpTokenFromBuildup() (#789)
- Transfer(sender,recipient,amount) (#238)
- _nukeLpTokenFromBuildup() (#789)
Apply the check-effects-interactions pattern.
Additional information: link
LiberaToken.busdToken (#353) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
authorize(address) should be declared external:
- Auth.authorize(address) (#97-100)
unauthorize(address) should be declared external:
- Auth.unauthorize(address) (#102-105)
transferOwnership(address) should be declared external:
- Auth.transferOwnership(address) (#115-119)
name() should be declared external:
- ERC20.name() (#180-182)
symbol() should be declared external:
- ERC20.symbol() (#184-186)
decimals() should be declared external:
- ERC20.decimals() (#188-190)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#200-203)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#205-207)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#214-218)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#220-223)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#225-228)
circulatingSupply() should be declared external:
- LiberaToken.circulatingSupply() (#445-447)
setNextSellTax(address,uint256) should be declared external:
- LiberaToken.setNextSellTax(address,uint256) (#511-514)
setBotBlacklist(address,bool,bool) should be declared external:
- LiberaToken.setBotBlacklist(address,bool,bool) (#526-535)
Use the external attribute for functions never called from the contract.
Additional information: link
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of price dump / death
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of price dump / death
Token has relatively low CoinGecko rank