A Web 3.0 Fitness app Based on The Move-to-earn (M2E) concept.
Sprint combines blockchain technology with Social-fi elements and rewards users in Cryptocurrency just by walking and running!
Reentrancy in Sprint._transferFrom(address,address,uint256) (#273-310):
External calls:
- swapBack() (#299)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#383-389)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#404-411)
External calls sending eth:
- swapBack() (#299)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#400)
- address(rewardsFeeReceiver).transfer(amountBNBrewards) (#401)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#404-411)
State variables written after the call(s):
- balanceOf[sender] = balanceOf[sender].sub(amount,Insufficient Balance) (#301)
- balanceOf[recipient] = balanceOf[recipient].add(amountReceived) (#305)
- amountReceived = takeFee(sender,amount,recipient) (#303)
- balanceOf[address(this)] = balanceOf[address(this)].add(contractTokens) (#337)
Apply the check-effects-interactions pattern.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Contract ownership is not renounced (belongs to a wallet)
Sprint._transferFrom(address,address,uint256) (#273-310) uses a dangerous strict equality:
- firstbuy[recipient] == 0 (#281)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Sprint.takeFee(address,uint256,address) (#319-342) performs a multiplication on the result of a division:
-feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100) (#332)
-stakingTokens = feeAmount.mul(stakingFee).div(totalFee) (#333)
Consider ordering multiplication before division.
Additional information: link
Sprint.swapBack() (#375-414) ignores return value by router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#404-411)
Ensure that all the return values of the function calls are used.
Additional information: link
Sprint.setMultipliers(uint256,uint256,uint256) (#452-459) should emit an event for:
- sellMultiplier = _sell (#453)
- buyMultiplier = _buy (#454)
- transferMultiplier = _trans (#455)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in Sprint.constructor() (#207-233):
External calls:
- pair = IDEXFactory(router.factory()).createPair(WBNB,address(this)) (#211)
State variables written after the call(s):
- _allowances[address(this)][address(router)] = type()(uint256).max (#212)
- autoLiquidityReceiver = 0x000000000000000000000000000000000000dEaD (#214)
- balanceOf[msg.sender] = totalSupply (#231)
- isFeeExempt[msg.sender] = true (#219)
- isTxLimitExempt[msg.sender] = true (#221)
- isTxLimitExempt[DEAD] = true (#222)
- isTxLimitExempt[ZERO] = true (#223)
- isTxLimitExempt[address(this)] = true (#224)
- isWalletLimitExempt[msg.sender] = true (#226)
- isWalletLimitExempt[address(this)] = true (#227)
- isWalletLimitExempt[DEAD] = true (#228)
- marketingFeeReceiver = 0xAae74EBDf754562EEa1E1f125ED2AcFa70Cf919f (#215)
- rewardsFeeReceiver = 0x7E0753a7d2e2CAA63932B2Cc5b330C8f2Ba49163 (#216)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Sprint._transferFrom(address,address,uint256) (#273-310):
External calls:
- swapBack() (#299)
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#383-389)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#404-411)
External calls sending eth:
- swapBack() (#299)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#400)
- address(rewardsFeeReceiver).transfer(amountBNBrewards) (#401)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#404-411)
Event emitted after the call(s):
- Transfer(sender,address(this),contractTokens) (#338)
- amountReceived = takeFee(sender,amount,recipient) (#303)
- Transfer(sender,recipient,amountReceived) (#308)
Reentrancy in Sprint.constructor() (#207-233):
External calls:
- pair = IDEXFactory(router.factory()).createPair(WBNB,address(this)) (#211)
Event emitted after the call(s):
- Transfer(address(0),msg.sender,totalSupply) (#232)
Reentrancy in Sprint.swapBack() (#375-414):
External calls:
- router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#383-389)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#404-411)
External calls sending eth:
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#400)
- address(rewardsFeeReceiver).transfer(amountBNBrewards) (#401)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#404-411)
Event emitted after the call(s):
- AutoLiquify(amountBNBLiquidity,amountToLiquify) (#412)
Apply the check-effects-interactions pattern.
Additional information: link
Sprint.totalFee (#179) is set pre-construction with a non-constant function or state variable:
- rewardsFee + marketingFee
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
Pragma version0.8.12 (#20) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
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 IDEXRouter.WETH() (#130) is not in mixedCase
Event SprintWallet_feeExempt(address,bool) (#481) is not in CapWords
Event SprintWallet_txExempt(address,bool) (#482) is not in CapWords
Event SprintWallet_holdingExempt(address,bool) (#483) is not in CapWords
Event SprintWallet_blacklist(address,bool) (#484) is not in CapWords
Event SprintclearToken(address,uint256) (#487) is not in CapWords
Event Sprintconfig_MaxWallet(uint256) (#489) is not in CapWords
Event Sprintconfig_MaxTransaction(uint256) (#490) is not in CapWords
Event Sprintconfig_TradingStatus(bool) (#491) is not in CapWords
Event Sprintconfig_LaunchMode(bool) (#492) is not in CapWords
Event Sprintconfig_BlacklistMode(bool) (#493) is not in CapWords
Event Sprintconfig_SwapSettings(uint256,bool) (#494) is not in CapWords
Function Sprint.setMaxWalletPercent_base100(uint256) (#262-266) is not in mixedCase
Parameter Sprint.setMaxWalletPercent_base100(uint256).maxWallPercent_base1000 (#262) is not in mixedCase
Function Sprint.setMaxTxPercent_base100(uint256) (#267-271) is not in mixedCase
Parameter Sprint.setMaxTxPercent_base100(uint256).maxTXPercentage_base1000 (#267) is not in mixedCase
Parameter Sprint.tradingStatus(bool,bool)._status (#358) is not in mixedCase
Parameter Sprint.tradingStatus(bool,bool)._ab (#358) is not in mixedCase
Function Sprint.tradingStatus_launchmode(uint256) (#367-373) is not in mixedCase
Function Sprint.manage_FeeExempt(address[],bool) (#418-424) is not in mixedCase
Function Sprint.manage_TxLimitExempt(address[],bool) (#426-432) is not in mixedCase
Function Sprint.manage_WalletLimitExempt(address[],bool) (#434-440) is not in mixedCase
Parameter Sprint.setMultipliers(uint256,uint256,uint256)._buy (#452) is not in mixedCase
Parameter Sprint.setMultipliers(uint256,uint256,uint256)._sell (#452) is not in mixedCase
Parameter Sprint.setMultipliers(uint256,uint256,uint256)._trans (#452) is not in mixedCase
Parameter Sprint.setSwapBackSettings(bool,uint256)._enabled (#463) is not in mixedCase
Parameter Sprint.setSwapBackSettings(bool,uint256)._amount (#463) is not in mixedCase
Variable Sprint.WBNB (#153) is not in mixedCase
Constant Sprint.totalSupply (#161) is not in UPPER_CASE_WITH_UNDERSCORES
Variable Sprint._maxTxAmount (#163) is not in mixedCase
Variable Sprint._maxWalletToken (#164) is not in mixedCase
Variable Sprint._allowances (#167) is not in mixedCase
Constant Sprint.feeDenominator (#180) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Reentrancy in Sprint._transferFrom(address,address,uint256) (#273-310):
External calls:
- swapBack() (#299)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#400)
- address(rewardsFeeReceiver).transfer(amountBNBrewards) (#401)
External calls sending eth:
- swapBack() (#299)
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#400)
- address(rewardsFeeReceiver).transfer(amountBNBrewards) (#401)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#404-411)
State variables written after the call(s):
- balanceOf[sender] = balanceOf[sender].sub(amount,Insufficient Balance) (#301)
- balanceOf[recipient] = balanceOf[recipient].add(amountReceived) (#305)
- amountReceived = takeFee(sender,amount,recipient) (#303)
- balanceOf[address(this)] = balanceOf[address(this)].add(contractTokens) (#337)
Event emitted after the call(s):
- Transfer(sender,address(this),contractTokens) (#338)
- amountReceived = takeFee(sender,amount,recipient) (#303)
- Transfer(sender,recipient,amountReceived) (#308)
Reentrancy in Sprint.swapBack() (#375-414):
External calls:
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#400)
- address(rewardsFeeReceiver).transfer(amountBNBrewards) (#401)
External calls sending eth:
- address(marketingFeeReceiver).transfer(amountBNBMarketing) (#400)
- address(rewardsFeeReceiver).transfer(amountBNBrewards) (#401)
- router.addLiquidityETH{value: amountBNBLiquidity}(address(this),amountToLiquify,0,0,autoLiquidityReceiver,block.timestamp) (#404-411)
Event emitted after the call(s):
- AutoLiquify(amountBNBLiquidity,amountToLiquify) (#412)
Apply the check-effects-interactions pattern.
Additional information: link
Sprint.constructor() (#207-233) uses literals with too many digits:
- autoLiquidityReceiver = 0x000000000000000000000000000000000000dEaD (#214)
Sprint.slitherConstructorConstantVariables() (#150-497) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (#154)
Sprint.slitherConstructorConstantVariables() (#150-497) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (#155)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Sprint.liquidityFee (#175) should be constant
Sprint.marketingFee (#178) should be constant
Sprint.rewardsFee (#176) should be constant
Sprint.stakingFee (#177) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
authorize(address) should be declared external:
- Auth.authorize(address) (#87-89)
unauthorize(address) should be declared external:
- Auth.unauthorize(address) (#91-94)
transferOwnership(address) should be declared external:
- Auth.transferOwnership(address) (#104-109)
acceptOwnership() should be declared external:
- Auth.acceptOwnership() (#111-118)
getCirculatingSupply() should be declared external:
- Sprint.getCirculatingSupply() (#472-474)
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
Token is not listed at Mobula.Finance
Additional information: link
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
Token has no active CoinGecko listing / rank
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Unable to find Blog account (Reddit or Medium)
Unable to find Discord account