Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
XRPKING._claimBNBTo(address,address,uint256) (#559-570) sends eth to arbitrary user
Dangerous calls:
- (sent) = to.call{value: (amountWei)}() (#566)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in XRPKING._claimBNBTo(address,address,uint256) (#559-570):
External calls:
- (sent) = to.call{value: (amountWei)}() (#566)
State variables written after the call(s):
- _isWithdrawing = false (#568)
Reentrancy in XRPKING._taxedTransfer(address,address,uint256,bool,bool) (#886-934):
External calls:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#833-839)
- (sent) = to.call{value: (amountWei)}() (#566)
External calls sending eth:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- (sent) = to.call{value: (amountWei)}() (#566)
State variables written after the call(s):
- _removeToken(sender,amount) (#928)
- _balances[addr] = newAmount (#738)
- _balances[addr] = newAmount (#744)
- _addToken(address(this),contractToken) (#929)
- _balances[addr] = newAmount (#720)
- _balances[addr] = newAmount (#726)
- _balances[addr] = newAmount (#731)
- _addToken(recipient,taxedAmount) (#932)
- _balances[addr] = newAmount (#720)
- _balances[addr] = newAmount (#726)
- _balances[addr] = newAmount (#731)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _isWithdrawing = true (#562)
- _isWithdrawing = false (#568)
- _removeToken(sender,amount) (#928)
- _totalShares -= amount (#741)
- _addToken(address(this),contractToken) (#929)
- _totalShares += amount (#723)
- _addToken(recipient,taxedAmount) (#932)
- _totalShares += amount (#723)
- _removeToken(sender,amount) (#928)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#745)
- _addToken(address(this),contractToken) (#929)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#727)
- _addToken(recipient,taxedAmount) (#932)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#727)
- _swapContractToken(AutoLPThreshold,false) (#924)
- alreadyPaidMisc[addr] = miscRewardShare * _balances[addr] (#581)
- _removeToken(sender,amount) (#928)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#747)
- _addToken(address(this),contractToken) (#929)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#729)
- _addToken(recipient,taxedAmount) (#932)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#729)
- _swapContractToken(AutoLPThreshold,false) (#924)
- mainRewardShare += ((MainAmount * DistributionMultiplier) / totalShares) (#782)
- _swapContractToken(AutoLPThreshold,false) (#924)
- miscRewardShare += ((MiscAmount * DistributionMultiplier) / totalShares) (#783)
- _removeToken(sender,amount) (#928)
- toBePaidMain[addr] += mainPayment (#746)
- _addToken(address(this),contractToken) (#929)
- toBePaidMain[addr] += mainPayment (#728)
- _addToken(recipient,taxedAmount) (#932)
- toBePaidMain[addr] += mainPayment (#728)
- _swapContractToken(AutoLPThreshold,false) (#924)
- toBePaidMisc[addr] -= amount (#577)
- toBePaidMisc[addr] += newAmount (#582)
- toBePaidMisc[addr] -= amount (#583)
- _removeToken(sender,amount) (#928)
- toBePaidMisc[addr] += miscPayment (#748)
- _addToken(address(this),contractToken) (#929)
- toBePaidMisc[addr] += miscPayment (#730)
- _addToken(recipient,taxedAmount) (#932)
- toBePaidMisc[addr] += miscPayment (#730)
- _swapContractToken(AutoLPThreshold,false) (#924)
- totalPayouts += amountWei (#565)
Reentrancy in XRPKING.claimToken(address,address,uint256) (#498-543):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
State variables written after the call(s):
- _isWithdrawing = false (#542)
Apply the check-effects-interactions pattern.
Additional information: link
XRPKING.ReleaseLP() (#642-647) ignores return value by liquidityToken.transfer(msg.sender,amount) (#646)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
XRPKING._subtractDividents(address,uint256) (#572-585) uses a dangerous strict equality:
- amount == 0 (#573)
Don't use strict equality to determine if an account has enough Ether or tokens.
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.
Address.isContract(address) (#202-206) uses assembly
- INLINE ASM (#204)
Address._verifyCallResult(bool,bytes,string) (#243-256) uses assembly
- INLINE ASM (#248-251)
Do not use evm assembly.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#243-256) is never used and should be removed
Address.functionCall(address,bytes) (#212-214) is never used and should be removed
Address.functionCall(address,bytes,string) (#215-217) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#218-220) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#221-226) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#235-237) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#238-242) is never used and should be removed
Address.functionStaticCall(address,bytes) (#227-229) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#230-234) is never used and should be removed
Address.isContract(address) (#202-206) is never used and should be removed
Address.sendValue(address,uint256) (#207-211) is never used and should be removed
EnumerableSet._at(EnumerableSet.Set,uint256) (#293-296) is never used and should be removed
EnumerableSet._length(EnumerableSet.Set) (#290-292) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (#300-302) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (#336-338) is never used and should be removed
EnumerableSet.at(EnumerableSet.AddressSet,uint256) (#330-332) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (#312-314) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (#348-350) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (#306-308) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (#342-344) is never used and should be removed
EnumerableSet.length(EnumerableSet.AddressSet) (#327-329) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (#309-311) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (#345-347) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (#303-305) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (#339-341) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.11 (#2) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.11 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
XRPKING._distributeStake(uint256,bool) (#763-787) performs a multiplication on the result of a division:
-StakingSplit = (BNBamount * _stakingTax) / totalRatio (#768)
-MainAmount = (StakingSplit * _MainRewardSplit) / 100 (#769)
XRPKING._distributeStake(uint256,bool) (#763-787) performs a multiplication on the result of a division:
-StakingSplit = (BNBamount * _stakingTax) / totalRatio (#768)
-MiscAmount = (StakingSplit * _MiscRewardSplit) / 100 (#770)
XRPKING._distributeStake(uint256,bool) (#763-787) performs a multiplication on the result of a division:
-MainAmount = (StakingSplit * _MainRewardSplit) / 100 (#769)
-mainRewardShare += ((MainAmount * DistributionMultiplier) / totalShares) (#782)
XRPKING._distributeStake(uint256,bool) (#763-787) performs a multiplication on the result of a division:
-MiscAmount = (StakingSplit * _MiscRewardSplit) / 100 (#770)
-miscRewardShare += ((MiscAmount * DistributionMultiplier) / totalShares) (#783)
XRPKING._swapContractToken(uint16,bool) (#798-826) performs a multiplication on the result of a division:
-tokenToSwap = _balances[_pancakePairAddress] * permilleOfPancake / 1000 (#804)
-tokenForLiquidity = (tokenToSwap * _liquidityTax) / totalTax (#813)
Consider ordering multiplication before division.
Additional information: link
XRPKING.constructor() (#420-451) ignores return value by _excluded.add(msg.sender) (#441)
XRPKING.constructor() (#420-451) ignores return value by _excluded.add(MarketingWallet) (#442)
XRPKING.constructor() (#420-451) ignores return value by _excluded.add(Developer) (#443)
XRPKING.constructor() (#420-451) ignores return value by _excluded.add(address(this)) (#444)
XRPKING.constructor() (#420-451) ignores return value by _excluded.add(BurnAddress) (#445)
XRPKING.constructor() (#420-451) ignores return value by _excludedFromStaking.add(address(this)) (#446)
XRPKING.constructor() (#420-451) ignores return value by _excludedFromStaking.add(BurnAddress) (#447)
XRPKING.constructor() (#420-451) ignores return value by _excludedFromStaking.add(address(_pancakeRouter)) (#448)
XRPKING.constructor() (#420-451) ignores return value by _excludedFromStaking.add(_pancakePairAddress) (#449)
XRPKING.RemoveLP() (#650-666) ignores return value by liquidityToken.approve(address(_pancakeRouter),amount) (#655)
XRPKING.RemoveLP() (#650-666) ignores return value by _pancakeRouter.removeLiquidityETHSupportingFeeOnTransferTokens(address(this),amount,0,0,address(this),block.timestamp) (#656-663)
XRPKING._addLiquidity(uint256,uint256) (#842-853) ignores return value by _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
XRPKING.ExcludeFromStaking(address) (#1033-1044) ignores return value by _excludedFromStaking.add(addr) (#1042)
XRPKING.IncludeMeToStaking() (#1047-1053) ignores return value by _excludedFromStaking.remove(msg.sender) (#1050)
XRPKING.IncludeToStaking(address) (#1056-1063) ignores return value by _excludedFromStaking.remove(addr) (#1059)
XRPKING.SetMarketingWallet(address) (#1079-1085) ignores return value by _excluded.remove(prevMarketing) (#1081)
XRPKING.SetMarketingWallet(address) (#1079-1085) ignores return value by _excluded.add(MarketingWallet) (#1083)
XRPKING.SetDevWallet(address) (#1089-1095) ignores return value by _excluded.remove(prevDev) (#1091)
XRPKING.SetDevWallet(address) (#1089-1095) ignores return value by _excluded.add(Developer) (#1093)
XRPKING.ExcludeAccountFromFees(address) (#1099-1102) ignores return value by _excluded.add(account) (#1100)
XRPKING.IncludeAccountToFees(address) (#1105-1108) ignores return value by _excluded.remove(account) (#1106)
XRPKING.setPresale(address) (#1110-1113) ignores return value by _excluded.add(presaleAddress) (#1111)
XRPKING.setPresale(address) (#1110-1113) ignores return value by _excludedFromStaking.add(presaleAddress) (#1112)
Ensure that all the return values of the function calls are used.
Additional information: link
XRPKING.allowance(address,address)._owner (#452) shadows:
- Ownable._owner (#177) (state variable)
XRPKING._approve(address,address,uint256).owner (#459) shadows:
- Ownable.owner() (#184-186) (function)
Rename the local variables that shadow another component.
Additional information: link
XRPKING.WithdrawDev(uint256) (#1007-1012) should emit an event for:
- DevBalance -= amount (#1009)
XRPKING.WithdrawMarketing(uint256) (#1023-1028) should emit an event for:
- MarketingBalance -= amount (#1025)
Emit an event for critical parameter changes.
Additional information: link
XRPKING.ChangeMiscReward(address).newReward (#619) lacks a zero-check on :
- MiscReward = newReward (#620)
XRPKING.SetMarketingWallet(address).addr (#1079) lacks a zero-check on :
- MarketingWallet = addr (#1082)
XRPKING.SetDevWallet(address).addr (#1089) lacks a zero-check on :
- Developer = addr (#1092)
Check that the address is not zero.
Additional information: link
Reentrancy in XRPKING.TriggerBuyBack(uint256) (#964-982):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: weiAmount}(0,path,BurnAddress,block.timestamp) (#972-976)
State variables written after the call(s):
- _circulatingSupply -= boughtTokens (#979)
- tokensBurnt += boughtTokens (#980)
Reentrancy in XRPKING._swapContractToken(uint16,bool) (#798-826):
External calls:
- _swapTokenForBNB(swapToken) (#819)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#833-839)
- _addLiquidity(liqToken,liqBNB) (#822)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#822)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
State variables written after the call(s):
- _distributeStake(distributeBNB,true) (#825)
- BuyBackBalance += BuyBackSplit (#773)
- _distributeStake(distributeBNB,true) (#825)
- DevBalance += DevSplit (#772)
- _distributeStake(distributeBNB,true) (#825)
- MarketingBalance += MarketingSplit (#771)
- MarketingBalance += StakingSplit (#780)
- _addLiquidity(liqToken,liqBNB) (#822)
- _allowances[owner][spender] = amount (#463)
- _distributeStake(distributeBNB,true) (#825)
- mainRewardShare += ((MainAmount * DistributionMultiplier) / totalShares) (#782)
- _distributeStake(distributeBNB,true) (#825)
- miscRewardShare += ((MiscAmount * DistributionMultiplier) / totalShares) (#783)
- _distributeStake(distributeBNB,true) (#825)
- totalRewards += StakingSplit (#776)
Reentrancy in XRPKING._taxedTransfer(address,address,uint256,bool,bool) (#886-934):
External calls:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#833-839)
- (sent) = to.call{value: (amountWei)}() (#566)
External calls sending eth:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- (sent) = to.call{value: (amountWei)}() (#566)
State variables written after the call(s):
- _swapContractToken(AutoLPThreshold,false) (#924)
- _allowances[owner][spender] = amount (#463)
- _circulatingSupply -= tokensToBeBurnt (#930)
- tokensBurnt += tokensToBeBurnt (#931)
Reentrancy in XRPKING.constructor() (#420-451):
External calls:
- _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this),_pancakeRouter.WETH()) (#429)
State variables written after the call(s):
- Developer = msg.sender (#436)
- MarketingWallet = msg.sender (#435)
- MaxWallet = _totalSupply / MaxWalletDivider (#439)
- _allowances[address(this)][address(_pancakeRouter)] = type()(uint256).max (#432)
- _approve(address(this),address(_pancakeRouter),type()(uint256).max) (#450)
- _allowances[owner][spender] = amount (#463)
- _addToken(msg.sender,_totalSupply) (#430)
- _balances[addr] = newAmount (#720)
- _balances[addr] = newAmount (#726)
- _balances[addr] = newAmount (#731)
- _addToken(msg.sender,_totalSupply) (#430)
- _totalShares += amount (#723)
- _addToken(msg.sender,_totalSupply) (#430)
- alreadyPaidMain[addr] = mainRewardShare * newAmount (#727)
- _addToken(msg.sender,_totalSupply) (#430)
- alreadyPaidMisc[addr] = miscRewardShare * newAmount (#729)
- sellLimit = _totalSupply / SellLimitDivider (#438)
- _addToken(msg.sender,_totalSupply) (#430)
- toBePaidMain[addr] += mainPayment (#728)
- _addToken(msg.sender,_totalSupply) (#430)
- toBePaidMisc[addr] += miscPayment (#730)
Reentrancy in XRPKING.transferFrom(address,address,uint256) (#484-492):
External calls:
- _transfer(sender,recipient,amount) (#485)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#833-839)
- (sent) = to.call{value: (amountWei)}() (#566)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
External calls sending eth:
- _transfer(sender,recipient,amount) (#485)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- (sent) = to.call{value: (amountWei)}() (#566)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
State variables written after the call(s):
- _approve(sender,msg.sender,currentAllowance - amount) (#490)
- _allowances[owner][spender] = amount (#463)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in XRPKING.TriggerBuyBack(uint256) (#964-982):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: weiAmount}(0,path,BurnAddress,block.timestamp) (#972-976)
Event emitted after the call(s):
- Buyback(weiAmount,boughtTokens) (#981)
Reentrancy in XRPKING._claimBNBTo(address,address,uint256) (#559-570):
External calls:
- (sent) = to.call{value: (amountWei)}() (#566)
Event emitted after the call(s):
- OnClaimBNB(from,to,amountWei) (#569)
Reentrancy in XRPKING._swapContractToken(uint16,bool) (#798-826):
External calls:
- _swapTokenForBNB(swapToken) (#819)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#833-839)
- _addLiquidity(liqToken,liqBNB) (#822)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#822)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#464)
- _addLiquidity(liqToken,liqBNB) (#822)
Reentrancy in XRPKING._swapContractToken(uint16,bool) (#798-826):
External calls:
- _swapTokenForBNB(swapToken) (#819)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#833-839)
- _addLiquidity(liqToken,liqBNB) (#822)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- _claimBNBTo(distribute,distribute,newLiq) (#825)
- (sent) = to.call{value: (amountWei)}() (#566)
External calls sending eth:
- _addLiquidity(liqToken,liqBNB) (#822)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- _claimBNBTo(distribute,distribute,newLiq) (#825)
- (sent) = to.call{value: (amountWei)}() (#566)
Event emitted after the call(s):
- OnClaimBNB(from,to,amountWei) (#569)
- _claimBNBTo(distribute,distribute,newLiq) (#825)
Reentrancy in XRPKING._taxedTransfer(address,address,uint256,bool,bool) (#886-934):
External calls:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#833-839)
- (sent) = to.call{value: (amountWei)}() (#566)
External calls sending eth:
- claimToken(recipient,MainReward,0) (#907)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
- _swapContractToken(AutoLPThreshold,false) (#924)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- (sent) = to.call{value: (amountWei)}() (#566)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#464)
- _swapContractToken(AutoLPThreshold,false) (#924)
- OnClaimBNB(from,to,amountWei) (#569)
- _swapContractToken(AutoLPThreshold,false) (#924)
- Transfer(sender,recipient,taxedAmount) (#933)
Reentrancy in XRPKING.claimToken(address,address,uint256) (#498-543):
External calls:
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
Event emitted after the call(s):
- OnWithdrawToken(amount,token,addr) (#541)
Reentrancy in XRPKING.constructor() (#420-451):
External calls:
- _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this),_pancakeRouter.WETH()) (#429)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#464)
- _approve(address(this),address(_pancakeRouter),type()(uint256).max) (#450)
- Transfer(address(0),msg.sender,_totalSupply) (#431)
Reentrancy in XRPKING.transferFrom(address,address,uint256) (#484-492):
External calls:
- _transfer(sender,recipient,amount) (#485)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount,0,path,address(this),block.timestamp) (#833-839)
- (sent) = to.call{value: (amountWei)}() (#566)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
External calls sending eth:
- _transfer(sender,recipient,amount) (#485)
- _pancakeRouter.addLiquidityETH{value: bnbamount}(address(this),tokenamount,0,0,address(this),block.timestamp) (#845-852)
- (sent) = to.call{value: (amountWei)}() (#566)
- _pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,addr,block.timestamp) (#535-539)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#464)
- _approve(sender,msg.sender,currentAllowance - amount) (#490)
Apply the check-effects-interactions pattern.
Additional information: link
XRPKING._lockLiquidityTokens(uint256) (#635-639) uses timestamp for comparisons
Dangerous comparisons:
- require(bool)(newUnlockTime > _liquidityUnlockTime) (#637)
XRPKING.ReleaseLP() (#642-647) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#643)
XRPKING.RemoveLP() (#650-666) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#651)
XRPKING.RecoverBNB() (#669-674) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= _liquidityUnlockTime,Not yet unlocked) (#670)
XRPKING.getLiquidityUnlockInSeconds() (#1193-1198) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp < _liquidityUnlockTime (#1194)
Avoid relying on block.timestamp.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#207-211):
- (success) = recipient.call{value: amount}() (#209)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#221-226):
- (success,returndata) = target.call{value: value}(data) (#224)
Low level call in Address.functionStaticCall(address,bytes,string) (#230-234):
- (success,returndata) = target.staticcall(data) (#232)
Low level call in Address.functionDelegateCall(address,bytes,string) (#238-242):
- (success,returndata) = target.delegatecall(data) (#240)
Low level call in XRPKING._claimBNBTo(address,address,uint256) (#559-570):
- (sent) = to.call{value: (amountWei)}() (#566)
Low level call in XRPKING.RemoveLP() (#650-666):
- (sent) = msg.sender.call{value: (address(this).balance)}() (#664)
Low level call in XRPKING.RecoverBNB() (#669-674):
- (sent) = msg.sender.call{value: (address(this).balance)}() (#672)
Low level call in XRPKING.WithdrawAllDev() (#999-1004):
- (sent) = Developer.call{value: (amount)}() (#1002)
Low level call in XRPKING.WithdrawDev(uint256) (#1007-1012):
- (sent) = Developer.call{value: (amount)}() (#1010)
Low level call in XRPKING.WithdrawAllMarketing() (#1015-1020):
- (sent) = MarketingWallet.call{value: (amount)}() (#1018)
Low level call in XRPKING.WithdrawMarketing(uint256) (#1023-1028):
- (sent) = MarketingWallet.call{value: (amount)}() (#1026)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IPancakeERC20.DOMAIN_SEPARATOR() (#30) is not in mixedCase
Function IPancakeERC20.PERMIT_TYPEHASH() (#31) is not in mixedCase
Function IPancakeRouter01.WETH() (#130) is not in mixedCase
Event XRPKINGonUpdateLPThreshold(uint16) (#695) is not in CapWords
Event XRPKINGonBurnTokens(uint256) (#985) is not in CapWords
Parameter XRPKING.allowance(address,address)._owner (#452) is not in mixedCase
Function XRPKING.ClaimMainReward() (#546-548) is not in mixedCase
Function XRPKING.ClaimMiscReward() (#551-555) is not in mixedCase
Function XRPKING.ChangeMainReward(address) (#611-615) is not in mixedCase
Function XRPKING.ChangeMiscReward(address) (#619-622) is not in mixedCase
Function XRPKING.LockLiquidityTokens(uint256) (#631-634) is not in mixedCase
Function XRPKING.ReleaseLP() (#642-647) is not in mixedCase
Function XRPKING.RemoveLP() (#650-666) is not in mixedCase
Function XRPKING.RecoverBNB() (#669-674) is not in mixedCase
Function XRPKING.UpdateAutoLPThreshold(uint16) (#696-701) is not in mixedCase
Parameter XRPKING.UpdateAutoLPThreshold(uint16).Threshold (#696) is not in mixedCase
Function XRPKING.CreateLPandBNB(uint16,bool) (#704-706) is not in mixedCase
Parameter XRPKING.CreateLPandBNB(uint16,bool).PermilleOfPancake (#704) is not in mixedCase
Function XRPKING.ManualBNBSwap(bool) (#857-859) is not in mixedCase
Function XRPKING.TriggerBuyBack(uint256) (#964-982) is not in mixedCase
Function XRPKING.BurnTokens(uint256) (#986-996) is not in mixedCase
Function XRPKING.WithdrawAllDev() (#999-1004) is not in mixedCase
Function XRPKING.WithdrawDev(uint256) (#1007-1012) is not in mixedCase
Function XRPKING.WithdrawAllMarketing() (#1015-1020) is not in mixedCase
Function XRPKING.WithdrawMarketing(uint256) (#1023-1028) is not in mixedCase
Function XRPKING.ExcludeFromStaking(address) (#1033-1044) is not in mixedCase
Function XRPKING.IncludeMeToStaking() (#1047-1053) is not in mixedCase
Function XRPKING.IncludeToStaking(address) (#1056-1063) is not in mixedCase
Function XRPKING.SetMarketingWallet(address) (#1079-1085) is not in mixedCase
Function XRPKING.SetDevWallet(address) (#1089-1095) is not in mixedCase
Function XRPKING.ExcludeAccountFromFees(address) (#1099-1102) is not in mixedCase
Function XRPKING.IncludeAccountToFees(address) (#1105-1108) is not in mixedCase
Function XRPKING.UpdateTaxes(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1121-1139) is not in mixedCase
Function XRPKING.UpdateRewardSplit(uint8,uint8) (#1143-1149) is not in mixedCase
Parameter XRPKING.UpdateRewardSplit(uint8,uint8).MainSplit (#1143) is not in mixedCase
Parameter XRPKING.UpdateRewardSplit(uint8,uint8).MiscSplit (#1143) is not in mixedCase
Function XRPKING.UpdateLimits(uint256,uint256) (#1152-1166) is not in mixedCase
Constant XRPKING._name (#363) is not in UPPER_CASE_WITH_UNDERSCORES
Constant XRPKING._symbol (#364) is not in UPPER_CASE_WITH_UNDERSCORES
Constant XRPKING._decimals (#365) is not in UPPER_CASE_WITH_UNDERSCORES
Constant XRPKING._totalSupply (#366) is not in UPPER_CASE_WITH_UNDERSCORES
Variable XRPKING._circulatingSupply (#367) is not in mixedCase
Constant XRPKING.MaxWalletDivider (#368) is not in UPPER_CASE_WITH_UNDERSCORES
Constant XRPKING.SellLimitDivider (#369) is not in UPPER_CASE_WITH_UNDERSCORES
Constant XRPKING.MaxTax (#370) is not in UPPER_CASE_WITH_UNDERSCORES
Variable XRPKING._MainRewardSplit (#383) is not in mixedCase
Variable XRPKING._MiscRewardSplit (#384) is not in mixedCase
Variable XRPKING.MaxWallet (#385) is not in mixedCase
Variable XRPKING.MarketingWallet (#387) is not in mixedCase
Variable XRPKING.Developer (#388) is not in mixedCase
Variable XRPKING.BurnAddress (#389) is not in mixedCase
Constant XRPKING.blacklistBlocks (#395) is not in UPPER_CASE_WITH_UNDERSCORES
Variable XRPKING.MainReward (#403) is not in mixedCase
Variable XRPKING.MiscReward (#404) is not in mixedCase
Variable XRPKING.PancakeRouter (#408) is not in mixedCase
Constant XRPKING.StakeMulti (#678) is not in UPPER_CASE_WITH_UNDERSCORES
Constant XRPKING.DistributionMultiplier (#679) is not in UPPER_CASE_WITH_UNDERSCORES
Variable XRPKING.MarketingBalance (#685) is not in mixedCase
Variable XRPKING.DevBalance (#686) is not in mixedCase
Variable XRPKING.BuyBackBalance (#687) is not in mixedCase
Variable XRPKING.AutoLPThreshold (#688) is not in mixedCase
Variable XRPKING.Staker (#791) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#50) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#51)
Prevent variables from having similar names.
Additional information: link
XRPKING.slitherConstructorVariables() (#354-1206) uses literals with too many digits:
- BurnAddress = 0x000000000000000000000000000000000000dEaD (#389)
XRPKING.slitherConstructorConstantVariables() (#354-1206) uses literals with too many digits:
- _totalSupply = 100000 * 10 ** _decimals (#366)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
XRPKING.BurnAddress (#389) should be constant
XRPKING.Staker (#791) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#191-194)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#195-199)
ClaimMainReward() should be declared external:
- XRPKING.ClaimMainReward() (#546-548)
ClaimMiscReward() should be declared external:
- XRPKING.ClaimMiscReward() (#551-555)
getMainBalance(address) should be declared external:
- XRPKING.getMainBalance(address) (#598-601)
getMiscBalance(address) should be declared external:
- XRPKING.getMiscBalance(address) (#604-607)
ChangeMainReward(address) should be declared external:
- XRPKING.ChangeMainReward(address) (#611-615)
ChangeMiscReward(address) should be declared external:
- XRPKING.ChangeMiscReward(address) (#619-622)
LockLiquidityTokens(uint256) should be declared external:
- XRPKING.LockLiquidityTokens(uint256) (#631-634)
ReleaseLP() should be declared external:
- XRPKING.ReleaseLP() (#642-647)
RemoveLP() should be declared external:
- XRPKING.RemoveLP() (#650-666)
RecoverBNB() should be declared external:
- XRPKING.RecoverBNB() (#669-674)
UpdateAutoLPThreshold(uint16) should be declared external:
- XRPKING.UpdateAutoLPThreshold(uint16) (#696-701)
CreateLPandBNB(uint16,bool) should be declared external:
- XRPKING.CreateLPandBNB(uint16,bool) (#704-706)
ManualBNBSwap(bool) should be declared external:
- XRPKING.ManualBNBSwap(bool) (#857-859)
TriggerBuyBack(uint256) should be declared external:
- XRPKING.TriggerBuyBack(uint256) (#964-982)
BurnTokens(uint256) should be declared external:
- XRPKING.BurnTokens(uint256) (#986-996)
WithdrawAllDev() should be declared external:
- XRPKING.WithdrawAllDev() (#999-1004)
WithdrawDev(uint256) should be declared external:
- XRPKING.WithdrawDev(uint256) (#1007-1012)
WithdrawAllMarketing() should be declared external:
- XRPKING.WithdrawAllMarketing() (#1015-1020)
WithdrawMarketing(uint256) should be declared external:
- XRPKING.WithdrawMarketing(uint256) (#1023-1028)
ExcludeFromStaking(address) should be declared external:
- XRPKING.ExcludeFromStaking(address) (#1033-1044)
IncludeMeToStaking() should be declared external:
- XRPKING.IncludeMeToStaking() (#1047-1053)
IncludeToStaking(address) should be declared external:
- XRPKING.IncludeToStaking(address) (#1056-1063)
setBlacklistStatus(address[],bool) should be declared external:
- XRPKING.setBlacklistStatus(address[],bool) (#1065-1069)
enableBlacklist(bool) should be declared external:
- XRPKING.enableBlacklist(bool) (#1072-1075)
SetMarketingWallet(address) should be declared external:
- XRPKING.SetMarketingWallet(address) (#1079-1085)
SetDevWallet(address) should be declared external:
- XRPKING.SetDevWallet(address) (#1089-1095)
ExcludeAccountFromFees(address) should be declared external:
- XRPKING.ExcludeAccountFromFees(address) (#1099-1102)
IncludeAccountToFees(address) should be declared external:
- XRPKING.IncludeAccountToFees(address) (#1105-1108)
setPresale(address) should be declared external:
- XRPKING.setPresale(address) (#1110-1113)
UpdateTaxes(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8) should be declared external:
- XRPKING.UpdateTaxes(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8) (#1121-1139)
UpdateRewardSplit(uint8,uint8) should be declared external:
- XRPKING.UpdateRewardSplit(uint8,uint8) (#1143-1149)
UpdateLimits(uint256,uint256) should be declared external:
- XRPKING.UpdateLimits(uint256,uint256) (#1152-1166)
getLimits() should be declared external:
- XRPKING.getLimits() (#1189-1191)
getLiquidityUnlockInSeconds() should be declared external:
- XRPKING.getLiquidityUnlockInSeconds() (#1193-1198)
getTaxes() should be declared external:
- XRPKING.getTaxes() (#1200-1202)
Use the external attribute for functions never called from the contract.
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