Libero Financial Freedom Token Logo

LIBERO [Libero Financial Freedom] Token

About LIBERO

Listings

Token 10 months
CoinGecko 9 months
CoinMarketCap 10 months
[CoinGecko] alert: The following token has a variable tax function on the smart contract - which allows contract owners to change tax rates post deployment.
Do your own research and be careful if you are trading this token.
white paper

Libero Financial is an auto-staking token that lets each token holder become a Stakeholder. With our positive rebase formula, Libero is creating a new type of elastic token, allowing $LIBERO holders to earn staking rewards just by holding. The auto staking & compounding mechanism makes 2.04% rewards per day become a fixed APY of 158,893.59% plus 226% BUSD APR passive income from Trading Volume.

Libero Financial is also a DeFi 3.0 Farming as a Service protocol with Risk Free Value (RFV) funds accumulated from a portion of buy & sell fee. This fund is stored in stable coin, and bridged to multi-chain and farm at the most attracting yield farms. The profit is used to better support $Libero price floor & stability.

Laser Scorebeta Last Audit: 9 September 2022

report
Token seems to be (relatively) fine. It still become a scam, but probability is moderate.

Reentrancy in LiberoToken._transferFrom(address,address,uint256) (#462-504):
External calls:
- swapBack() (#481)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#555-564)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#572-578)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#586-592)
External calls sending eth:
- swapBack() (#481)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
State variables written after the call(s):
- _gonBalances[sender] = _gonBalances[sender].sub(gonAmount) (#484)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonAmountReceived) (#487)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#486)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(feeAmount) (#626)
- _rebase() (#496)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (#694)
Apply the check-effects-interactions pattern.

Additional information: link


Contract ownership is not renounced (belongs to a wallet)

LiberoToken.setAutomatedMarketMakerPair(address,bool) (#713-732) has costly operations inside a loop:
- _markerPairs.pop() (#725)
Use a local variable to hold the loop computation result.

Additional information: link


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

SafeMathInt.MAX_INT256 (#11) is never used in SafeMathInt (#9-43)
Remove unused state variables.

Additional information: link

LiberoToken.totalBuyFee (#324) is set pre-construction with a non-constant function or state variable:
- liquidityFee.add(treasuryFee).add(buyFeeRFV)
LiberoToken.totalSellFee (#325) is set pre-construction with a non-constant function or state variable:
- totalBuyFee.add(sellFeeTreasuryAdded).add(sellFeeRFVAdded)
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.

Additional information: link

Pragma version^0.7.4 (#7) allows old versions
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.

Additional information: link

LiberoToken.DEAD (#308) should be constant
LiberoToken.ZERO (#309) should be constant
LiberoToken.busdToken (#314) should be constant
Add the constant attributes to state variables that never change.

Additional information: link

Variable IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#180) is too similar to IDEXRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#181)
Prevent variables from having similar names.

Additional information: link

LiberoToken.swapBack() (#595-618) performs a multiplication on the result of a division:
-contractTokenBalance = _gonBalances[address(this)].div(_gonsPerFragment) (#599)
-amountToLiquify = contractTokenBalance.mul(dynamicLiquidityFee.mul(2)).div(realTotalFee) (#601)
LiberoToken.swapBack() (#595-618) performs a multiplication on the result of a division:
-contractTokenBalance = _gonBalances[address(this)].div(_gonsPerFragment) (#599)
-amountToRFV = contractTokenBalance.mul(buyFeeRFV.mul(2).add(sellFeeRFVAdded)).div(realTotalFee) (#602)
LiberoToken.setSwapBackSettings(bool,uint256,uint256) (#749-752) performs a multiplication on the result of a division:
-gonSwapThreshold = TOTAL_GONS.div(_denom).mul(_num) (#751)
Consider ordering multiplication before division.

Additional information: link

LiberoToken.constructor() (#351-378) ignores return value by IERC20(busdToken).approve(address(router),uint256(- 1)) (#373)
LiberoToken.constructor() (#351-378) ignores return value by IERC20(busdToken).approve(address(pairBusd),uint256(- 1)) (#374)
LiberoToken.constructor() (#351-378) ignores return value by IERC20(busdToken).approve(address(this),uint256(- 1)) (#375)
LiberoToken.getLiquidityBacking(uint256) (#429-435) ignores return value by liquidityBalance.add(balanceOf(_markerPairs[i]).div(10 ** 9)) (#432)
LiberoToken._addLiquidity(uint256,uint256) (#544-553) ignores return value by router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
LiberoToken._addLiquidityBusd(uint256,uint256) (#554-565) ignores return value by router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#555-564)
Ensure that all the return values of the function calls are used.

Additional information: link

LiberoToken.setFeeReceivers(address,address,address)._liquidityReceiver (#754) lacks a zero-check on :
- liquidityReceiver = _liquidityReceiver (#755)
LiberoToken.setFeeReceivers(address,address,address)._treasuryReceiver (#754) lacks a zero-check on :
- treasuryReceiver = _treasuryReceiver (#756)
LiberoToken.setFeeReceivers(address,address,address)._riskFreeValueReceiver (#754) lacks a zero-check on :
- riskFreeValueReceiver = _riskFreeValueReceiver (#757)
LiberoToken.clearStuckBalance(address)._receiver (#781) lacks a zero-check on :
- address(_receiver).transfer(balance) (#783)
Check that the address is not zero.

Additional information: link

Reentrancy in LiberoToken._swapAndLiquify(uint256) (#517-542):
External calls:
- _swapTokensForBNB(half,address(this)) (#524)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#572-578)
- _addLiquidity(otherHalf,newBalance) (#528)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
External calls sending eth:
- _addLiquidity(otherHalf,newBalance) (#528)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
Event emitted after the call(s):
- SwapAndLiquify(half,newBalance,otherHalf) (#530)
Reentrancy in LiberoToken._swapAndLiquify(uint256) (#517-542):
External calls:
- _swapTokensForBusd(half,address(this)) (#534)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#586-592)
- _addLiquidityBusd(otherHalf,newBalance_scope_1) (#538)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#555-564)
Event emitted after the call(s):
- SwapAndLiquifyBusd(half,newBalance_scope_1,otherHalf) (#540)
Reentrancy in LiberoToken._transferFrom(address,address,uint256) (#462-504):
External calls:
- swapBack() (#481)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#555-564)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#572-578)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#586-592)
External calls sending eth:
- swapBack() (#481)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
Event emitted after the call(s):
- LogRebase(epoch,_totalSupply) (#680)
- _rebase() (#496)
- LogRebase(epoch,_totalSupply) (#698)
- _rebase() (#496)
- Transfer(sender,address(this),feeAmount.div(_gonsPerFragment)) (#627)
- gonAmountReceived = takeFee(sender,recipient,gonAmount) (#486)
- Transfer(sender,recipient,gonAmountReceived.div(_gonsPerFragment)) (#489-493)
Reentrancy in LiberoToken.constructor() (#351-378):
External calls:
- pair = IDEXFactory(router.factory()).createPair(address(this),router.WETH()) (#353)
- pairBusd = IDEXFactory(router.factory()).createPair(address(this),busdToken) (#354)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(_pair,_value) (#731)
- setAutomatedMarketMakerPair(pair,true) (#361)
- SetAutomatedMarketMakerPair(_pair,_value) (#731)
- setAutomatedMarketMakerPair(pairBusd,true) (#362)
Reentrancy in LiberoToken.constructor() (#351-378):
External calls:
- pair = IDEXFactory(router.factory()).createPair(address(this),router.WETH()) (#353)
- pairBusd = IDEXFactory(router.factory()).createPair(address(this),busdToken) (#354)
- IERC20(busdToken).approve(address(router),uint256(- 1)) (#373)
- IERC20(busdToken).approve(address(pairBusd),uint256(- 1)) (#374)
- IERC20(busdToken).approve(address(this),uint256(- 1)) (#375)
Event emitted after the call(s):
- Transfer(address(0x0),msg.sender,_totalSupply) (#377)
Reentrancy in LiberoToken.swapBack() (#595-618):
External calls:
- _swapAndLiquify(amountToLiquify) (#606)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#555-564)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#572-578)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#586-592)
- _swapTokensForBusd(amountToRFV,riskFreeValueReceiver) (#610)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#586-592)
- _swapTokensForBNB(amountToTreasury,treasuryReceiver) (#614)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#572-578)
External calls sending eth:
- _swapAndLiquify(amountToLiquify) (#606)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
Event emitted after the call(s):
- SwapBack(contractTokenBalance,amountToLiquify,amountToRFV,amountToTreasury) (#617)
Apply the check-effects-interactions pattern.

Additional information: link

LiberoToken.manualSync() (#441-445) has external calls inside a loop: InterfaceLP(_markerPairs[i]).sync() (#443)
Favor pull over push strategy for external calls.

Additional information: link

LiberoToken.shouldRebase() (#402-404) uses timestamp for comparisons
Dangerous comparisons:
- nextRebase <= block.timestamp (#403)
LiberoToken._transferFrom(address,address,uint256) (#462-504) uses timestamp for comparisons
Dangerous comparisons:
- shouldRebase() && autoRebase (#495)
LiberoToken.manualRebase() (#702-711) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(nextRebase <= block.timestamp,Not in time) (#704)
Avoid relying on block.timestamp.

Additional information: link

Roles.add(Roles.Role,address) (#128-131) is never used and should be removed
Roles.has(Roles.Role,address) (#138-141) is never used and should be removed
Roles.remove(Roles.Role,address) (#133-136) is never used and should be removed
SafeMath.mod(uint256,uint256) (#113-116) is never used and should be removed
SafeMathInt.abs(int256) (#39-42) is never used and should be removed
SafeMathInt.add(int256,int256) (#33-37) is never used and should be removed
SafeMathInt.div(int256,int256) (#21-25) is never used and should be removed
SafeMathInt.mul(int256,int256) (#13-19) is never used and should be removed
SafeMathInt.sub(int256,int256) (#27-31) is never used and should be removed
Remove unused functions.

Additional information: link

LiberoToken.slitherConstructorVariables() (#279-829) uses literals with too many digits:
- rewardYieldDenominator = 10000000000 (#290)
LiberoToken.slitherConstructorVariables() (#279-829) uses literals with too many digits:
- maxSellTransactionAmount = 2500000 * 10 ** 18 (#291)
LiberoToken.slitherConstructorVariables() (#279-829) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#308)
LiberoToken.slitherConstructorVariables() (#279-829) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#309)
Use: Ether suffix, Time suffix, or The scientific notation

Additional information: link

name() should be declared external:
- ERC20Detailed.name() (#159-161)
symbol() should be declared external:
- ERC20Detailed.symbol() (#163-165)
decimals() should be declared external:
- ERC20Detailed.decimals() (#167-169)
owner() should be declared external:
- Ownable.owner() (#254-256)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#263-266)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#268-270)
Use the external attribute for functions never called from the contract.

Additional information: link

LiberoToken.setTargetLiquidity(uint256,uint256) (#744-747) should emit an event for:
- targetLiquidity = target (#745)
- targetLiquidityDenominator = accuracy (#746)
LiberoToken.setSwapBackSettings(bool,uint256,uint256) (#749-752) should emit an event for:
- gonSwapThreshold = TOTAL_GONS.div(_denom).mul(_num) (#751)
LiberoToken.setFees(uint256,uint256,uint256,uint256,uint256,uint256) (#760-779) should emit an event for:
- liquidityFee = _liquidityFee (#770)
- buyFeeRFV = _riskFreeValue (#771)
- treasuryFee = _treasuryFee (#772)
- sellFeeTreasuryAdded = _sellFeeTreasuryAdded (#773)
- sellFeeRFVAdded = _sellFeeRFVAdded (#774)
- totalBuyFee = liquidityFee.add(treasuryFee).add(buyFeeRFV) (#775)
- totalSellFee = totalBuyFee.add(sellFeeTreasuryAdded).add(sellFeeRFVAdded) (#776)
- feeDenominator = _feeDenominator (#777)
LiberoToken.setRebaseFrequency(uint256) (#795-798) should emit an event for:
- rebaseFrequency = _rebaseFrequency (#797)
LiberoToken.setRewardYield(uint256,uint256) (#800-803) should emit an event for:
- rewardYield = _rewardYield (#801)
- rewardYieldDenominator = _rewardYieldDenominator (#802)
LiberoToken.setNextRebase(uint256) (#815-817) should emit an event for:
- nextRebase = _nextRebase (#816)
LiberoToken.setMaxSellTransaction(uint256) (#819-821) should emit an event for:
- maxSellTransactionAmount = _maxTxn (#820)
Emit an event for critical parameter changes.

Additional information: link

Reentrancy in LiberoToken._transferFrom(address,address,uint256) (#462-504):
External calls:
- swapBack() (#481)
- router.addLiquidity(address(this),busdToken,tokenAmount,busdAmount,0,0,liquidityReceiver,block.timestamp) (#555-564)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#572-578)
- router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (#586-592)
External calls sending eth:
- swapBack() (#481)
- router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,liquidityReceiver,block.timestamp) (#545-552)
State variables written after the call(s):
- _rebase() (#496)
- _totalSupply = _totalSupply.sub(uint256(- supplyDelta)) (#685)
- _totalSupply = _totalSupply.add(uint256(supplyDelta)) (#687)
- _totalSupply = MAX_SUPPLY (#691)
- _rebase() (#496)
- nextRebase = epoch + rebaseFrequency (#696)
Reentrancy in LiberoToken.constructor() (#351-378):
External calls:
- pair = IDEXFactory(router.factory()).createPair(address(this),router.WETH()) (#353)
- pairBusd = IDEXFactory(router.factory()).createPair(address(this),busdToken) (#354)
State variables written after the call(s):
- _allowedFragments[address(this)][address(router)] = uint256(- 1) (#356)
- _allowedFragments[address(this)][pair] = uint256(- 1) (#357)
- _allowedFragments[address(this)][address(this)] = uint256(- 1) (#358)
- _allowedFragments[address(this)][pairBusd] = uint256(- 1) (#359)
- _gonBalances[msg.sender] = TOTAL_GONS (#365)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (#366)
- _isFeeExempt[treasuryReceiver] = true (#368)
- _isFeeExempt[riskFreeValueReceiver] = true (#369)
- _isFeeExempt[address(this)] = true (#370)
- _isFeeExempt[msg.sender] = true (#371)
- setAutomatedMarketMakerPair(pair,true) (#361)
- _markerPairs.push(_pair) (#719)
- _markerPairs[i] = _markerPairs[_markerPairs.length - 1] (#724)
- _markerPairs.pop() (#725)
- setAutomatedMarketMakerPair(pairBusd,true) (#362)
- _markerPairs.push(_pair) (#719)
- _markerPairs[i] = _markerPairs[_markerPairs.length - 1] (#724)
- _markerPairs.pop() (#725)
- _totalSupply = INITIAL_FRAGMENTS_SUPPLY (#364)
- setAutomatedMarketMakerPair(pair,true) (#361)
- automatedMarketMakerPairs[_pair] = _value (#716)
- setAutomatedMarketMakerPair(pairBusd,true) (#362)
- automatedMarketMakerPairs[_pair] = _value (#716)
Apply the check-effects-interactions pattern.

Additional information: link

Function IDEXRouter.WETH() (#175) is not in mixedCase
Parameter LiberoToken.checkFeeExempt(address)._addr (#394) is not in mixedCase
Parameter LiberoToken.setAutomatedMarketMakerPair(address,bool)._pair (#713) is not in mixedCase
Parameter LiberoToken.setAutomatedMarketMakerPair(address,bool)._value (#713) is not in mixedCase
Parameter LiberoToken.setInitialDistributionFinished(bool)._value (#734) is not in mixedCase
Parameter LiberoToken.setFeeExempt(address,bool)._addr (#739) is not in mixedCase
Parameter LiberoToken.setFeeExempt(address,bool)._value (#739) is not in mixedCase
Parameter LiberoToken.setSwapBackSettings(bool,uint256,uint256)._enabled (#749) is not in mixedCase
Parameter LiberoToken.setSwapBackSettings(bool,uint256,uint256)._num (#749) is not in mixedCase
Parameter LiberoToken.setSwapBackSettings(bool,uint256,uint256)._denom (#749) is not in mixedCase
Parameter LiberoToken.setFeeReceivers(address,address,address)._liquidityReceiver (#754) is not in mixedCase
Parameter LiberoToken.setFeeReceivers(address,address,address)._treasuryReceiver (#754) is not in mixedCase
Parameter LiberoToken.setFeeReceivers(address,address,address)._riskFreeValueReceiver (#754) is not in mixedCase
Parameter LiberoToken.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._liquidityFee (#760) is not in mixedCase
Parameter LiberoToken.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._riskFreeValue (#760) is not in mixedCase
Parameter LiberoToken.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._treasuryFee (#760) is not in mixedCase
Parameter LiberoToken.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._sellFeeTreasuryAdded (#760) is not in mixedCase
Parameter LiberoToken.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._sellFeeRFVAdded (#760) is not in mixedCase
Parameter LiberoToken.setFees(uint256,uint256,uint256,uint256,uint256,uint256)._feeDenominator (#760) is not in mixedCase
Parameter LiberoToken.clearStuckBalance(address)._receiver (#781) is not in mixedCase
Parameter LiberoToken.setAutoRebase(bool)._autoRebase (#790) is not in mixedCase
Parameter LiberoToken.setRebaseFrequency(uint256)._rebaseFrequency (#795) is not in mixedCase
Parameter LiberoToken.setRewardYield(uint256,uint256)._rewardYield (#800) is not in mixedCase
Parameter LiberoToken.setRewardYield(uint256,uint256)._rewardYieldDenominator (#800) is not in mixedCase
Parameter LiberoToken.setFeesOnNormalTransfers(bool)._enabled (#805) is not in mixedCase
Parameter LiberoToken.setIsLiquidityInBnb(bool)._value (#810) is not in mixedCase
Parameter LiberoToken.setNextRebase(uint256)._nextRebase (#815) is not in mixedCase
Parameter LiberoToken.setMaxSellTransaction(uint256)._maxTxn (#819) is not in mixedCase
Variable LiberoToken._isFeeExempt (#296) is not in mixedCase
Variable LiberoToken._markerPairs (#297) is not in mixedCase
Variable LiberoToken.DEAD (#308) is not in mixedCase
Variable LiberoToken.ZERO (#309) is not in mixedCase
Follow the Solidity naming convention.

Additional information: link

Holders:

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


Token is deployed only at one blockchain

No disclosed threats


Unable to find token on CoinHunt

Additional information: link


Token has relatively low CoinGecko rank


Young tokens have high risks of price dump / death


Young tokens have high risks of price dump / death


Young tokens have high risks of price dump / death


Token has relatively low CoinMarketCap rank

Price for LIBERO

News for LIBERO