MY RICH FARM is a virtual world participated by multiplayer. It is a farm game where players are able to use RCH at Binance Smart Chain to construct their modern farms.
RichTokenCover.mint(address,uint256) (#1415-1448) contains a tautology or contradiction:
- 0 <= _richFarm.recharge && _richFarm.recharge < tax (#1425)
Fix the incorrect comparison by changing the value type or the comparison.
Additional information: link
FarmDep.setBurnPoint(uint256) (#961-964) should emit an event for:
- burnPoint = _point (#963)
FarmDep.setFundPoint(uint256) (#966-969) should emit an event for:
- fundPoint = _point (#968)
Emit an event for critical parameter changes.
Additional information: link
RichTokenCover.mint(address,uint256).burn (#1432) shadows:
- ERC20Burnable.burn(uint256) (#1286-1288) (function)
RichTokenCover._transferBurnFromTaxAddress(uint256)._burn (#1491) shadows:
- ERC20._burn(address,uint256) (#422-437) (function)
Rename the local variables that shadow another component.
Additional information: link
Pragma version^0.8.0 (#9) allows old versions
Pragma version^0.8.0 (#95) allows old versions
Pragma version^0.8.0 (#125) allows old versions
Pragma version^0.8.0 (#153) allows old versions
Pragma version^0.8.0 (#509) allows old versions
Pragma version^0.8.0 (#526) allows old versions
Pragma version^0.8.0 (#617) allows old versions
Pragma version^0.8.0 (#636) allows old versions
Pragma version^0.8.0 (#665) allows old versions
Pragma version^0.8.0 (#808) allows old versions
Pragma version^0.8.0 (#839) allows old versions
Pragma version^0.8.0 (#853) allows old versions
Pragma version^0.8.0 (#866) allows old versions
Pragma version^0.8.0 (#1041) allows old versions
Pragma version^0.8.0 (#1270) allows old versions
Pragma version^0.8.0 (#1316) allows old versions
Pragma version^0.8.0 (#1331) allows old versions
Pragma version^0.8.0 (#1515) 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
Parameter FarmDep.setWhitelistSetter(address)._newSetter (#927) is not in mixedCase
Parameter FarmDep.setRichToken(address)._newAddress (#931) is not in mixedCase
Parameter FarmDep.setLandCore(address)._newAddress (#937) is not in mixedCase
Parameter FarmDep.setLandMarket(address)._newAddress (#943) is not in mixedCase
Parameter FarmDep.setRcUtilsAddress(address)._newAddress (#949) is not in mixedCase
Parameter FarmDep.setHire(address)._newAddress (#955) is not in mixedCase
Parameter FarmDep.setBurnPoint(uint256)._point (#961) is not in mixedCase
Parameter FarmDep.setFundPoint(uint256)._point (#966) is not in mixedCase
Parameter FarmDep.setMinTaxPrice(uint256)._minTaxPrice (#971) is not in mixedCase
Parameter FarmDep.setMinPrice(uint256)._value (#975) is not in mixedCase
Parameter FarmDep.setFarmDeps(address)._newAddress (#979) is not in mixedCase
Parameter FarmDep.delFarmDeps(address)._address (#984) is not in mixedCase
Struct RichTokenCover.mintBulkParam (#1450-1453) is not in CapWords
Parameter RichTokenCover.mint(address,uint256)._rchAmount (#1415) is not in mixedCase
Parameter RichTokenCover.mintBulk(RichTokenCover.mintBulkParam[])._minters (#1455) is not in mixedCase
Parameter RichTokenCover.validBalanceWithTax(address,uint256,uint256)._amount (#1479) is not in mixedCase
Parameter RichTokenCover.validBalanceWithTax(address,uint256,uint256)._tax (#1479) is not in mixedCase
Parameter RichToken.recharge(uint256)._amount (#1537) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
ERC20._mint(address,uint256) (#399-409) has costly operations inside a loop:
- _totalSupply += amount (#404)
RichTokenCover._mint(address,uint256) (#1402-1405) has costly operations inside a loop:
- _totalMinted = _totalMinted.add(amount) (#1404)
Use a local variable to hold the loop computation result.
Additional information: link
RichToken.slitherConstructorVariables() (#1517-1551) uses literals with too many digits:
- _cap = 50 * 100000000 * (10 ** uint256(decimals())) (#1342)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
FarmDep.setWhitelistSetter(address)._newSetter (#927) lacks a zero-check on :
- whitelistSetterAddress = _newSetter (#928)
FarmDep.setRichToken(address)._newAddress (#931) lacks a zero-check on :
- richTokenAddress = _newAddress (#932)
FarmDep.setLandCore(address)._newAddress (#937) lacks a zero-check on :
- landCoreAddress = _newAddress (#938)
FarmDep.setLandMarket(address)._newAddress (#943) lacks a zero-check on :
- landMarketAddress = _newAddress (#944)
FarmDep.setRcUtilsAddress(address)._newAddress (#949) lacks a zero-check on :
- rcUtilsAddress = _newAddress (#950)
FarmDep.setHire(address)._newAddress (#955) lacks a zero-check on :
- hireAddress = _newAddress (#956)
Check that the address is not zero.
Additional information: link
RichTokenCover.onlyCFO() (#1392-1396) has external calls inside a loop: landCoreInter = ILandCore(farmDep.landCoreAddress()) (#1393)
RichTokenCover.onlyCFO() (#1392-1396) has external calls inside a loop: require(bool)(msg.sender == landCoreInter.getCFO()) (#1394)
RichTokenCover.minAmount(uint256) (#1363-1366) has external calls inside a loop: require(bool,string)(_amount > farmDep.minTaxPrice(),amount < minTaxPrice) (#1364)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: landCoreInter = ILandCore(farmDep.landCoreAddress()) (#1416)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: tax = farmDep.minTaxPrice() (#1418)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: _transfer(landCoreInter.getCFO(),to,payAmount) (#1421)
RichTokenCover._beforeTokenTransfer(address,address,uint256) (#1461-1471) has external calls inside a loop: require(bool,string)(! farmDep.paused(),ERC20Pausable: token transfer while paused) (#1467)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: _transfer(landCoreInter.getCFO(),landCoreInter.getCOO(),tax) (#1422)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: _transfer(landCoreInter.getCFO(),to,accountToRichFarm[to].recharge) (#1426)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: fund = mintAmount.mul(farmDep.fundPoint()).div(10000) (#1429)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: _mint(landCoreInter.getCOO(),tax) (#1431)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: burn = mintAmount.mul(farmDep.burnPoint()).div(10000) (#1432)
RichTokenCover._transferBurnFromTaxAddress(uint256) (#1491-1495) has external calls inside a loop: balanceOf(farmDep.getCOO()) > _burn (#1492)
RichTokenCover._transferBurnFromTaxAddress(uint256) (#1491-1495) has external calls inside a loop: _transfer(farmDep.getCOO(),this.getBurnAddress(),_burn) (#1493)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: _transfer(landCoreInter.getCFO(),landCoreInter.getCOO(),tax) (#1436)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: _transfer(landCoreInter.getCFO(),to,accountToRichFarm[to].recharge.sub(tax)) (#1437)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: fund_scope_1 = mintAmount_scope_0.mul(farmDep.fundPoint()).div(10000) (#1440)
RichTokenCover.mint(address,uint256) (#1415-1448) has external calls inside a loop: burn_scope_2 = mintAmount_scope_0.mul(farmDep.burnPoint()).div(10000) (#1442)
Favor pull over push strategy for external calls.
Additional information: link
FarmDep.setWhitelistSetter(address) (#927-929) should emit an event for:
- whitelistSetterAddress = _newSetter (#928)
FarmDep.setRichToken(address) (#931-935) should emit an event for:
- richTokenAddress = _newAddress (#932)
FarmDep.setLandCore(address) (#937-941) should emit an event for:
- landCoreAddress = _newAddress (#938)
FarmDep.setLandMarket(address) (#943-947) should emit an event for:
- landMarketAddress = _newAddress (#944)
Emit an event for critical parameter changes.
Additional information: link
Context._msgData() (#142-144) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#1228-1237) is never used and should be removed
SafeMath.mod(uint256,uint256) (#1188-1190) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#1254-1263) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#1059-1065) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#1101-1106) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#1113-1118) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#1084-1094) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#1072-1077) is never used and should be removed
Remove unused functions.
Additional information: link
name() should be declared external:
- ERC20.name() (#209-211)
symbol() should be declared external:
- ERC20.symbol() (#217-219)
totalSupply() should be declared external:
- ERC20.totalSupply() (#241-243)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#279-282)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#297-311)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#325-328)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#344-352)
getFarmDeps() should be declared external:
- FarmDep.getFarmDeps() (#993-995)
getCEO() should be declared external:
- FarmDep.getCEO() (#997-999)
getCFO() should be declared external:
- FarmDep.getCFO() (#1001-1003)
getCOO() should be declared external:
- FarmDep.getCOO() (#1005-1007)
getCSO() should be declared external:
- FarmDep.getCSO() (#1009-1011)
getBurn() should be declared external:
- FarmDep.getBurn() (#1013-1015)
getBurnPoint() should be declared external:
- FarmDep.getBurnPoint() (#1017-1019)
getFundPoint() should be declared external:
- FarmDep.getFundPoint() (#1021-1023)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (#1286-1288)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (#1301-1309)
mintBulk(RichTokenCover.mintBulkParam[]) should be declared external:
- RichTokenCover.mintBulk(RichTokenCover.mintBulkParam[]) (#1455-1459)
withdraw() should be declared external:
- RichTokenCover.withdraw() (#1506-1508)
recharge(uint256) should be declared external:
- RichToken.recharge(uint256) (#1537-1541)
getMinTaxPrice() should be declared external:
- RichToken.getMinTaxPrice() (#1543-1545)
getBurnPoint() should be declared external:
- RichToken.getBurnPoint() (#1547-1549)
Use the external attribute for functions never called from the contract.
Additional information: link
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