In the Magic Craft metaverse there are powerful Castles built by the Elders. Every week your clan goes to war for the ownership of one of the 7 castles, where the King of the castle gets taxation in our native cryptocurrency $MCRT.
Each character has different collectible NFT traits, items, weapons, armor, spells, magic scrolls, clothes, attacks, and poses. You can trade these collectibles in the NFT marketplace for $MCRT.
On the platform there are higher staking rewards for powerful castles, weapons, armor and castles. You hold the value of your character in $MCRT
Token.unFinalized(uint8) (#81-84) uses a dangerous strict equality:
- require(bool,string)(privateSaleEnd[saleIndex] == 0,already distributed) (#82)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Pragma version>=0.8.0 (#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
Token.totalTeamTokens (#63) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
Token._transfer(address,address,uint256) (#104-109) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(spendableBalance(sender) >= amount,insuffficient unlocked balance) (#105)
Token.distributePrivateSale(uint8) (#166-182) uses timestamp for comparisons
Dangerous comparisons:
- require(bool)(block.timestamp != 0) (#167)
Token.spendableBalance(address) (#183-197) uses timestamp for comparisons
Dangerous comparisons:
- i < privateSaleEnd.length (#185)
- teamVestingStart > 0 && teamTokenBalance[account] > 0 && block.timestamp < teamVestingStart + 31557600 (#188)
- block.timestamp > teamVestingStart (#189)
Token.lockedBalanceFromSale(address,uint8) (#198-211) uses timestamp for comparisons
Dangerous comparisons:
- privateSaleBalance[saleIndex][account] > 0 && block.timestamp < privateSaleEnd[saleIndex] + 39447000 (#200)
- block.timestamp < privateSaleEnd[saleIndex] + 7889400 (#202)
Token.withdrawLeftoverPrivateSale(uint8) (#212-217) uses timestamp for comparisons
Dangerous comparisons:
- require(bool)(teamVestingStart != 0 && canWithdraw == true) (#213)
Avoid relying on block.timestamp.
Additional information: link
Token.withdrawLeftoverPrivateSale(uint8) (#212-217) compares to a boolean constant:
-require(bool)(teamVestingStart != 0 && canWithdraw == true) (#213)
Remove the equality to the boolean constant.
Additional information: link
Token.addMultipleToTeam(address[],uint256[]) (#158-165) has costly operations inside a loop:
- teamToDistribute = teamToDistribute.add(amounts[i]) (#163)
Use a local variable to hold the loop computation result.
Additional information: link
Token.constructor(string,string,uint8) (#94-103) uses literals with too many digits:
- _totalSupply = 10000000000 * 10 ** _decimals (#96)
Token.constructor(string,string,uint8) (#94-103) uses literals with too many digits:
- balanceOf[address(0)] = 3800000000 * 10 ** _decimals (#98)
Token.constructor(string,string,uint8) (#94-103) uses literals with too many digits:
- balanceOf[msg.sender] = 6200000000 * 10 ** _decimals (#99)
Token.constructor(string,string,uint8) (#94-103) uses literals with too many digits:
- privateSaleTotalTokens[0] = 250000000 * 10 ** _decimals (#100)
Token.constructor(string,string,uint8) (#94-103) uses literals with too many digits:
- privateSaleTotalTokens[1] = 350000000 * 10 ** _decimals (#101)
Token.constructor(string,string,uint8) (#94-103) uses literals with too many digits:
- privateSaleTotalTokens[2] = 400000000 * 10 ** _decimals (#102)
Token.slitherConstructorVariables() (#49-221) uses literals with too many digits:
- totalTeamTokens = 2800000000 (#63)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Token is not listed at Mobula.Finance
Additional information: link
Token has relatively low CoinGecko rank
Young tokens have high risks of price dump / death