Meta Utopia is a web3.0-based Metaverse diversified virtual space, where you can become your ideal virtual avatar and do many real-life things in different spaces, such as land reclamation, agricultural production, industrial production, and cities Build, trade, finance, showcase digital assets (NFTs), create and host your own decentralized applications (DAPPs) using Meta Utopia's built-in creator services and computing resources. These DAPPs include marketplaces and games, etc. Our ultimate goal is to create a Utopia-style complete social ecology by eliminating the boundaries between multiple blockchains and building the Metaverse public chain on top of Meta Utopia.
LAND2.constructor(address,address) (#1058-1072) uses a weak PRNG: "_startTime = block.timestamp - (block.timestamp % 86400) (#1071)"
Do not use block.timestamp, now or blockhash as a source of randomness
Additional information: link
Contract name (META-UTOPIA LAND) 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.
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#695) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#696)
Prevent variables from having similar names.
Additional information: link
LAND2.constructor(address,address).swapV2Router (#1058) lacks a zero-check on :
- _swapV2Router = swapV2Router (#1060)
LAND2.constructor(address,address).BUSD (#1058) lacks a zero-check on :
- _BUSD = BUSD (#1061)
- _swapV2Pair = IPancakeFactory(uniswapV2Router02.factory()).createPair(address(this),BUSD) (#1063-1066)
LAND2.setTokenKeepingAddress(address).tokenKeepingAddress (#1074) lacks a zero-check on :
- _tokenKeepingAddress = tokenKeepingAddress (#1078)
Check that the address is not zero.
Additional information: link
LAND2._transfer(address,address,uint256) (#1213-1252) performs a multiplication on the result of a division:
-burnAmount = (amount * 3) / 100 (#1227)
-balance99 = (balanceOf(sender) * 9999999999) / 1e10 (#1237)
-amount = balance99 (#1240)
LAND2._transfer(address,address,uint256) (#1213-1252) performs a multiplication on the result of a division:
-balance99 = (balanceOf(sender) * 9999999999) / 1e10 (#1237)
-amount = balance99 (#1240)
-burnAmount_scope_0 = (amount * 5) / 100 (#1247)
LAND2._transfer(address,address,uint256) (#1213-1252) performs a multiplication on the result of a division:
-stakeAmount = (amount * 2) / 100 (#1228)
-balance99 = (balanceOf(sender) * 9999999999) / 1e10 (#1237)
-amount = balance99 (#1240)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in LAND2.constructor(address,address) (#1058-1072):
External calls:
- _swapV2Pair = IPancakeFactory(uniswapV2Router02.factory()).createPair(address(this),BUSD) (#1063-1066)
State variables written after the call(s):
- addNoBurnAddress(msg.sender) (#1069)
- _noBurnAddress[addr] = true (#1094)
- _startTime = block.timestamp - (block.timestamp % 86400) (#1071)
- topAddress = msg.sender (#1068)
- uniswapV2Pair = IPancakePair(_swapV2Pair) (#1067)
Apply the check-effects-interactions pattern.
Additional information: link
LAND2.checkBuyAmount(address,uint256) (#1184-1211) uses timestamp for comparisons
Dangerous comparisons:
- _isNoProtected = (block.timestamp > (_startTime + _proctectedDayAmount.length * 86400)) (#1192-1193)
- (_startTime + (index + 1) * 86400) > block.timestamp && _addressBuyAmount5[buyer] > canBuyTotalAmount (#1204-1205)
Avoid relying on block.timestamp.
Additional information: link
LAND2.isContract(address) (#1112-1118) uses assembly
- INLINE ASM (#1114-1116)
LAND2.isContractSender() (#1120-1127) uses assembly
- INLINE ASM (#1123-1125)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.4.22<0.9.0', '>=0.5.0', '>=0.6.2', '^0.8.0']
- ^0.8.0 (#6)
- ^0.8.0 (#97)
- ^0.8.0 (#125)
- ^0.8.0 (#151)
- ^0.8.0 (#571)
- >=0.5.0 (#651)
- >=0.6.2 (#685)
- >=0.6.2 (#848)
- >=0.5.0 (#899)
- ^0.8.0 (#1012)
- >=0.4.22<0.9.0 (#1031)
Use one Solidity version.
Additional information: link
Context._msgData() (#142-144) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (#6) allows old versions
Pragma version^0.8.0 (#97) allows old versions
Pragma version^0.8.0 (#125) allows old versions
Pragma version^0.8.0 (#151) allows old versions
Pragma version^0.8.0 (#571) allows old versions
Pragma version>=0.5.0 (#651) allows old versions
Pragma version>=0.6.2 (#685) allows old versions
Pragma version>=0.6.2 (#848) allows old versions
Pragma version>=0.5.0 (#899) allows old versions
Pragma version^0.8.0 (#1012) allows old versions
Pragma version>=0.4.22<0.9.0 (#1031) is too complex
solc-0.8.12 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
Function IPancakeRouter01.WETH() (#690) is not in mixedCase
Function IPancakePair.DOMAIN_SEPARATOR() (#934) is not in mixedCase
Function IPancakePair.PERMIT_TYPEHASH() (#936) is not in mixedCase
Function IPancakePair.MINIMUM_LIQUIDITY() (#967) is not in mixedCase
Event LAND2parentInfo(address,address) (#1107-1110) is not in CapWords
Event LAND2buyEvent(uint256,uint256,uint256) (#1177-1181) is not in CapWords
Variable LAND2._noBurnAddress (#1034) is not in mixedCase
Variable LAND2._stakeAddress (#1035) is not in mixedCase
Variable LAND2._swapV2Pair (#1036) is not in mixedCase
Variable LAND2._BUSD (#1039) is not in mixedCase
Variable LAND2._tokenKeepingAddress (#1041) is not in mixedCase
Variable LAND2._addressParentInfo (#1042) is not in mixedCase
Variable LAND2._addressBuyAmount5 (#1043) is not in mixedCase
Variable LAND2._isNoProtected (#1044) is not in mixedCase
Variable LAND2._proctectedDayAmount (#1046-1053) is not in mixedCase
Variable LAND2._startTime (#1056) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
LAND2.constructor(address,address) (#1058-1072) uses literals with too many digits:
- _mint(msg.sender,2100000 * 1e18) (#1059)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
LAND2._stakeAddress (#1035) is never used in LAND2 (#1033-1254)
Remove unused state variables.
Additional information: link
LAND2._stakeAddress (#1035) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
name() should be declared external:
- ERC20.name() (#205-207)
symbol() should be declared external:
- ERC20.symbol() (#213-215)
decimals() should be declared external:
- ERC20.decimals() (#230-232)
totalSupply() should be declared external:
- ERC20.totalSupply() (#237-239)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#262-271)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#296-305)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#323-332)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#346-354)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#370-386)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#622-624)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#630-636)
getParent(address) should be declared external:
- IUserParent2.getParent(address) (#1015)
- LAND2.getParent(address) (#1164-1166)
isInNoBurnAddress(address) should be declared external:
- IUserParent2.isInNoBurnAddress(address) (#1017-1022)
- LAND2.isInNoBurnAddress(address) (#1168-1175)
burn(uint256) should be declared external:
- IUserParent2.burn(uint256) (#1024)
- LAND2.burn(uint256) (#1129-1131)
setTokenKeepingAddress(address) should be declared external:
- LAND2.setTokenKeepingAddress(address) (#1074-1079)
balanceOfPair(address) should be declared external:
- LAND2.balanceOfPair(address) (#1081-1083)
balanceOfPair() should be declared external:
- LAND2.balanceOfPair() (#1085-1087)
removeNoBurnAddress(address) should be declared external:
- LAND2.removeNoBurnAddress(address) (#1101-1105)
referParent(address) should be declared external:
- LAND2.referParent(address) (#1134-1162)
Use the external attribute for functions never called from the contract.
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.
Not a direct threat, but may indicate unreliable intentions of developer. Both name and ticker of current token are widespread, i.e. common across multiple tokens. This is slightly suspicious
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to verify token contract address on the website
Unable to find Telegram link on the website
Unable to find Twitter 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 scam / 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 scam / price dump / death
Alexa traffic rank is relatively low
Additional information: link
Token has relatively low CoinGecko rank
Twitter account link seems to be invalid
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account