Step Land is built around an essential daily activity – moving around. Users equip themselves with NFTs in the form of shoes. By walking, jogging, or running outdoors, users will earn game tokens, which can either be used in-game, or cashed-in for profit.
SLD.withdraw(address,uint256) (contracts/SLD.sol#275-290) ignores return value by IERC20(token).transfer(_msgSender(),amount) (contracts/SLD.sol#289)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract ownership is not renounced (belongs to a wallet)
Reentrancy in SLD._transfer(address,address,uint256) (contracts/SLD.sol#158-190):
External calls:
- swapTokensForEth(contractTokenBalance,marketingAccount) (contracts/SLD.sol#174)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (contracts/SLD.sol#201-207)
State variables written after the call(s):
- balances[from] = balances[from].sub(amount) (contracts/SLD.sol#178)
- balances[address(this)] = balances[address(this)].add(tradeFeeAmount) (contracts/SLD.sol#182-184)
- balances[to] = balances[to].add(toAmount) (contracts/SLD.sol#188)
- inSwap = false (contracts/SLD.sol#175)
Apply the check-effects-interactions pattern.
Additional information: link
SLD.balanceOf(address)._owner (contracts/SLD.sol#236) shadows:
- Ownable._owner (@openzeppelin/contracts/access/Ownable.sol#21) (state variable)
SLD._approve(address,address,uint256).owner (contracts/SLD.sol#246) shadows:
- Ownable.owner() (@openzeppelin/contracts/access/Ownable.sol#35-37) (function)
SLD.allowance(address,address)._owner (contracts/SLD.sol#266) shadows:
- Ownable._owner (@openzeppelin/contracts/access/Ownable.sol#21) (state variable)
Rename the local variables that shadow another component.
Additional information: link
SLD.setFee(uint256) (contracts/SLD.sol#145-148) should emit an event for:
- fee = newFee (contracts/SLD.sol#147)
SLD.setSwapTokensAtAmount(uint256) (contracts/SLD.sol#150-152) should emit an event for:
- swapTokensAtAmount = newValue (contracts/SLD.sol#151)
Emit an event for critical parameter changes.
Additional information: link
SLD.constructor(string,string,uint8,uint256,uint256,uint256,address,address)._marketingAccount (contracts/SLD.sol#116) lacks a zero-check on :
- marketingAccount = _marketingAccount (contracts/SLD.sol#133)
Check that the address is not zero.
Additional information: link
Reentrancy in SLD.constructor(string,string,uint8,uint256,uint256,uint256,address,address) (contracts/SLD.sol#108-139):
External calls:
- uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (contracts/SLD.sol#128-131)
State variables written after the call(s):
- isWhitelisted[msg.sender] = true (contracts/SLD.sol#136)
- isWhitelisted[address(this)] = true (contracts/SLD.sol#137)
- isWhitelisted[marketingAccount] = true (contracts/SLD.sol#138)
- marketingAccount = _marketingAccount (contracts/SLD.sol#133)
Reentrancy in SLD.transferFrom(address,address,uint256) (contracts/SLD.sol#219-234):
External calls:
- _transfer(_from,_to,_value) (contracts/SLD.sol#224)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (contracts/SLD.sol#201-207)
State variables written after the call(s):
- _approve(_from,msg.sender,allowed[_from][msg.sender].sub(_value,ERC20: transfer amount exceeds allowance)) (contracts/SLD.sol#225-232)
- allowed[owner][spender] = amount (contracts/SLD.sol#253)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in SLD._transfer(address,address,uint256) (contracts/SLD.sol#158-190):
External calls:
- swapTokensForEth(contractTokenBalance,marketingAccount) (contracts/SLD.sol#174)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (contracts/SLD.sol#201-207)
Event emitted after the call(s):
- Transfer(from,address(this),tradeFeeAmount) (contracts/SLD.sol#185)
- Transfer(from,to,toAmount) (contracts/SLD.sol#189)
Reentrancy in SLD.transferFrom(address,address,uint256) (contracts/SLD.sol#219-234):
External calls:
- _transfer(_from,_to,_value) (contracts/SLD.sol#224)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,receiver,block.timestamp) (contracts/SLD.sol#201-207)
Event emitted after the call(s):
- Approval(owner,spender,amount) (contracts/SLD.sol#254)
- _approve(_from,msg.sender,allowed[_from][msg.sender].sub(_value,ERC20: transfer amount exceeds allowance)) (contracts/SLD.sol#225-232)
Apply the check-effects-interactions pattern.
Additional information: link
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#21-23) is never used and should be removed
SafeMath.div(uint256,uint256,string) (@openzeppelin/contracts/utils/math/SafeMath.sol#191-200) is never used and should be removed
SafeMath.mod(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#151-153) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (@openzeppelin/contracts/utils/math/SafeMath.sol#217-226) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#22-28) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#64-69) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#76-81) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#47-57) is never used and should be removed
SafeMath.trySub(uint256,uint256) (@openzeppelin/contracts/utils/math/SafeMath.sol#35-40) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Context.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/math/SafeMath.sol#4) allows old versions
Pragma version^0.8.0 (contracts/SLD.sol#2) 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
Function IUniswapV2Router01.WETH() (contracts/SLD.sol#23) is not in mixedCase
Parameter SLD.transfer(address,uint256)._to (contracts/SLD.sol#210) is not in mixedCase
Parameter SLD.transfer(address,uint256)._value (contracts/SLD.sol#210) is not in mixedCase
Parameter SLD.transferFrom(address,address,uint256)._from (contracts/SLD.sol#220) is not in mixedCase
Parameter SLD.transferFrom(address,address,uint256)._to (contracts/SLD.sol#221) is not in mixedCase
Parameter SLD.transferFrom(address,address,uint256)._value (contracts/SLD.sol#222) is not in mixedCase
Parameter SLD.balanceOf(address)._owner (contracts/SLD.sol#236) is not in mixedCase
Parameter SLD.approve(address,uint256)._spender (contracts/SLD.sol#257) is not in mixedCase
Parameter SLD.approve(address,uint256)._value (contracts/SLD.sol#257) is not in mixedCase
Parameter SLD.allowance(address,address)._owner (contracts/SLD.sol#266) is not in mixedCase
Parameter SLD.allowance(address,address)._spender (contracts/SLD.sol#266) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
SLD.MAX_UINT256 (contracts/SLD.sol#87) is never used in SLD (contracts/SLD.sol#84-291)
Remove unused state variables.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (@openzeppelin/contracts/access/Ownable.sol#54-56)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (@openzeppelin/contracts/access/Ownable.sol#62-65)
setWhitelist(address,bool) should be declared external:
- SLD.setWhitelist(address,bool) (contracts/SLD.sol#141-143)
setFee(uint256) should be declared external:
- SLD.setFee(uint256) (contracts/SLD.sol#145-148)
setSwapTokensAtAmount(uint256) should be declared external:
- SLD.setSwapTokensAtAmount(uint256) (contracts/SLD.sol#150-152)
transfer(address,uint256) should be declared external:
- SLD.transfer(address,uint256) (contracts/SLD.sol#210-217)
transferFrom(address,address,uint256) should be declared external:
- SLD.transferFrom(address,address,uint256) (contracts/SLD.sol#219-234)
approve(address,uint256) should be declared external:
- SLD.approve(address,uint256) (contracts/SLD.sol#257-264)
allowance(address,address) should be declared external:
- SLD.allowance(address,address) (contracts/SLD.sol#266-273)
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 token contract audit
Unable to find audit link on the website
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Unable to find token on CoinHunt
Additional information: link
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
Young tokens have high risks of price dump / death
Unable to find Discord account
Twitter account has few posts