Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
ShinjaKing.addLiquidity(uint256,uint256) (#1268-1284) sends eth to arbitrary user
Dangerous calls:
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in ShinjaKing._transfer(address,address,uint256) (#1189-1247):
External calls:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- address(marketingWalletAddress).sendValue(ethAmount - ethFromLiquidity) (#1283)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- address(feeAddress).sendValue(newBalance) (#1251)
- (success) = recipient.call{value: amount}() (#897)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- swapAndSendToFee(devTokens,devWalletAddress) (#1223)
- address(feeAddress).sendValue(newBalance) (#1251)
- (success) = recipient.call{value: amount}() (#897)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- (success) = recipient.call{value: amount}() (#897)
- swapAndSendToFee(devTokens,devWalletAddress) (#1223)
- (success) = recipient.call{value: amount}() (#897)
State variables written after the call(s):
- super._transfer(from,address(this),fees) (#1243)
- _balances[sender] = senderBalance - amount (#716)
- _balances[recipient] += amount (#718)
- super._transfer(from,to,amount) (#1246)
- _balances[sender] = senderBalance - amount (#716)
- _balances[recipient] += amount (#718)
- swapping = false (#1226)
Apply the check-effects-interactions pattern.
Additional information: link
ShinjaKing.withdrawOtherTokens(address,address) (#1171-1176) ignores return value by token.transfer(_account,tokenBalance) (#1174)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Combination 1: Reentrancy vulnerabilities + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 2: Unchecked transfer + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 3: Reentrancy vulnerabilities + Unchecked transfer vulnerability. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
ShinjaKing.setLiquidityFee(uint256) (#1118-1120) should emit an event for:
- liquidityFee = value (#1119)
ShinjaKing.setMarketingFee(uint256) (#1122-1124) should emit an event for:
- marketingFee = value (#1123)
ShinjaKing.setDevFee(uint256) (#1126-1128) should emit an event for:
- devFee = value (#1127)
Emit an event for critical parameter changes.
Additional information: link
ShinjaKing.updateUniswapV2Router(address)._uniswapV2Pair (#1090) lacks a zero-check on :
- uniswapV2Pair = _uniswapV2Pair (#1091)
ShinjaKing.setMarketingWallet(address).wallet (#1108) lacks a zero-check on :
- marketingWalletAddress = wallet (#1110)
ShinjaKing.setDevWallet(address).wallet (#1113) lacks a zero-check on :
- devWalletAddress = wallet (#1115)
Check that the address is not zero.
Additional information: link
ShinjaKing.swapTokensForEth(uint256) (#1286-1306) has external calls inside a loop: path[1] = uniswapV2Router.WETH() (#1292)
ShinjaKing.swapTokensForEth(uint256) (#1286-1306) has external calls inside a loop: uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
ShinjaKing.addLiquidity(uint256,uint256) (#1268-1284) has external calls inside a loop: (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
Address.sendValue(address,uint256) (#893-899) has external calls inside a loop: (success) = recipient.call{value: amount}() (#897)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in ShinjaKing._transfer(address,address,uint256) (#1189-1247):
External calls:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- address(marketingWalletAddress).sendValue(ethAmount - ethFromLiquidity) (#1283)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- address(feeAddress).sendValue(newBalance) (#1251)
- (success) = recipient.call{value: amount}() (#897)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- (success) = recipient.call{value: amount}() (#897)
State variables written after the call(s):
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- _allowances[owner][spender] = amount (#795)
Reentrancy in ShinjaKing._transfer(address,address,uint256) (#1189-1247):
External calls:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- address(marketingWalletAddress).sendValue(ethAmount - ethFromLiquidity) (#1283)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- address(feeAddress).sendValue(newBalance) (#1251)
- (success) = recipient.call{value: amount}() (#897)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- swapAndSendToFee(devTokens,devWalletAddress) (#1223)
- address(feeAddress).sendValue(newBalance) (#1251)
- (success) = recipient.call{value: amount}() (#897)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- (success) = recipient.call{value: amount}() (#897)
- swapAndSendToFee(devTokens,devWalletAddress) (#1223)
- (success) = recipient.call{value: amount}() (#897)
State variables written after the call(s):
- swapAndSendToFee(devTokens,devWalletAddress) (#1223)
- _allowances[owner][spender] = amount (#795)
Reentrancy in ShinjaKing.constructor() (#1039-1062):
External calls:
- _uniswapV2Pair = ISwapFactory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1042)
State variables written after the call(s):
- _mint(owner(),1_000_000_000 * 10 ** 18) (#1060)
- _balances[account] += amount (#740)
- _mint(owner(),1_000_000_000 * 10 ** 18) (#1060)
- _totalSupply += amount (#739)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1047)
- automatedMarketMakerPairs[pair] = value (#1161)
- excludeFromFees(owner(),true) (#1050)
- isExcludedFromFees[account] = excluded (#1095)
- excludeFromFees(marketingWalletAddress,true) (#1051)
- isExcludedFromFees[account] = excluded (#1095)
- excludeFromFees(devWalletAddress,true) (#1052)
- isExcludedFromFees[account] = excluded (#1095)
- excludeFromFees(BURN_ADDRESS,true) (#1053)
- isExcludedFromFees[account] = excluded (#1095)
- excludeFromFees(address(this),true) (#1054)
- isExcludedFromFees[account] = excluded (#1095)
- maxTxAmount = totalSupply() / 500 (#1061)
- uniswapV2Pair = _uniswapV2Pair (#1045)
- uniswapV2Router = _uniswapV2Router (#1044)
Reentrancy in ShinjaKing.swapAndLiquify(uint256) (#1254-1266):
External calls:
- newBalance = swapTokensForEth(half) (#1260)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- addLiquidity(otherHalf,newBalance) (#1263)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- address(marketingWalletAddress).sendValue(ethAmount - ethFromLiquidity) (#1283)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1263)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1263)
- _allowances[owner][spender] = amount (#795)
Reentrancy in ShinjaKing.updateUniswapV2Router(address) (#1086-1092):
External calls:
- _uniswapV2Pair = ISwapFactory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (#1090)
State variables written after the call(s):
- uniswapV2Pair = _uniswapV2Pair (#1091)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in ShinjaKing._transfer(address,address,uint256) (#1189-1247):
External calls:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- address(marketingWalletAddress).sendValue(ethAmount - ethFromLiquidity) (#1283)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- address(feeAddress).sendValue(newBalance) (#1251)
- (success) = recipient.call{value: amount}() (#897)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- (success) = recipient.call{value: amount}() (#897)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#796)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
Reentrancy in ShinjaKing._transfer(address,address,uint256) (#1189-1247):
External calls:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- address(marketingWalletAddress).sendValue(ethAmount - ethFromLiquidity) (#1283)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- address(feeAddress).sendValue(newBalance) (#1251)
- (success) = recipient.call{value: amount}() (#897)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- swapAndSendToFee(devTokens,devWalletAddress) (#1223)
- address(feeAddress).sendValue(newBalance) (#1251)
- (success) = recipient.call{value: amount}() (#897)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1218)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- swapAndSendToFee(marketingTokens,marketingWalletAddress) (#1221)
- (success) = recipient.call{value: amount}() (#897)
- swapAndSendToFee(devTokens,devWalletAddress) (#1223)
- (success) = recipient.call{value: amount}() (#897)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#796)
- swapAndSendToFee(devTokens,devWalletAddress) (#1223)
- Transfer(sender,recipient,amount) (#720)
- super._transfer(from,to,amount) (#1246)
- Transfer(sender,recipient,amount) (#720)
- super._transfer(from,address(this),fees) (#1243)
Reentrancy in ShinjaKing.constructor() (#1039-1062):
External calls:
- _uniswapV2Pair = ISwapFactory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1042)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#1097)
- excludeFromFees(BURN_ADDRESS,true) (#1053)
- ExcludeFromFees(account,excluded) (#1097)
- excludeFromFees(devWalletAddress,true) (#1052)
- ExcludeFromFees(account,excluded) (#1097)
- excludeFromFees(marketingWalletAddress,true) (#1051)
- ExcludeFromFees(account,excluded) (#1097)
- excludeFromFees(owner(),true) (#1050)
- ExcludeFromFees(account,excluded) (#1097)
- excludeFromFees(address(this),true) (#1054)
- SetAutomatedMarketMakerPair(pair,value) (#1163)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1047)
- Transfer(address(0),account,amount) (#741)
- _mint(owner(),1_000_000_000 * 10 ** 18) (#1060)
Reentrancy in ShinjaKing.swapAndLiquify(uint256) (#1254-1266):
External calls:
- newBalance = swapTokensForEth(half) (#1260)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1297-1303)
- addLiquidity(otherHalf,newBalance) (#1263)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
- address(marketingWalletAddress).sendValue(ethAmount - ethFromLiquidity) (#1283)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1263)
- (success) = recipient.call{value: amount}() (#897)
- (ethFromLiquidity) = uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1274-1281)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#796)
- addLiquidity(otherHalf,newBalance) (#1263)
- SwapAndLiquify(half,newBalance,otherHalf) (#1265)
Reentrancy in ShinjaKing.withdrawExcessBNB(address) (#1180-1187):
External calls:
- address(_account).sendValue(contractBNBBalance) (#1184)
Event emitted after the call(s):
- AccidentallySentBNBWithdrawn(_account,contractBNBBalance) (#1186)
Reentrancy in ShinjaKing.withdrawOtherTokens(address,address) (#1171-1176):
External calls:
- token.transfer(_account,tokenBalance) (#1174)
Event emitted after the call(s):
- AccidentallySentTokenWithdrawn(_token,_account,tokenBalance) (#1175)
Apply the check-effects-interactions pattern.
Additional information: link
ShinjaKing._transfer(address,address,uint256) (#1189-1247) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(isBlacklistedUntil[from] < block.timestamp && isBlacklistedUntil[to] < block.timestamp,ShinjaKing: Blacklisted address) (#1197)
- canSwap = contractTokenBalance >= swapTokensAtAmount && launchedAt + 10 < block.timestamp && tradingOpened (#1207)
- canSwap && ! swapping && ! automatedMarketMakerPairs[from] && from != owner() && to != owner() (#1209-1213)
- launchedAt + 10 < block.timestamp (#1237)
ShinjaKing.addLiquidity(uint256,uint256) (#1268-1284) uses timestamp for comparisons
Dangerous comparisons:
- ethAmount - ethFromLiquidity > 0 (#1282)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#866-875) uses assembly
- INLINE ASM (#873)
Address._functionCallWithValue(address,bytes,uint256,string) (#959-980) uses assembly
- INLINE ASM (#972-975)
Do not use evm assembly.
Additional information: link
ShinjaKing._transfer(address,address,uint256) (#1189-1247) has costly operations inside a loop:
- swapping = true (#1215)
ShinjaKing._transfer(address,address,uint256) (#1189-1247) has costly operations inside a loop:
- swapping = false (#1226)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#959-980) is never used and should be removed
Address.functionCall(address,bytes) (#919-921) is never used and should be removed
Address.functionCall(address,bytes,string) (#929-931) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#944-946) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#954-957) is never used and should be removed
Address.isContract(address) (#866-875) is never used and should be removed
Context._msgData() (#304-307) is never used and should be removed
ERC20._burn(address,uint256) (#757-772) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#893-899):
- (success) = recipient.call{value: amount}() (#897)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#959-980):
- (success,returndata) = target.call{value: weiValue}(data) (#963)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function ISwapPair.DOMAIN_SEPARATOR() (#57) is not in mixedCase
Function ISwapPair.PERMIT_TYPEHASH() (#58) is not in mixedCase
Function ISwapPair.MINIMUM_LIQUIDITY() (#75) is not in mixedCase
Function ISwapRouter01.WETH() (#95) is not in mixedCase
Parameter ShinjaKing.toggleTrading(bool)._tradingOpened (#1154) is not in mixedCase
Parameter ShinjaKing.withdrawOtherTokens(address,address)._token (#1171) is not in mixedCase
Parameter ShinjaKing.withdrawOtherTokens(address,address)._account (#1171) is not in mixedCase
Parameter ShinjaKing.withdrawExcessBNB(address)._account (#1180) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#305)" inContext (#299-308)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable ISwapRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#100) is too similar to ISwapRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#101)
Prevent variables from having similar names.
Additional information: link
ShinjaKing.slitherConstructorConstantVariables() (#988-1308) uses literals with too many digits:
- BURN_ADDRESS = 0x000000000000000000000000000000000000dEaD (#997)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Ownable._previousOwner (#330) is never used in ShinjaKing (#988-1308)
Ownable._lockTime (#331) is never used in ShinjaKing (#988-1308)
ShinjaKing.antibotEndTime (#1012) is never used in ShinjaKing (#988-1308)
Remove unused state variables.
Additional information: link
Ownable._lockTime (#331) should be constant
Ownable._previousOwner (#330) should be constant
ShinjaKing.antibotEndTime (#1012) should be constant
ShinjaKing.feeDenominator (#1007) should be constant
ShinjaKing.swapTokensAtAmount (#999) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#366-369)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#375-379)
name() should be declared external:
- ERC20.name() (#544-546)
symbol() should be declared external:
- ERC20.symbol() (#552-554)
decimals() should be declared external:
- ERC20.decimals() (#569-571)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#595-598)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#603-605)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#614-617)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#632-646)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#660-663)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#679-687)
updateUniswapV2Router(address) should be declared external:
- ShinjaKing.updateUniswapV2Router(address) (#1086-1092)
excludeMultipleAccountsFromFees(address[],bool) should be declared external:
- ShinjaKing.excludeMultipleAccountsFromFees(address[],bool) (#1100-1106)
setAutomatedMarketMakerPair(address,bool) should be declared external:
- ShinjaKing.setAutomatedMarketMakerPair(address,bool) (#1139-1143)
excludedFromFees(address) should be declared external:
- ShinjaKing.excludedFromFees(address) (#1166-1168)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Token is marked as scam (rug pull, honeypot, phishing, etc.)
Additional information: link
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