STEPM stands for Step to Mars. The M in STEPM, meaning Mars, is inspired by the idea of sending people to Mars by Elon Musk - the CEO of SpaceX. STEPM was born with the mission to help people improve their physical and mental health and beyond to build a qualified force to join Elon Musk on the journey to Mars in 2029.
STEPM is a lifestyle application on Web 3.0 with GameFi and SocialFi elements. STEPM is built around a daily activity necessary for most people - moving. We are the best project to be effective for the concept of moving & earning money.
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Contract ownership is not renounced (belongs to a wallet)
ERC20.constructor(string,string,uint256).name (#878) shadows:
- ERC20.name() (#895-897) (function)
- IERC20.name() (#189) (function)
ERC20.constructor(string,string,uint256).symbol (#878) shadows:
- ERC20.symbol() (#909-911) (function)
- IERC20.symbol() (#184) (function)
ERC20.allowance(address,address).owner (#943) shadows:
- Ownable.owner() (#781-783) (function)
ERC20._approve(address,address,uint256).owner (#1103) shadows:
- Ownable.owner() (#781-783) (function)
STEPM.constructor(string,string)._name (#1169) shadows:
- ERC20._name (#865) (state variable)
STEPM.constructor(string,string)._symbol (#1169) shadows:
- ERC20._symbol (#866) (state variable)
Rename the local variables that shadow another component.
Additional information: link
STEPM.setSellFee(uint256,uint256,uint256) (#1191-1196) should emit an event for:
- developmentSell = _devFee (#1193)
- airdropSell = _adFee (#1194)
- marketingSell = _mktFee (#1195)
STEPM.setBuyFee(uint256,uint256,uint256) (#1198-1203) should emit an event for:
- poolBuy = _poolFee (#1200)
- liquidityBuy = _lqdtFee (#1201)
- marketingBuy = _mktFee (#1202)
STEPM.setHoldTime(bool,uint256) (#1217-1227) should emit an event for:
- holdTime = _sec (#1221)
- holdTime = 0 (#1225)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in STEPM.constructor(string,string) (#1169-1177):
External calls:
- uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (#1171)
State variables written after the call(s):
- _approve(address(this),address(uniswapV2Router),~ uint256(0)) (#1172)
- _allowances[owner][spender] = amount (#1110)
- excludeFee[poolAddress] = true (#1173)
- excludeFee[marketingAddress] = true (#1174)
- excludeFee[developmentAddress] = true (#1175)
- excludeFee[airdropAddress] = true (#1176)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in STEPM.constructor(string,string) (#1169-1177):
External calls:
- uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (#1171)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1111)
- _approve(address(this),address(uniswapV2Router),~ uint256(0)) (#1172)
Apply the check-effects-interactions pattern.
Additional information: link
STEPM._transfer(address,address,uint256) (#1241-1334) uses timestamp for comparisons
Dangerous comparisons:
- transactionTime == true && lastTransactionTime[sender] <= block.timestamp - holdTime (#1271-1272)
- transactionTime == true && lastTransactionTime[recipient] <= block.timestamp - holdTime (#1308-1309)
Avoid relying on block.timestamp.
Additional information: link
Address.verifyCallResult(bool,bytes,string) (#466-486) uses assembly
- INLINE ASM (#478-481)
Do not use evm assembly.
Additional information: link
STEPM.setTax(bool) (#1205-1215) compares to a boolean constant:
-enableTax == true (#1207)
STEPM.setHoldTime(bool,uint256) (#1217-1227) compares to a boolean constant:
-enable == true (#1218)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-antiBot == true && recipient == uniswapV2Pair && sender != address(this) (#1242-1244)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-enableTax == true (#1314)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-antiBot == true && sender == uniswapV2Pair && recipient != address(this) (#1250-1252)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-allowToSell == true (#1276)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-limitSell == true (#1265)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-require(bool,string)(allowToTransfer == true,Not Allow to Transfer) (#1332)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-allowToBuy == true (#1313)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-limitBuy == true (#1302)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-recipient.isContract() == true (#1253)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-transactionTime == true && lastTransactionTime[sender] <= block.timestamp - holdTime (#1271-1272)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-enableTax == true (#1277)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-sender.isContract() == true (#1245)
STEPM._transfer(address,address,uint256) (#1241-1334) compares to a boolean constant:
-transactionTime == true && lastTransactionTime[recipient] <= block.timestamp - holdTime (#1308-1309)
Remove the equality to the boolean constant.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.4.0', '>=0.5.0', '>=0.6.2', '>=0.8.7', '^0.8.0', '^0.8.1']
- >=0.5.0 (#3)
- >=0.6.2 (#23)
- >=0.6.2 (#121)
- >=0.4.0 (#168)
- ^0.8.1 (#269)
- ^0.8.0 (#494)
- ^0.8.0 (#724)
- ^0.8.0 (#751)
- >=0.4.0 (#827)
- >=0.8.7 (#1132)
Use one Solidity version.
Additional information: link
Address.functionCall(address,bytes) (#350-352) is never used and should be removed
Address.functionCall(address,bytes,string) (#360-366) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#379-385) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#393-404) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#439-441) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#449-458) is never used and should be removed
Address.functionStaticCall(address,bytes) (#412-414) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#422-431) is never used and should be removed
Address.sendValue(address,uint256) (#325-330) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (#466-486) is never used and should be removed
Context._msgData() (#741-743) is never used and should be removed
ERC20._burnFrom(address,uint256) (#1120-1127) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#681-690) is never used and should be removed
SafeMath.mod(uint256,uint256) (#641-643) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#707-716) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#512-518) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#554-559) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#566-571) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#537-547) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#525-530) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version>=0.5.0 (#3) allows old versions
Pragma version>=0.6.2 (#23) allows old versions
Pragma version>=0.6.2 (#121) allows old versions
Pragma version>=0.4.0 (#168) allows old versions
Pragma version^0.8.1 (#269) allows old versions
Pragma version^0.8.0 (#494) allows old versions
Pragma version^0.8.0 (#724) allows old versions
Pragma version^0.8.0 (#751) allows old versions
Pragma version>=0.4.0 (#827) 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.sendValue(address,uint256) (#325-330):
- (success) = recipient.call{value: amount}() (#328)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#393-404):
- (success,returndata) = target.call{value: value}(data) (#402)
Low level call in Address.functionStaticCall(address,bytes,string) (#422-431):
- (success,returndata) = target.staticcall(data) (#429)
Low level call in Address.functionDelegateCall(address,bytes,string) (#449-458):
- (success,returndata) = target.delegatecall(data) (#456)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Router01.WETH() (#27) is not in mixedCase
Parameter STEPM.setSellFee(uint256,uint256,uint256)._devFee (#1191) is not in mixedCase
Parameter STEPM.setSellFee(uint256,uint256,uint256)._adFee (#1191) is not in mixedCase
Parameter STEPM.setSellFee(uint256,uint256,uint256)._mktFee (#1191) is not in mixedCase
Parameter STEPM.setBuyFee(uint256,uint256,uint256)._poolFee (#1198) is not in mixedCase
Parameter STEPM.setBuyFee(uint256,uint256,uint256)._lqdtFee (#1198) is not in mixedCase
Parameter STEPM.setBuyFee(uint256,uint256,uint256)._mktFee (#1198) is not in mixedCase
Parameter STEPM.setHoldTime(bool,uint256)._sec (#1217) is not in mixedCase
Variable STEPM.SellFee (#1146) is not in mixedCase
Variable STEPM.BuyFee (#1150) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#32) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#33)
Prevent variables from having similar names.
Additional information: link
STEPM.slitherConstructorVariables() (#1137-1336) uses literals with too many digits:
- maxBuy = 100000 (#1151)
STEPM.slitherConstructorVariables() (#1137-1336) uses literals with too many digits:
- maxSell = 100000 (#1153)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
STEPM.airdropAddress (#1159) should be constant
STEPM.developmentAddress (#1158) should be constant
STEPM.marketingAddress (#1157) should be constant
STEPM.maxBuy (#1151) should be constant
STEPM.maxSell (#1153) should be constant
STEPM.maxSupply (#1140) should be constant
STEPM.minBuy (#1152) should be constant
STEPM.minSell (#1154) should be constant
STEPM.poolAddress (#1156) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#800-802)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#808-811)
name() should be declared external:
- ERC20.name() (#895-897)
decimals() should be declared external:
- ERC20.decimals() (#902-904)
symbol() should be declared external:
- ERC20.symbol() (#909-911)
totalSupply() should be declared external:
- ERC20.totalSupply() (#916-918)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (#923-925)
Use the external attribute for functions never called from the contract.
Additional information: link
BscScan page for the token does not contain additional info: website, socials, description, etc.
Additional information: link
Unable to find audit link on the website
Unable to find whitepaper link on the website
Unable to find token on CoinGecko
Additional information: link
Token was delisted (assigned to inactive / untracked listing) from CoinMarketCap
Additional information: link
Token is not listed at Mobula.Finance
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
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account