The Launchpad platform combined with the ERC-31337 protocol, will allow for The Launch Network team to accomplish multiple things that have not been possible in the past, first the KYC/Vetted projects by the team will be able to use our services to launch their token with no need to lock any tokens, instead, clients will use HFUEL to pay for the services with a “Pay to Play” model, a one-time payment in HFUEL that will take a percentage to feed the revenue splitter to incentivize the community of NFT holders and HNW stakeholders, another percentage of their tokens will go to the “Combustion Chamber” (Burn Tokens) hence the name HFUEL. The aim is to bring successful KYC projects to market through The Launch Network and also provide a secure launchpad for non-KYC projects that will in turn, also contribute to the profit-sharing opportunity. The launchpad will operate on a pay-to-play model where clients can pay a one-time fee to launch their project mitigating risk by avoiding the need to lock any tokens. The revenue generated by the launchpad services will then be redistributed to various avenues, including HNW stakeholders and launchpad NFT holders, creating a sustainable and integrated profit-sharing ecosystem. The launchpad revenue will be distributed as a 40/40/20 percent split, as follows: 40% to HNW (stakeholders 25%; liquidity 10%; marketing 5%); 40% to launchpad Lazarus Pit NFT holders; 20% to the “Combustion Chamber” and “Fuel Tank” - a burning & redistribution mechanism that will serve to reduce the circulating supply and reward HFUEL liquidity providers, thereby strengthening the price floor of HFUEL.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
LiquidityLockedERC20.balanceOf(address) (contracts/LiquidityLockedERC20.sol#45-63) uses a dangerous strict equality:
- require(bool,string)(last.origin == tx.origin && last.blockNumber == block.number,Liquidity is locked) (contracts/LiquidityLockedERC20.sol#50)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
LiquidityLockedERC20.balanceOf(address) (contracts/LiquidityLockedERC20.sol#45-63) uses tx.origin for authorization: require(bool,string)(last.origin == tx.origin && last.blockNumber == block.number,Liquidity is locked) (contracts/LiquidityLockedERC20.sol#50)
Do not use tx.origin for authorization.
Additional information: link
Owned.transferOwnership(address).newOwner (contracts/Owned.sol#24) lacks a zero-check on :
- pendingOwner = newOwner (contracts/Owned.sol#26)
RootedToken.setMinter(address)._minter (contracts/RootedToken.sol#29) lacks a zero-check on :
- minter = _minter (contracts/RootedToken.sol#30)
Check that the address is not zero.
Additional information: link
Reentrancy in GatedERC20._transfer(address,address,uint256) (contracts/GatedERC20.sol#34-61):
External calls:
- fees = _transferGate.handleTransfer(msg.sender,sender,recipient,amount) (contracts/GatedERC20.sol#50)
State variables written after the call(s):
- _balanceOf[splitter] = _balanceOf[splitter].add(fees) (contracts/GatedERC20.sol#53)
- _balanceOf[sender] = _balanceOf[sender].sub(amount,ERC20: transfer amount exceeds balance) (contracts/GatedERC20.sol#58)
- _balanceOf[recipient] = _balanceOf[recipient].add(remaining) (contracts/GatedERC20.sol#59)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in GatedERC20._transfer(address,address,uint256) (contracts/GatedERC20.sol#34-61):
External calls:
- fees = _transferGate.handleTransfer(msg.sender,sender,recipient,amount) (contracts/GatedERC20.sol#50)
Event emitted after the call(s):
- Transfer(sender,splitter,fees) (contracts/GatedERC20.sol#54)
- Transfer(sender,recipient,remaining) (contracts/GatedERC20.sol#60)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (contracts/Address.sol#25-34) uses assembly
- INLINE ASM (contracts/Address.sol#32)
Address._verifyCallResult(bool,bytes,string) (contracts/Address.sol#170-187) uses assembly
- INLINE ASM (contracts/Address.sol#179-182)
Do not use evm assembly.
Additional information: link
Address.functionCall(address,bytes) (contracts/Address.sol#78-80) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (contracts/Address.sol#103-105) is never used and should be removed
Address.functionDelegateCall(address,bytes) (contracts/Address.sol#152-154) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (contracts/Address.sol#162-168) is never used and should be removed
Address.functionStaticCall(address,bytes) (contracts/Address.sol#128-130) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (contracts/Address.sol#138-144) is never used and should be removed
Address.sendValue(address,uint256) (contracts/Address.sol#52-58) is never used and should be removed
ERC20._setupDecimals(uint8) (contracts/ERC20.sol#243-245) is never used and should be removed
ERC20._transfer(address,address,uint256) (contracts/ERC20.sol#164-173) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (contracts/SafeERC20.sol#41-43) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (contracts/SafeERC20.sol#30-32) is never used and should be removed
SafeMath.div(uint256,uint256) (contracts/SafeMath.sol#40-43) is never used and should be removed
SafeMath.div(uint256,uint256,string) (contracts/SafeMath.sol#45-50) is never used and should be removed
SafeMath.mod(uint256,uint256) (contracts/SafeMath.sol#52-55) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (contracts/SafeMath.sol#57-61) is never used and should be removed
SafeMath.mul(uint256,uint256) (contracts/SafeMath.sol#25-38) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.7.4 (contracts/Address.sol#2) allows old versions
Pragma version^0.7.4 (contracts/ERC20.sol#2) allows old versions
Pragma version^0.7.4 (contracts/GatedERC20.sol#2) allows old versions
Pragma version^0.7.4 (contracts/IERC20.sol#2) allows old versions
Pragma version^0.7.4 (contracts/IGatedERC20.sol#2) allows old versions
Pragma version^0.7.4 (contracts/ILiquidityLockedERC20.sol#2) allows old versions
Pragma version^0.7.4 (contracts/IOwned.sol#2) allows old versions
Pragma version^0.7.4 (contracts/IPancakePair.sol#2) allows old versions
Pragma version^0.7.4 (contracts/IPancakeRouter01.sol#2) allows old versions
Pragma version^0.7.4 (contracts/IPancakeRouter02.sol#2) allows old versions
Pragma version^0.7.4 (contracts/ITokensRecoverable.sol#2) allows old versions
Pragma version^0.7.4 (contracts/ITransferGate.sol#2) allows old versions
Pragma version^0.7.4 (contracts/LiquidityLockedERC20.sol#2) allows old versions
Pragma version^0.7.4 (contracts/Owned.sol#2) allows old versions
Pragma version^0.7.4 (contracts/RootedToken.sol#2) allows old versions
Pragma version^0.7.4 (contracts/SafeERC20.sol#2) allows old versions
Pragma version^0.7.4 (contracts/SafeMath.sol#2) allows old versions
Pragma version^0.7.4 (contracts/TokensRecoverable.sol#2) allows old versions
solc-0.7.4 is not recommended for deployment
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Low level call in Address.sendValue(address,uint256) (contracts/Address.sol#52-58):
- (success) = recipient.call{value: amount}() (contracts/Address.sol#56)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (contracts/Address.sol#113-120):
- (success,returndata) = target.call{value: value}(data) (contracts/Address.sol#118)
Low level call in Address.functionStaticCall(address,bytes,string) (contracts/Address.sol#138-144):
- (success,returndata) = target.staticcall(data) (contracts/Address.sol#142)
Low level call in Address.functionDelegateCall(address,bytes,string) (contracts/Address.sol#162-168):
- (success,returndata) = target.delegatecall(data) (contracts/Address.sol#166)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable ERC20._balanceOf (contracts/ERC20.sol#41) is not in mixedCase
Parameter GatedERC20.setTransferGate(ITransferGate)._transferGate (contracts/GatedERC20.sol#29) is not in mixedCase
Function IPancakePair.DOMAIN_SEPARATOR() (contracts/IPancakePair.sol#19) is not in mixedCase
Function IPancakePair.PERMIT_TYPEHASH() (contracts/IPancakePair.sol#20) is not in mixedCase
Function IPancakePair.MINIMUM_LIQUIDITY() (contracts/IPancakePair.sol#37) is not in mixedCase
Function IPancakeRouter01.WETH() (contracts/IPancakeRouter01.sol#6) is not in mixedCase
Parameter LiquidityLockedERC20.setLiquidityLock(IPancakePair,bool)._liquidityPair (contracts/LiquidityLockedERC20.sol#32) is not in mixedCase
Parameter LiquidityLockedERC20.setLiquidityLock(IPancakePair,bool)._locked (contracts/LiquidityLockedERC20.sol#32) is not in mixedCase
Parameter LiquidityLockedERC20.setLiquidityController(address,bool)._liquidityController (contracts/LiquidityLockedERC20.sol#39) is not in mixedCase
Parameter LiquidityLockedERC20.setLiquidityController(address,bool)._canControl (contracts/LiquidityLockedERC20.sol#39) is not in mixedCase
Parameter RootedToken.setMinter(address)._minter (contracts/RootedToken.sol#29) is not in mixedCase
Parameter RootedToken.allowBalance(bool)._transferFrom (contracts/RootedToken.sol#39) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/IPancakeRouter01.sol#11) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/IPancakeRouter01.sol#12)
Prevent variables from having similar names.
Additional information: link
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (contracts/ERC20.sol#87-90)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (contracts/ERC20.sol#126-129)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (contracts/ERC20.sol#145-148)
setTransferGate(ITransferGate) should be declared external:
- GatedERC20.setTransferGate(ITransferGate) (contracts/GatedERC20.sol#29-32)
burn(uint256) should be declared external:
- GatedERC20.burn(uint256) (contracts/GatedERC20.sol#63-66)
setLiquidityLock(IPancakePair,bool) should be declared external:
- LiquidityLockedERC20.setLiquidityLock(IPancakePair,bool) (contracts/LiquidityLockedERC20.sol#32-37)
setLiquidityController(address,bool) should be declared external:
- LiquidityLockedERC20.setLiquidityController(address,bool) (contracts/LiquidityLockedERC20.sol#39-42)
transferOwnership(address) should be declared external:
- Owned.transferOwnership(address) (contracts/Owned.sol#24-27)
claimOwnership() should be declared external:
- Owned.claimOwnership() (contracts/Owned.sol#29-35)
setMinter(address) should be declared external:
- RootedToken.setMinter(address) (contracts/RootedToken.sol#29-31)
mint(uint256) should be declared external:
- RootedToken.mint(uint256) (contracts/RootedToken.sol#33-37)
recoverTokens(IERC20) should be declared external:
- TokensRecoverable.recoverTokens(IERC20) (contracts/TokensRecoverable.sol#18-22)
Use the external attribute for functions never called from the contract.
Additional information: link
Token is deployed only at one blockchain
Token has only one trading pair
Contract has 5% buy tax and 0% sell tax.
Taxes are low and contract ownership is renounced.
Unable to find PancakeSwap trading pair to compute liquidity.
Unable to find PancakeSwap trading pair to compute number of swaps.
Unable to find token contract audit
Unable to find audit link on the website
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
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 scam / 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 CoinGecko rank
Last post in Twitter was more than 30 days ago
Unable to find Blog account (Reddit or Medium)
Unable to find Discord account