Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
WR.addLiquidity(uint256,uint256) (#1049-1063) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- swapAndSendBUSDDividends(busdTokens) (#982)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1111-1117)
- swapAndSendXRPDividends(xrpTokens) (#986)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1093-1099)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
State variables written after the call(s):
- super._transfer(from,address(this),fees) (#1004)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#480)
- _balances[recipient] = _balances[recipient].add(amount) (#481)
- super._transfer(from,to,amount) (#1007)
- _balances[sender] = _balances[sender].sub(amount,ERC20: transfer amount exceeds balance) (#480)
- _balances[recipient] = _balances[recipient].add(amount) (#481)
- swapping = false (#989)
Apply the check-effects-interactions pattern.
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.
WR._transfer(address,address,uint256) (#938-1031) performs a multiplication on the result of a division:
-fees = amount.div(100).mul(totalFees) (#1000)
WR._transfer(address,address,uint256) (#938-1031) performs a multiplication on the result of a division:
-swapTokens = contractTokenBalance.div(totalFees).mul(marketingFee) (#965)
WR._transfer(address,address,uint256) (#938-1031) performs a multiplication on the result of a division:
-swapTokensBuyback = contractTokenBalance.div(totalFees).mul(buybackFee) (#970)
WR._transfer(address,address,uint256) (#938-1031) performs a multiplication on the result of a division:
-liqTokens = contractTokenBalance.div(totalFees).mul(liquidityFee) (#976)
WR._transfer(address,address,uint256) (#938-1031) performs a multiplication on the result of a division:
-busdTokens = contractTokenBalance.div(totalFees).mul(busdDividendRewardsFee) (#981)
WR._transfer(address,address,uint256) (#938-1031) performs a multiplication on the result of a division:
-xrpTokens = contractTokenBalance.div(totalFees).mul(xrpDividendRewardsFee) (#985)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in DividendPayingToken._withdrawDividendOfUser(address) (#1192-1210):
External calls:
- success = IERC20(dividendToken).transfer(user,_withdrawableDividend) (#1198)
State variables written after the call(s):
- withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend) (#1202)
Reentrancy in WR.updatebusdTokenDividendTracker(address) (#696-711):
External calls:
- newbusdTokenDividendTracker.excludeFromDividends(address(newbusdTokenDividendTracker)) (#703)
- newbusdTokenDividendTracker.excludeFromDividends(address(this)) (#704)
- newbusdTokenDividendTracker.excludeFromDividends(address(uniswapV2Router)) (#705)
- newbusdTokenDividendTracker.excludeFromDividends(address(deadAddress)) (#706)
State variables written after the call(s):
- busdTokenDividendTracker = newbusdTokenDividendTracker (#710)
Reentrancy in WR.updatexrpDividendTracker(address) (#713-728):
External calls:
- newxrpDividendTracker.excludeFromDividends(address(newxrpDividendTracker)) (#720)
- newxrpDividendTracker.excludeFromDividends(address(this)) (#721)
- newxrpDividendTracker.excludeFromDividends(address(uniswapV2Router)) (#722)
- newxrpDividendTracker.excludeFromDividends(address(deadAddress)) (#723)
State variables written after the call(s):
- xrpDividendTracker = newxrpDividendTracker (#727)
Apply the check-effects-interactions pattern.
Additional information: link
WR._transfer(address,address,uint256) (#938-1031) ignores return value by address(marketingWallet).call{value: marketingPortion}() (#968)
WR._transfer(address,address,uint256) (#938-1031) ignores return value by address(BuybackWallet).call{value: BuybackPortion}() (#974)
Ensure that the return value of a low-level call is checked or logged.
Additional information: link
WR._transfer(address,address,uint256).iterations_scope_0 (#1024) is a local variable never initialized
WR._transfer(address,address,uint256).iterations (#1017) is a local variable never initialized
WR._transfer(address,address,uint256).claims (#1017) is a local variable never initialized
WR._transfer(address,address,uint256).claims_scope_1 (#1024) is a local variable never initialized
WR._transfer(address,address,uint256).lastProcessedIndex_scope_2 (#1024) is a local variable never initialized
WR._transfer(address,address,uint256).lastProcessedIndex (#1017) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
WR.claim() (#915-918) ignores return value by busdTokenDividendTracker.processAccount(address(msg.sender),false) (#916)
WR.claim() (#915-918) ignores return value by xrpDividendTracker.processAccount(address(msg.sender),false) (#917)
WR._transfer(address,address,uint256) (#938-1031) ignores return value by busdTokenDividendTracker.process(gas) (#1017-1022)
WR._transfer(address,address,uint256) (#938-1031) ignores return value by xrpDividendTracker.process(gas) (#1024-1029)
WR.addLiquidity(uint256,uint256) (#1049-1063) ignores return value by uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
Ensure that all the return values of the function calls are used.
Additional information: link
DividendPayingToken.constructor(string,string,address)._name (#1166) shadows:
- ERC20._name (#414) (state variable)
DividendPayingToken.constructor(string,string,address)._symbol (#1166) shadows:
- ERC20._symbol (#415) (state variable)
DividendPayingToken.dividendOf(address)._owner (#1213) shadows:
- Ownable._owner (#374) (state variable)
DividendPayingToken.withdrawableDividendOf(address)._owner (#1217) shadows:
- Ownable._owner (#374) (state variable)
DividendPayingToken.withdrawnDividendOf(address)._owner (#1221) shadows:
- Ownable._owner (#374) (state variable)
DividendPayingToken.accumulativeDividendOf(address)._owner (#1226) shadows:
- Ownable._owner (#374) (state variable)
Rename the local variables that shadow another component.
Additional information: link
WR.setSwapTokensAtAmount(uint256) (#684-686) should emit an event for:
- swapTokensAtAmount = _swapAmount (#685)
WR.updateBusdDividendRewardFee(uint8) (#730-734) should emit an event for:
- busdDividendRewardsFee = newFee (#731)
- totalFees = busdDividendRewardsFee.add(marketingFee).add(xrpDividendRewardsFee).add(liquidityFee).add(buybackFee) (#732)
WR.updatexrpDividendRewardFee(uint8) (#736-740) should emit an event for:
- xrpDividendRewardsFee = newFee (#737)
- totalFees = busdDividendRewardsFee.add(marketingFee).add(xrpDividendRewardsFee).add(liquidityFee).add(buybackFee) (#738)
WR.updateMarketingFee(uint8) (#742-746) should emit an event for:
- marketingFee = newFee (#743)
- totalFees = busdDividendRewardsFee.add(marketingFee).add(xrpDividendRewardsFee).add(liquidityFee).add(buybackFee) (#744)
WR.updateLiquidityFee(uint8) (#748-752) should emit an event for:
- liquidityFee = newFee (#749)
- totalFees = busdDividendRewardsFee.add(marketingFee).add(xrpDividendRewardsFee).add(liquidityFee).add(buybackFee) (#750)
WR.updatebuybackFee(uint8) (#754-758) should emit an event for:
- buybackFee = newFee (#755)
- totalFees = busdDividendRewardsFee.add(marketingFee).add(xrpDividendRewardsFee).add(liquidityFee).add(buybackFee) (#756)
Emit an event for critical parameter changes.
Additional information: link
WR.whitelistPreSale(address,address)._presaleAddress (#652) lacks a zero-check on :
- presaleAddress = _presaleAddress (#653)
DividendPayingToken.constructor(string,string,address)._token (#1166) lacks a zero-check on :
- dividendToken = _token (#1167)
Check that the address is not zero.
Additional information: link
DividendPayingToken._withdrawDividendOfUser(address) (#1192-1210) has external calls inside a loop: success = IERC20(dividendToken).transfer(user,_withdrawableDividend) (#1198)
Favor pull over push strategy for external calls.
Additional information: link
Variable 'WR._transfer(address,address,uint256).iterations (#1017)' in WR._transfer(address,address,uint256) (#938-1031) potentially used before declaration: ProcessedbusdTokenDividendTracker(iterations,claims,lastProcessedIndex,true,gas,msg.sender) (#1018)
Variable 'WR._transfer(address,address,uint256).lastProcessedIndex (#1017)' in WR._transfer(address,address,uint256) (#938-1031) potentially used before declaration: ProcessedbusdTokenDividendTracker(iterations,claims,lastProcessedIndex,true,gas,msg.sender) (#1018)
Variable 'WR._transfer(address,address,uint256).claims (#1017)' in WR._transfer(address,address,uint256) (#938-1031) potentially used before declaration: ProcessedbusdTokenDividendTracker(iterations,claims,lastProcessedIndex,true,gas,msg.sender) (#1018)
Variable 'WR._transfer(address,address,uint256).lastProcessedIndex_scope_2 (#1024)' in WR._transfer(address,address,uint256) (#938-1031) potentially used before declaration: ProcessedxrpDividendTracker(iterations_scope_0,claims_scope_1,lastProcessedIndex_scope_2,true,gas,msg.sender) (#1025)
Variable 'WR._transfer(address,address,uint256).claims_scope_1 (#1024)' in WR._transfer(address,address,uint256) (#938-1031) potentially used before declaration: ProcessedxrpDividendTracker(iterations_scope_0,claims_scope_1,lastProcessedIndex_scope_2,true,gas,msg.sender) (#1025)
Variable 'WR._transfer(address,address,uint256).iterations_scope_0 (#1024)' in WR._transfer(address,address,uint256) (#938-1031) potentially used before declaration: ProcessedxrpDividendTracker(iterations_scope_0,claims_scope_1,lastProcessedIndex_scope_2,true,gas,msg.sender) (#1025)
Move all variable declarations prior to any usage of the variable, and ensure that reaching a variable declaration does not depend on some conditional if it is used unconditionally.
Additional information: link
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
State variables written after the call(s):
- swapTokensForBNB(swapTokensBuyback) (#972)
- _allowances[owner][spender] = amount (#509)
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
State variables written after the call(s):
- swapAndLiquify(liqTokens) (#977)
- _allowances[owner][spender] = amount (#509)
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- swapAndSendBUSDDividends(busdTokens) (#982)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1111-1117)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
State variables written after the call(s):
- swapAndSendBUSDDividends(busdTokens) (#982)
- _allowances[owner][spender] = amount (#509)
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- swapAndSendBUSDDividends(busdTokens) (#982)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1111-1117)
- swapAndSendXRPDividends(xrpTokens) (#986)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1093-1099)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
State variables written after the call(s):
- swapAndSendXRPDividends(xrpTokens) (#986)
- _allowances[owner][spender] = amount (#509)
Reentrancy in WR.constructor() (#614-646):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#619-620)
State variables written after the call(s):
- uniswapV2Pair = _uniswapV2Pair (#623)
- uniswapV2Router = _uniswapV2Router (#622)
Reentrancy in WR.constructor() (#614-646):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#619-620)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#625)
- busdTokenDividendTracker.excludeFromDividends(pair) (#796)
- xrpDividendTracker.excludeFromDividends(pair) (#797)
- excludeFromDividend(address(busdTokenDividendTracker)) (#627)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
- excludeFromDividend(address(xrpDividendTracker)) (#628)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
- excludeFromDividend(address(this)) (#629)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
- excludeFromDividend(address(_uniswapV2Router)) (#630)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
- excludeFromDividend(deadAddress) (#631)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
State variables written after the call(s):
- _mint(owner(),1000000000 * (10 ** 18)) (#645)
- _balances[account] = _balances[account].add(amount) (#491)
- _mint(owner(),1000000000 * (10 ** 18)) (#645)
- _totalSupply = _totalSupply.add(amount) (#490)
- excludeFromFees(marketingWallet,true) (#634)
- isExcludedFromFees[account] = excluded (#767)
- excludeFromFees(BuybackWallet,true) (#635)
- isExcludedFromFees[account] = excluded (#767)
- excludeFromFees(address(this),true) (#636)
- isExcludedFromFees[account] = excluded (#767)
- excludeFromFees(deadAddress,true) (#637)
- isExcludedFromFees[account] = excluded (#767)
- excludeFromFees(owner(),true) (#638)
- isExcludedFromFees[account] = excluded (#767)
Reentrancy in WR.prepareForPartherOrExchangeListing(address) (#663-667):
External calls:
- busdTokenDividendTracker.excludeFromDividends(_partnerOrExchangeAddress) (#664)
- xrpDividendTracker.excludeFromDividends(_partnerOrExchangeAddress) (#665)
State variables written after the call(s):
- excludeFromFees(_partnerOrExchangeAddress,true) (#666)
- isExcludedFromFees[account] = excluded (#767)
Reentrancy in XRPDividendTracker.processAccount(address,bool) (#1467-1477):
External calls:
- amount = _withdrawDividendOfUser(account) (#1468)
- success = IERC20(dividendToken).transfer(user,_withdrawableDividend) (#1198)
State variables written after the call(s):
- lastClaimTimes[account] = block.timestamp (#1471)
Reentrancy in BUSDDividendTracker.processAccount(address,bool) (#1682-1692):
External calls:
- amount = _withdrawDividendOfUser(account) (#1683)
- success = IERC20(dividendToken).transfer(user,_withdrawableDividend) (#1198)
State variables written after the call(s):
- lastClaimTimes[account] = block.timestamp (#1686)
Reentrancy in WR.swapAndLiquify(uint256) (#1033-1047):
External calls:
- swapTokensForBNB(half) (#1040)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- addLiquidity(otherHalf,newBalance) (#1044)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1044)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1044)
- _allowances[owner][spender] = amount (#509)
Reentrancy in WR.whitelistPreSale(address,address) (#652-661):
External calls:
- busdTokenDividendTracker.excludeFromDividends(_presaleAddress) (#654)
- xrpDividendTracker.excludeFromDividends(_presaleAddress) (#655)
State variables written after the call(s):
- excludeFromFees(_presaleAddress,true) (#656)
- isExcludedFromFees[account] = excluded (#767)
Reentrancy in WR.whitelistPreSale(address,address) (#652-661):
External calls:
- busdTokenDividendTracker.excludeFromDividends(_presaleAddress) (#654)
- xrpDividendTracker.excludeFromDividends(_presaleAddress) (#655)
- xrpDividendTracker.excludeFromDividends(_routerAddress) (#658)
- busdTokenDividendTracker.excludeFromDividends(_routerAddress) (#659)
State variables written after the call(s):
- excludeFromFees(_routerAddress,true) (#660)
- isExcludedFromFees[account] = excluded (#767)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in WR._setAutomatedMarketMakerPair(address,bool) (#791-801):
External calls:
- busdTokenDividendTracker.excludeFromDividends(pair) (#796)
- xrpDividendTracker.excludeFromDividends(pair) (#797)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (#800)
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#510)
- swapTokensForBNB(swapTokensBuyback) (#972)
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#510)
- swapAndLiquify(liqTokens) (#977)
- SwapAndLiquify(half,newBalance,otherHalf) (#1046)
- swapAndLiquify(liqTokens) (#977)
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- swapAndSendBUSDDividends(busdTokens) (#982)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1111-1117)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#510)
- swapAndSendBUSDDividends(busdTokens) (#982)
- SendDividends(amount) (#1140)
- swapAndSendBUSDDividends(busdTokens) (#982)
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- swapAndSendBUSDDividends(busdTokens) (#982)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1111-1117)
- swapAndSendXRPDividends(xrpTokens) (#986)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1093-1099)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#510)
- swapAndSendXRPDividends(xrpTokens) (#986)
- SendDividends(amount) (#1140)
- swapAndSendXRPDividends(xrpTokens) (#986)
- Transfer(sender,recipient,amount) (#482)
- super._transfer(from,address(this),fees) (#1004)
- Transfer(sender,recipient,amount) (#482)
- super._transfer(from,to,amount) (#1007)
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- swapAndSendBUSDDividends(busdTokens) (#982)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1111-1117)
- swapAndSendXRPDividends(xrpTokens) (#986)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1093-1099)
- busdTokenDividendTracker.setBalance(address(from),balanceOf(from)) (#1009)
- xrpDividendTracker.setBalance(address(from),balanceOf(from)) (#1010)
- busdTokenDividendTracker.setBalance(address(to),balanceOf(to)) (#1011)
- xrpDividendTracker.setBalance(address(to),balanceOf(to)) (#1012)
- busdTokenDividendTracker.process(gas) (#1017-1022)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
Event emitted after the call(s):
- ProcessedbusdTokenDividendTracker(iterations,claims,lastProcessedIndex,true,gas,msg.sender) (#1018)
Reentrancy in WR._transfer(address,address,uint256) (#938-1031):
External calls:
- swapTokensForBNB(swapTokens) (#966)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(marketingWallet).call{value: marketingPortion}() (#968)
- swapTokensForBNB(swapTokensBuyback) (#972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- swapAndSendBUSDDividends(busdTokens) (#982)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1111-1117)
- swapAndSendXRPDividends(xrpTokens) (#986)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1093-1099)
- busdTokenDividendTracker.setBalance(address(from),balanceOf(from)) (#1009)
- xrpDividendTracker.setBalance(address(from),balanceOf(from)) (#1010)
- busdTokenDividendTracker.setBalance(address(to),balanceOf(to)) (#1011)
- xrpDividendTracker.setBalance(address(to),balanceOf(to)) (#1012)
- busdTokenDividendTracker.process(gas) (#1017-1022)
- xrpDividendTracker.process(gas) (#1024-1029)
External calls sending eth:
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
- swapAndLiquify(liqTokens) (#977)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
Event emitted after the call(s):
- ProcessedxrpDividendTracker(iterations_scope_0,claims_scope_1,lastProcessedIndex_scope_2,true,gas,msg.sender) (#1025)
Reentrancy in WR.constructor() (#614-646):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#619-620)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#625)
- busdTokenDividendTracker.excludeFromDividends(pair) (#796)
- xrpDividendTracker.excludeFromDividends(pair) (#797)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (#800)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#625)
Reentrancy in WR.constructor() (#614-646):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#619-620)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#625)
- busdTokenDividendTracker.excludeFromDividends(pair) (#796)
- xrpDividendTracker.excludeFromDividends(pair) (#797)
- excludeFromDividend(address(busdTokenDividendTracker)) (#627)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
- excludeFromDividend(address(xrpDividendTracker)) (#628)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
- excludeFromDividend(address(this)) (#629)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
- excludeFromDividend(address(_uniswapV2Router)) (#630)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
- excludeFromDividend(deadAddress) (#631)
- busdTokenDividendTracker.excludeFromDividends(address(account)) (#773)
- xrpDividendTracker.excludeFromDividends(address(account)) (#774)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#769)
- excludeFromFees(deadAddress,true) (#637)
- ExcludeFromFees(account,excluded) (#769)
- excludeFromFees(address(this),true) (#636)
- ExcludeFromFees(account,excluded) (#769)
- excludeFromFees(owner(),true) (#638)
- ExcludeFromFees(account,excluded) (#769)
- excludeFromFees(BuybackWallet,true) (#635)
- ExcludeFromFees(account,excluded) (#769)
- excludeFromFees(marketingWallet,true) (#634)
- Transfer(address(0),account,amount) (#492)
- _mint(owner(),1000000000 * (10 ** 18)) (#645)
Reentrancy in WR.prepareForPartherOrExchangeListing(address) (#663-667):
External calls:
- busdTokenDividendTracker.excludeFromDividends(_partnerOrExchangeAddress) (#664)
- xrpDividendTracker.excludeFromDividends(_partnerOrExchangeAddress) (#665)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#769)
- excludeFromFees(_partnerOrExchangeAddress,true) (#666)
Reentrancy in XRPDividendTracker.processAccount(address,bool) (#1467-1477):
External calls:
- amount = _withdrawDividendOfUser(account) (#1468)
- success = IERC20(dividendToken).transfer(user,_withdrawableDividend) (#1198)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1472)
Reentrancy in BUSDDividendTracker.processAccount(address,bool) (#1682-1692):
External calls:
- amount = _withdrawDividendOfUser(account) (#1683)
- success = IERC20(dividendToken).transfer(user,_withdrawableDividend) (#1198)
Event emitted after the call(s):
- Claim(account,amount,automatic) (#1687)
Reentrancy in WR.processDividendTracker(uint256) (#907-913):
External calls:
- (busdIterations,busdClaims,busdLastProcessedIndex) = busdTokenDividendTracker.process(gas) (#908)
Event emitted after the call(s):
- ProcessedbusdTokenDividendTracker(busdIterations,busdClaims,busdLastProcessedIndex,false,gas,msg.sender) (#909)
Reentrancy in WR.processDividendTracker(uint256) (#907-913):
External calls:
- (busdIterations,busdClaims,busdLastProcessedIndex) = busdTokenDividendTracker.process(gas) (#908)
- (xrpIterations,xrpClaims,xrpLastProcessedIndex) = xrpDividendTracker.process(gas) (#911)
Event emitted after the call(s):
- ProcessedxrpDividendTracker(xrpIterations,xrpClaims,xrpLastProcessedIndex,false,gas,msg.sender) (#912)
Reentrancy in WR.swapAndLiquify(uint256) (#1033-1047):
External calls:
- swapTokensForBNB(half) (#1040)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1074-1080)
- addLiquidity(otherHalf,newBalance) (#1044)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1044)
- uniswapV2Router.addLiquidityETH{value: bnbAmount}(address(this),tokenAmount,0,0,deadAddress,block.timestamp) (#1055-1062)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#510)
- addLiquidity(otherHalf,newBalance) (#1044)
- SwapAndLiquify(half,newBalance,otherHalf) (#1046)
Reentrancy in WR.swapAndSendBUSDDividends(uint256) (#1128-1132):
External calls:
- swapTokensForBUSD(tokens) (#1129)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1111-1117)
- transferDividends(address(busdTokenDividendTracker),busdTokenDividendTracker,busdtokens,BUSD) (#1131)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
Event emitted after the call(s):
- SendDividends(amount) (#1140)
- transferDividends(address(busdTokenDividendTracker),busdTokenDividendTracker,busdtokens,BUSD) (#1131)
Reentrancy in WR.swapAndSendXRPDividends(uint256) (#1121-1125):
External calls:
- swapTokensForXRP(tokens) (#1122)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp) (#1093-1099)
- transferDividends(address(xrpDividendTracker),xrpDividendTracker,xrpTokens,XRP) (#1124)
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
Event emitted after the call(s):
- SendDividends(amount) (#1140)
- transferDividends(address(xrpDividendTracker),xrpDividendTracker,xrpTokens,XRP) (#1124)
Reentrancy in WR.transferDividends(address,DividendPayingToken,uint256,IERC20) (#1135-1142):
External calls:
- success = IERC20(token).transfer(dividendTracker,amount) (#1136)
- dividendPayingTracker.distributeDividends(amount) (#1139)
Event emitted after the call(s):
- SendDividends(amount) (#1140)
Reentrancy in WR.updatebusdTokenDividendTracker(address) (#696-711):
External calls:
- newbusdTokenDividendTracker.excludeFromDividends(address(newbusdTokenDividendTracker)) (#703)
- newbusdTokenDividendTracker.excludeFromDividends(address(this)) (#704)
- newbusdTokenDividendTracker.excludeFromDividends(address(uniswapV2Router)) (#705)
- newbusdTokenDividendTracker.excludeFromDividends(address(deadAddress)) (#706)
Event emitted after the call(s):
- UpdatebusdTokenDividendTracker(newAddress,address(busdTokenDividendTracker)) (#708)
Reentrancy in WR.updatexrpDividendTracker(address) (#713-728):
External calls:
- newxrpDividendTracker.excludeFromDividends(address(newxrpDividendTracker)) (#720)
- newxrpDividendTracker.excludeFromDividends(address(this)) (#721)
- newxrpDividendTracker.excludeFromDividends(address(uniswapV2Router)) (#722)
- newxrpDividendTracker.excludeFromDividends(address(deadAddress)) (#723)
Event emitted after the call(s):
- UpdatexrpDividendTracker(newAddress,address(xrpDividendTracker)) (#725)
Reentrancy in WR.whitelistPreSale(address,address) (#652-661):
External calls:
- busdTokenDividendTracker.excludeFromDividends(_presaleAddress) (#654)
- xrpDividendTracker.excludeFromDividends(_presaleAddress) (#655)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#769)
- excludeFromFees(_presaleAddress,true) (#656)
Reentrancy in WR.whitelistPreSale(address,address) (#652-661):
External calls:
- busdTokenDividendTracker.excludeFromDividends(_presaleAddress) (#654)
- xrpDividendTracker.excludeFromDividends(_presaleAddress) (#655)
- xrpDividendTracker.excludeFromDividends(_routerAddress) (#658)
- busdTokenDividendTracker.excludeFromDividends(_routerAddress) (#659)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#769)
- excludeFromFees(_routerAddress,true) (#660)
Apply the check-effects-interactions pattern.
Additional information: link
XRPDividendTracker.getAccount(address) (#1331-1374) uses timestamp for comparisons
Dangerous comparisons:
- nextClaimTime > block.timestamp (#1371-1373)
XRPDividendTracker.canAutoClaim(uint256) (#1395-1401) uses timestamp for comparisons
Dangerous comparisons:
- lastClaimTime > block.timestamp (#1396)
- block.timestamp.sub(lastClaimTime) >= claimWait (#1400)
BUSDDividendTracker.getAccount(address) (#1546-1589) uses timestamp for comparisons
Dangerous comparisons:
- nextClaimTime > block.timestamp (#1586-1588)
BUSDDividendTracker.canAutoClaim(uint256) (#1610-1616) uses timestamp for comparisons
Dangerous comparisons:
- lastClaimTime > block.timestamp (#1611)
- block.timestamp.sub(lastClaimTime) >= claimWait (#1615)
Avoid relying on block.timestamp.
Additional information: link
Context._msgData() (#367-370) is never used and should be removed
DividendPayingToken._transfer(address,address,uint256) (#1231-1237) is never used and should be removed
ERC20._setupDecimals(uint8) (#513-515) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#305-308) is never used and should be removed
SafeMath.mod(uint256,uint256) (#295-298) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#310-313) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#241-245) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#262-265) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#267-270) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#252-260) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#247-250) is never used and should be removed
SafeMathInt.div(int256,int256) (#327-333) is never used and should be removed
SafeMathInt.mul(int256,int256) (#317-325) is never used and should be removed
Remove unused functions.
Additional information: link
WR.totalFees (#556) is set pre-construction with a non-constant function or state variable:
- busdDividendRewardsFee.add(marketingFee).add(xrpDividendRewardsFee).add(liquidityFee).add(buybackFee)
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
Low level call in WR._transfer(address,address,uint256) (#938-1031):
- address(marketingWallet).call{value: marketingPortion}() (#968)
- address(BuybackWallet).call{value: BuybackPortion}() (#974)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#107) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#108) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#125) is not in mixedCase
Function IUniswapV2Router01.WETH() (#145) is not in mixedCase
Parameter WR.whitelistPreSale(address,address)._presaleAddress (#652) is not in mixedCase
Parameter WR.whitelistPreSale(address,address)._routerAddress (#652) is not in mixedCase
Parameter WR.prepareForPartherOrExchangeListing(address)._partnerOrExchangeAddress (#663) is not in mixedCase
Parameter WR.updateMarketingWallet(address)._newWallet (#671) is not in mixedCase
Parameter WR.updateBuybackWallet(address)._newWallet (#678) is not in mixedCase
Parameter WR.setSwapTokensAtAmount(uint256)._swapAmount (#684) is not in mixedCase
Parameter WR.setSwapAndLiquifyEnabled(bool)._enabled (#690) is not in mixedCase
Parameter WR.swapTokensForXRP(uint256)._tokenAmount (#1084) is not in mixedCase
Parameter WR.swapTokensForBUSD(uint256)._tokenAmount (#1102) is not in mixedCase
Variable WR.BuybackWallet (#540) is not in mixedCase
Variable WR.XRP (#547) is not in mixedCase
Variable WR.BUSD (#548) is not in mixedCase
Parameter DividendPayingToken.dividendOf(address)._owner (#1213) is not in mixedCase
Parameter DividendPayingToken.withdrawableDividendOf(address)._owner (#1217) is not in mixedCase
Parameter DividendPayingToken.withdrawnDividendOf(address)._owner (#1221) is not in mixedCase
Parameter DividendPayingToken.accumulativeDividendOf(address)._owner (#1226) is not in mixedCase
Constant DividendPayingToken.magnitude (#1150) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter XRPDividendTracker.updateMinimumTokenBalanceForDividends(uint256)._newMinimumBalance (#1300) is not in mixedCase
Parameter XRPDividendTracker.getAccount(address)._account (#1331) is not in mixedCase
Parameter BUSDDividendTracker.updateMinimumTokenBalanceForDividends(uint256)._newMinimumBalance (#1515) is not in mixedCase
Parameter BUSDDividendTracker.getAccount(address)._account (#1546) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#368)" inContext (#362-371)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#147) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#147)
Variable DividendPayingToken._withdrawDividendOfUser(address)._withdrawableDividend (#1193) is too similar to XRPDividendTracker.getAccount(address).withdrawableDividends (#1336)
Variable DividendPayingToken._withdrawDividendOfUser(address)._withdrawableDividend (#1193) is too similar to BUSDDividendTracker.getAccount(address).withdrawableDividends (#1551)
Prevent variables from having similar names.
Additional information: link
WR.constructor() (#614-646) uses literals with too many digits:
- _mint(owner(),1000000000 * (10 ** 18)) (#645)
WR.slitherConstructorVariables() (#520-1143) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#527)
WR.slitherConstructorVariables() (#520-1143) uses literals with too many digits:
- swapTokensAtAmount = 100000 * 10 ** 18 (#544)
WR.slitherConstructorVariables() (#520-1143) uses literals with too many digits:
- gasForProcessing = 600000 (#557)
XRPDividendTracker.constructor() (#1286-1289) uses literals with too many digits:
- minimumTokenBalanceForDividends = 1000000 * (10 ** 18) (#1288)
XRPDividendTracker.getAccountAtIndex(uint256) (#1376-1393) uses literals with too many digits:
- (0x0000000000000000000000000000000000000000,- 1,- 1,0,0,0,0,0) (#1387)
BUSDDividendTracker.constructor() (#1500-1503) uses literals with too many digits:
- minimumTokenBalanceForDividends = 1000000 * (10 ** 18) (#1502)
BUSDDividendTracker.getAccountAtIndex(uint256) (#1591-1608) uses literals with too many digits:
- (0x0000000000000000000000000000000000000000,- 1,- 1,0,0,0,0,0) (#1602)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
DividendPayingToken.lastAmount (#1153) is never used in XRPDividendTracker (#1266-1478)
DividendPayingToken.lastAmount (#1153) is never used in BUSDDividendTracker (#1480-1694)
Remove unused state variables.
Additional information: link
DividendPayingToken.lastAmount (#1153) should be constant
WR.deadAddress (#527) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
get(IterableMapping.Map,address) should be declared external:
- IterableMapping.get(IterableMapping.Map,address) (#188-190)
getIndexOfKey(IterableMapping.Map,address) should be declared external:
- IterableMapping.getIndexOfKey(IterableMapping.Map,address) (#192-197)
getKeyAtIndex(IterableMapping.Map,uint256) should be declared external:
- IterableMapping.getKeyAtIndex(IterableMapping.Map,uint256) (#199-201)
size(IterableMapping.Map) should be declared external:
- IterableMapping.size(IterableMapping.Map) (#205-207)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#393-396)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#398-402)
name() should be declared external:
- ERC20.name() (#424-426)
symbol() should be declared external:
- ERC20.symbol() (#428-430)
decimals() should be declared external:
- ERC20.decimals() (#432-434)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#444-447)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#449-451)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#453-456)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#458-462)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#464-467)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#469-472)
setAutomatedMarketMakerPair(address,bool) should be declared external:
- WR.setAutomatedMarketMakerPair(address,bool) (#785-789)
getIsExcludedFromFees(address) should be declared external:
- WR.getIsExcludedFromFees(address) (#835-837)
distributeDividends(uint256) should be declared external:
- DividendPayingToken.distributeDividends(uint256) (#1172-1183)
withdrawDividend() should be declared external:
- BUSDDividendTracker.withdrawDividend() (#1509-1511)
- DividendPayingToken.withdrawDividend() (#1186-1188)
- XRPDividendTracker.withdrawDividend() (#1295-1297)
dividendOf(address) should be declared external:
- DividendPayingToken.dividendOf(address) (#1213-1215)
withdrawnDividendOf(address) should be declared external:
- DividendPayingToken.withdrawnDividendOf(address) (#1221-1223)
getAccountAtIndex(uint256) should be declared external:
- XRPDividendTracker.getAccountAtIndex(uint256) (#1376-1393)
process(uint256) should be declared external:
- XRPDividendTracker.process(uint256) (#1420-1465)
getAccountAtIndex(uint256) should be declared external:
- BUSDDividendTracker.getAccountAtIndex(uint256) (#1591-1608)
process(uint256) should be declared external:
- BUSDDividendTracker.process(uint256) (#1635-1680)
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