What Is OMAX TOKEN (OMAX)?
OMAX is a community-driven token which was launched on 3rd of November 2021 in binance network with the
intention to have its own blockchain to educate the next
generation of investors and make crypto simple and safe for everyone.
OMAX is one of the fastest growing projects which is
moving from BEP20 to their own network (blockchain
OMX20) which is also a EVM compatible. It is way ahead of the roadmaps and the blockchain is already on testnet and open for public testing with 67K TPS with estimated 85K+
TPS on mainnet. Omax testnet was launched on 3rd of April 2022. OMAX mainnet is scheduled to launch by the end of
July 2022.
It further plans to launch a marketing campaign on Twitter
to raise awareness and reach 100,000 holders. That will
likely go hand in hand with launching of their blockchain.
OMAX was advertised in Times square NY and famous
celebrities promoted across the globe. Promotion videos
can be found in the social media.
What Makes OMAX Unique?
In contrast to many other coins, OMAX promises to feature a complete ecosystem that gives its token real value. Its
blockchain, Ecommerce integration, Crypto card.
By integrating the Blockchain into popular e-commerce and shopping cart platforms, OMAX aim to grant users the
ability to easily complete their everyday purchases using
their crypto currency balances.
OMAX is headquartered in DUBAI, UAE because of its
friendly crypto law. The developers are from Australia and United Kingdom. They have a plan to launch the OMAX
exchange in early 2023.
How Many OMAX Tokens (OMAX) are there in Circulation?
OMAX has a total supply of 10 billion tokens. 4% of that was already burned. In addition, OMAX follows the patented
approach of deflationary tokens by burning 4% of each
token at a BUY&SELL transaction. Doing that, the team
wants to constantly shrink the existing token supply and
increase the value of OMAX.
How Is the OMAX (OMX 20) Network secured?
OMAX Chain relies on a system of PoS consensus that can support short block time and lower fees. The most bonded validator candidates of staking will become validators and
produce blocks. The double sign detection and other
slashing logic guarantee security, stability, and chain
finality. The OMAX Chain also supports EVM-compatible
smart contracts and protocols. This is the native and only
usable currency in the OMAX ecosystem.
Reentrancy in Omax._transfer(address,address,uint256) (contracts/Omax.sol#350-378):
External calls:
- swapAndLiquify(contractTokenBalance) (contracts/Omax.sol#373)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Omax.sol#413-419)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (contracts/Omax.sol#373)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _rOwned[address(this)] += rLiquidity (contracts/Omax.sol#298)
- _rOwned[sender] -= vs.rAmount (contracts/Omax.sol#466)
- _rOwned[sender] -= vs.rAmount (contracts/Omax.sol#472)
- _rOwned[sender] -= vs.rAmount (contracts/Omax.sol#487)
- _rOwned[sender] -= vs.rAmount (contracts/Omax.sol#480)
- _rOwned[recipient] += vs.rTransferAmount (contracts/Omax.sol#467)
- _rOwned[recipient] += vs.rTransferAmount (contracts/Omax.sol#474)
- _rOwned[recipient] += vs.rTransferAmount (contracts/Omax.sol#481)
- _rOwned[recipient] += vs.rTransferAmount (contracts/Omax.sol#489)
- _rOwned[marketingWallet] += rMarketing (contracts/Omax.sol#236)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _rTotal -= (rFee + rBurn) (contracts/Omax.sol#231)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _tOwned[sender] -= tAmount (contracts/Omax.sol#479)
- _tOwned[sender] -= tAmount (contracts/Omax.sol#486)
- _tOwned[recipient] += vs.tTransferAmount (contracts/Omax.sol#473)
- _tOwned[recipient] += vs.tTransferAmount (contracts/Omax.sol#488)
- _tOwned[address(this)] += tLiquidity (contracts/Omax.sol#300)
- _tOwned[marketingWallet] += tMarketing (contracts/Omax.sol#238)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _tTotal -= tBurn (contracts/Omax.sol#233)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Contract ownership is not renounced (belongs to a wallet)
Omax.setMarketingWallet(address).newWallet (contracts/Omax.sol#516) lacks a zero-check on :
- marketingWallet = newWallet (contracts/Omax.sol#517)
Check that the address is not zero.
Additional information: link
Omax._name (contracts/Omax.sol#54) should be constant
Omax._symbol (contracts/Omax.sol#55) should be constant
Omax._decimals (contracts/Omax.sol#56) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
Reentrancy in Omax.swapAndLiquify(uint256) (contracts/Omax.sol#380-402):
External calls:
- swapTokensForEth(half) (contracts/Omax.sol#392)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Omax.sol#413-419)
- addLiquidity(otherHalf,newBalance) (contracts/Omax.sol#399)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (contracts/Omax.sol#399)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/Omax.sol#347)
- addLiquidity(otherHalf,newBalance) (contracts/Omax.sol#399)
- SwapAndLiquify(half,newBalance,otherHalf) (contracts/Omax.sol#401)
Reentrancy in Omax._transfer(address,address,uint256) (contracts/Omax.sol#350-378):
External calls:
- swapAndLiquify(contractTokenBalance) (contracts/Omax.sol#373)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Omax.sol#413-419)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (contracts/Omax.sol#373)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
Event emitted after the call(s):
- Transfer(sender,recipient,vs.tTransferAmount) (contracts/Omax.sol#468)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- Transfer(sender,recipient,vs.tTransferAmount) (contracts/Omax.sol#482)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- Transfer(sender,recipient,vs.tTransferAmount) (contracts/Omax.sol#475)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- Transfer(sender,recipient,vs.tTransferAmount) (contracts/Omax.sol#490)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
Reentrancy in Omax.transferFrom(address,address,uint256) (contracts/Omax.sol#149-153):
External calls:
- _transfer(sender,recipient,amount) (contracts/Omax.sol#150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Omax.sol#413-419)
External calls sending eth:
- _transfer(sender,recipient,amount) (contracts/Omax.sol#150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/Omax.sol#347)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (contracts/Omax.sol#151)
Apply the check-effects-interactions pattern.
Additional information: link
Parameter Omax.calculateMarketingFee(uint256,bool)._amount (contracts/Omax.sol#311) is not in mixedCase
Parameter Omax.calculateBurnFee(uint256,bool)._amount (contracts/Omax.sol#307) is not in mixedCase
Variable Omax._taxFee (contracts/Omax.sol#63) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (contracts/interfaces/IUniswapV2.sol#36) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (contracts/interfaces/IUniswapV2.sol#53) is not in mixedCase
Variable Omax._sellFeeMultiplier (contracts/Omax.sol#75) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (contracts/interfaces/IUniswapV2.sol#35) is not in mixedCase
Variable Omax._numTokensSellToAddToLiquidity (contracts/Omax.sol#87) is not in mixedCase
Variable Omax._maxTxAmount (contracts/Omax.sol#86) is not in mixedCase
Parameter Omax.calculateLiquidityFee(uint256,bool)._amount (contracts/Omax.sol#315) is not in mixedCase
Parameter Omax.setSwapAndLiquifyEnabled(bool)._enabled (contracts/Omax.sol#528) is not in mixedCase
Function IUniswapV2Router01.WETH() (contracts/interfaces/IUniswapV2.sol#73) is not in mixedCase
Parameter Omax.calculateTaxFee(uint256,bool)._amount (contracts/Omax.sol#303) is not in mixedCase
Variable Omax._burnFee (contracts/Omax.sol#66) is not in mixedCase
Variable Omax._liquidityFee (contracts/Omax.sol#72) is not in mixedCase
Variable Omax._marketFee (contracts/Omax.sol#69) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable Omax.reflectionFromToken(uint256,bool).rTransferAmount (contracts/Omax.sol#192) is too similar to Omax._getTValues(uint256,bool).tTransferAmount (contracts/Omax.sol#266)
Variable Omax._getRValues(uint256,uint256,uint256,uint256,uint256,uint256).rTransferAmount (contracts/Omax.sol#276) is too similar to Omax._getTValues(uint256,bool).tTransferAmount (contracts/Omax.sol#266)
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/interfaces/IUniswapV2.sol#78) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/interfaces/IUniswapV2.sol#79)
Prevent variables from having similar names.
Additional information: link
excludeFromFee(address) should be declared external:
- Omax.excludeFromFee(address) (contracts/Omax.sol#493-495)
includeInFee(address) should be declared external:
- Omax.includeInFee(address) (contracts/Omax.sol#497-499)
symbol() should be declared external:
- Omax.symbol() (contracts/Omax.sol#118-120)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (@openzeppelin/contracts/access/Ownable.sol#53-55)
isExcludedFromFee(address) should be declared external:
- Omax.isExcludedFromFee(address) (contracts/Omax.sol#338-340)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#131-134)
- Omax.approve(address,uint256) (contracts/Omax.sol#144-147)
decimals() should be declared external:
- ERC20.decimals() (@openzeppelin/contracts/token/ERC20/ERC20.sol#86-88)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#196-204)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#149-163)
- Omax.transferFrom(address,address,uint256) (contracts/Omax.sol#149-153)
symbol() should be declared external:
- ERC20.symbol() (@openzeppelin/contracts/token/ERC20/ERC20.sol#69-71)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#112-115)
- Omax.transfer(address,uint256) (contracts/Omax.sol#135-138)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#177-180)
isExcludedFromReward(address) should be declared external:
- Omax.isExcludedFromReward(address) (contracts/Omax.sol#165-167)
totalSupply() should be declared external:
- ERC20.totalSupply() (@openzeppelin/contracts/token/ERC20/ERC20.sol#93-95)
- Omax.totalSupply() (contracts/Omax.sol#126-128)
decreaseAllowance(address,uint256) should be declared external:
- Omax.decreaseAllowance(address,uint256) (contracts/Omax.sol#160-163)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (@openzeppelin/contracts/access/Ownable.sol#61-64)
deliver(uint256) should be declared external:
- Omax.deliver(uint256) (contracts/Omax.sol#177-184)
name() should be declared external:
- ERC20.name() (@openzeppelin/contracts/token/ERC20/ERC20.sol#61-63)
excludeFromReward(address) should be declared external:
- Omax.excludeFromReward(address) (contracts/Omax.sol#203-212)
totalFees() should be declared external:
- Omax.totalFees() (contracts/Omax.sol#169-171)
name() should be declared external:
- Omax.name() (contracts/Omax.sol#114-116)
increaseAllowance(address,uint256) should be declared external:
- Omax.increaseAllowance(address,uint256) (contracts/Omax.sol#155-158)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (@openzeppelin/contracts/token/ERC20/ERC20.sol#120-122)
- Omax.allowance(address,address) (contracts/Omax.sol#140-142)
reflectionFromToken(uint256,bool) should be declared external:
- Omax.reflectionFromToken(uint256,bool) (contracts/Omax.sol#186-195)
totalBurn() should be declared external:
- Omax.totalBurn() (contracts/Omax.sol#173-175)
decimals() should be declared external:
- Omax.decimals() (contracts/Omax.sol#122-124)
Use the external attribute for functions never called from the contract.
Additional information: link
Omax.includeInReward(address) (contracts/Omax.sol#214-225) has costly operations inside a loop:
- _excluded.pop() (contracts/Omax.sol#221)
Use a local variable to hold the loop computation result.
Additional information: link
Omax.addLiquidity(uint256,uint256) (contracts/Omax.sol#422-435) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
Ensure that all the return values of the function calls are used.
Additional information: link
Omax.allowance(address,address).owner (contracts/Omax.sol#140) shadows:
- Ownable.owner() (@openzeppelin/contracts/access/Ownable.sol#34-36) (function)
Omax._approve(address,address,uint256).owner (contracts/Omax.sol#342) shadows:
- Ownable.owner() (@openzeppelin/contracts/access/Ownable.sol#34-36) (function)
Rename the local variables that shadow another component.
Additional information: link
Omax.setBurnFee(uint256) (contracts/Omax.sol#544-546) should emit an event for:
- _burnFee = burnFee (contracts/Omax.sol#545)
Omax.setLiquidityFee(uint256) (contracts/Omax.sol#548-550) should emit an event for:
- _liquidityFee = liquidityFee (contracts/Omax.sol#549)
Omax.setNumTokensSellToAddToLiquidity(uint256) (contracts/Omax.sol#524-526) should emit an event for:
- _numTokensSellToAddToLiquidity = numTokensSellToAddToLiquidity (contracts/Omax.sol#525)
Omax.setTaxFee(uint256) (contracts/Omax.sol#540-542) should emit an event for:
- _taxFee = taxFee (contracts/Omax.sol#541)
Omax.setMaxTxPercent(uint256) (contracts/Omax.sol#520-522) should emit an event for:
- _maxTxAmount = maxTxAmount (contracts/Omax.sol#521)
Omax.setMarketFee(uint256) (contracts/Omax.sol#552-554) should emit an event for:
- _marketFee = marketFee (contracts/Omax.sol#553)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in Omax.transferFrom(address,address,uint256) (contracts/Omax.sol#149-153):
External calls:
- _transfer(sender,recipient,amount) (contracts/Omax.sol#150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Omax.sol#413-419)
External calls sending eth:
- _transfer(sender,recipient,amount) (contracts/Omax.sol#150)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()] - amount) (contracts/Omax.sol#151)
- _allowances[owner][spender] = amount (contracts/Omax.sol#346)
Reentrancy in Omax.swapAndLiquify(uint256) (contracts/Omax.sol#380-402):
External calls:
- swapTokensForEth(half) (contracts/Omax.sol#392)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Omax.sol#413-419)
- addLiquidity(otherHalf,newBalance) (contracts/Omax.sol#399)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (contracts/Omax.sol#399)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (contracts/Omax.sol#399)
- _allowances[owner][spender] = amount (contracts/Omax.sol#346)
Reentrancy in Omax._transfer(address,address,uint256) (contracts/Omax.sol#350-378):
External calls:
- swapAndLiquify(contractTokenBalance) (contracts/Omax.sol#373)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (contracts/Omax.sol#413-419)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (contracts/Omax.sol#373)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (contracts/Omax.sol#427-434)
State variables written after the call(s):
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _burnFee = _previousBurnFee (contracts/Omax.sol#334)
- _burnFee = 0 (contracts/Omax.sol#326)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _liquidityFee = _previousLiquidityFee (contracts/Omax.sol#332)
- _liquidityFee = 0 (contracts/Omax.sol#325)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _marketFee = _previousMarketFee (contracts/Omax.sol#333)
- _marketFee = 0 (contracts/Omax.sol#327)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _previousBurnFee = _burnFee (contracts/Omax.sol#321)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _previousLiquidityFee = _liquidityFee (contracts/Omax.sol#323)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _previousMarketFee = _marketFee (contracts/Omax.sol#322)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _previousTaxFee = _taxFee (contracts/Omax.sol#320)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _tBurnTotal += tBurn (contracts/Omax.sol#234)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _tFeeTotal += tFee (contracts/Omax.sol#232)
- _tokenTransfer(from,to,amount) (contracts/Omax.sol#377)
- _taxFee = _previousTaxFee (contracts/Omax.sol#331)
- _taxFee = 0 (contracts/Omax.sol#324)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (@openzeppelin/contracts/utils/Address.sol#26-36) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#32-34)
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#195-215) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#207-210)
Do not use evm assembly.
Additional information: link
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#195-215) is never used and should be removed
Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#54-59) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts/utils/Address.sol#108-114) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#178-187) is never used and should be removed
Address.functionDelegateCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#168-170) is never used and should be removed
ERC20._burn(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#274-289) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#122-133) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#20-22) is never used and should be removed
Address.functionStaticCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#141-143) is never used and should be removed
Address.isContract(address) (@openzeppelin/contracts/utils/Address.sol#26-36) is never used and should be removed
Address.functionCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#89-95) is never used and should be removed
ERC20._mint(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#251-261) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#151-160) is never used and should be removed
Address.functionCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#79-81) is never used and should be removed
Remove unused functions.
Additional information: link
Omax._maxTxAmount (contracts/Omax.sol#86) is set pre-construction with a non-constant function or state variable:
- 40 * 10 ** 6 * 10 ** uint256(_decimals)
Omax._numTokensSellToAddToLiquidity (contracts/Omax.sol#87) is set pre-construction with a non-constant function or state variable:
- 40 * 10 ** 6 * 10 ** uint256(_decimals)
Omax._previousLiquidityFee (contracts/Omax.sol#73) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
Omax._tTotal (contracts/Omax.sol#58) is set pre-construction with a non-constant function or state variable:
- 10 * 10 ** 9 * 10 ** uint256(_decimals)
Omax._previousTaxFee (contracts/Omax.sol#64) is set pre-construction with a non-constant function or state variable:
- _taxFee
Omax._rTotal (contracts/Omax.sol#59) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
Omax._previousMarketFee (contracts/Omax.sol#70) is set pre-construction with a non-constant function or state variable:
- _marketFee
Omax._previousBurnFee (contracts/Omax.sol#67) is set pre-construction with a non-constant function or state variable:
- _burnFee
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.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#3) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Context.sol#3) allows old versions
Pragma version^0.8.0 (contracts/interfaces/IUniswapV2.sol#2) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#3) allows old versions
Pragma version^0.8.0 (contracts/Omax.sol#2) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Address.sol#3) 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
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#122-133):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts/utils/Address.sol#131)
Low level call in Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#178-187):
- (success,returndata) = target.delegatecall(data) (@openzeppelin/contracts/utils/Address.sol#185)
Low level call in Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#54-59):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts/utils/Address.sol#57)
Low level call in Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#151-160):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts/utils/Address.sol#158)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Omax (contracts/Omax.sol#11-564) should inherit from IERC20Metadata (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#12-27)
Inherit from the missing interface or contract.
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Unable to find audit link on the website
Unable to find Youtube account