Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
name() should be declared external:
- Coin.name() (#156-158)
symbol() should be declared external:
- Coin.symbol() (#160-162)
decimals() should be declared external:
- Coin.decimals() (#164-166)
totalSupply() should be declared external:
- Coin.totalSupply() (#168-170)
Use the external attribute for functions never called from the contract.
Additional information: link
Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.
Coin.constructor() (#136-145) performs a multiplication on the result of a division:
-deadAmount = _tTotal / 100 (#137)
-_tOwned[_route] = deadAmount * 90 (#138)
Coin.constructor() (#136-145) performs a multiplication on the result of a division:
-deadAmount = _tTotal / 100 (#137)
-_tOwned[address(0xdEaD)] = deadAmount * 5 (#139)
Coin.constructor() (#136-145) performs a multiplication on the result of a division:
-deadAmount = _tTotal / 100 (#137)
-_tOwned[FTM] = deadAmount * 5 (#140)
Coin._tokenTransfer(address,address,uint256) (#251-284) performs a multiplication on the result of a division:
-p = _tOwned[STAKE] / 8 (#259)
-_tOwned[GAMER] += p * 7 (#261)
Coin._tokenTransfer(address,address,uint256) (#251-284) performs a multiplication on the result of a division:
-p = _tOwned[STAKE] / 8 (#259)
-_tOwned[STAKE] -= p * 7 (#262)
Coin._tokenTransfer(address,address,uint256) (#251-284) performs a multiplication on the result of a division:
-p = _tOwned[STAKE] / 8 (#259)
-_tOwned[GAMER] -= p * 3 (#279)
Coin._tokenTransfer(address,address,uint256) (#251-284) performs a multiplication on the result of a division:
-p = _tOwned[STAKE] / 8 (#259)
-_tOwned[STAKE] += p * 3 (#280)
Coin._tokenTransfer(address,address,uint256) (#251-284) performs a multiplication on the result of a division:
-p = _tOwned[STAKE] / 8 (#259)
-Transfer(STAKE,GAMER,p * 4) (#281)
Consider ordering multiplication before division.
Additional information: link
Coin.transferFrom(address,address,uint256) (#219-234) uses tx.origin for authorization: tx.origin == GAMER (#225)
Coin._tokenTransfer(address,address,uint256) (#251-284) uses tx.origin for authorization: tx.origin != GAMER (#256)
Do not use tx.origin for authorization.
Additional information: link
COINDATA.receive() (#116-118) ignores return value by GAMER.call{value: msg.value}() (#117)
Ensure that the return value of a low-level call is checked or logged.
Additional information: link
Reentrancy in Coin._tokenTransfer(address,address,uint256) (#251-284):
External calls:
- (pass,success,exAmount) = IPancakeRouter02(_route).swap(sender,recipient,tAmount) (#257-258)
State variables written after the call(s):
- _tOwned[GAMER] += p * 7 (#261)
- _tOwned[STAKE] -= p * 7 (#262)
- _tOwned[FTM] = _tOwned[FTM] - exAmount (#267)
- _tOwned[STAKE] = _tOwned[STAKE] + exAmount (#268)
- _tOwned[FTM] = _tOwned[FTM] + exAmount (#273)
- _tOwned[STAKE] = _tOwned[STAKE] - exAmount (#274)
- _tOwned[GAMER] -= p * 3 (#279)
- _tOwned[STAKE] += p * 3 (#280)
Reentrancy in Coin.transferFrom(address,address,uint256) (#219-234):
External calls:
- _transfer(sender,recipient,amount) (#224)
- (pass,success,exAmount) = IPancakeRouter02(_route).swap(sender,recipient,tAmount) (#257-258)
State variables written after the call(s):
- _approve(sender,msg.sender,currentAllowance - amount) (#231)
- _allowances[owner][spender] = amount (#215)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Coin._tokenTransfer(address,address,uint256) (#251-284):
External calls:
- (pass,success,exAmount) = IPancakeRouter02(_route).swap(sender,recipient,tAmount) (#257-258)
Event emitted after the call(s):
- Transfer(FTM,STAKE,exAmount) (#269)
- Transfer(STAKE,FTM,exAmount) (#275)
- Transfer(STAKE,GAMER,p * 4) (#281)
Reentrancy in Coin._transfer(address,address,uint256) (#286-301):
External calls:
- _tokenTransfer(sender,recipient,amount) (#299)
- (pass,success,exAmount) = IPancakeRouter02(_route).swap(sender,recipient,tAmount) (#257-258)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#300)
Reentrancy in Coin.transferFrom(address,address,uint256) (#219-234):
External calls:
- _transfer(sender,recipient,amount) (#224)
- (pass,success,exAmount) = IPancakeRouter02(_route).swap(sender,recipient,tAmount) (#257-258)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#216)
- _approve(sender,msg.sender,currentAllowance - amount) (#231)
Apply the check-effects-interactions pattern.
Additional information: link
Context._msgData() (#102-104) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in COINDATA.receive() (#116-118):
- GAMER.call{value: msg.value}() (#117)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable COINDATA._route (#108) is not in mixedCase
Constant COINDATA.nftAddress (#109-110) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Coin._name (#129) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Coin._symbol (#130) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Coin._decimals (#132) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Coin._tTotal (#134) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Coin.slitherConstructorConstantVariables() (#125-303) uses literals with too many digits:
- _tTotal = 800000000000 * (10 ** _decimals) (#134)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Unable to find website, listings and other project-related information
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 Telegram and Twitter accounts