RichQUACK.com Token Logo

QUACK [RichQUACK.com] Token

About QUACK

Listings

Token 15 months
CoinGecko 15 months
CoinMarketCap 15 months
white paper

RichQuack is a Deflationary Token with a 5% automatic LP & 5% Auto Farm Feature. RichQuack is also Decentralized Launchpad Platform with MegaJackpot Raffle & Lottery features for Holders. QUACK is a stealth fair launched token that has passsed Security Audit by TechRate, LP Locked, Anti-Whale, RUG Proof & 100% community-driven project on the BSC.

Laser Scorebeta Last Audit: 22 September 2022

report
Token seems to be legit.

RichQuackV2.addLiquidity(uint256,uint256) (#1086-1099) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
Ensure that an arbitrary user cannot withdraw unauthorized funds.

Additional information: link

Reentrancy in RichQuackV2._transfer(address,address,uint256) (#999-1043):
External calls:
- swapAndLiquify(contractTokenBalance) (#1030)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1077-1083)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1030)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#955)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1124)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1133)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1144)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#871)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1125)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1135)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1145)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#873)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- _rTotal = _rTotal.sub(rFee) (#910)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#957)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1143)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#870)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1134)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#872)
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.


Contract ownership is not renounced (belongs to a wallet)

Address._functionCallWithValue(address,bytes,uint256,string) (#361-382) is never used and should be removed
Address.functionCall(address,bytes) (#321-323) is never used and should be removed
Address.functionCall(address,bytes,string) (#331-333) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#346-348) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#356-359) is never used and should be removed
Address.isContract(address) (#268-277) is never used and should be removed
Address.sendValue(address,uint256) (#295-301) is never used and should be removed
Context._msgData() (#240-243) is never used and should be removed
SafeMath.mod(uint256,uint256) (#213-215) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#229-232) is never used and should be removed
Remove unused functions.

Additional information: link

RichQuackV2._rTotal (#700) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
RichQuackV2._previousTaxFee (#708) is set pre-construction with a non-constant function or state variable:
- _taxFee
RichQuackV2._previousLiquidityFee (#711) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
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 Address.sendValue(address,uint256) (#295-301):
- (success) = recipient.call{value: amount}() (#299)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#361-382):
- (success,returndata) = target.call{value: weiValue}(data) (#365)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence

Additional information: link

Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#552) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#553)
Variable RichQuackV2._getValues(uint256).rTransferAmount (#916) is too similar to RichQuackV2._getTValues(uint256).tTransferAmount (#923)
Variable RichQuackV2.reflectionFromToken(uint256,bool).rTransferAmount (#834) is too similar to RichQuackV2._transferFromExcluded(address,address,uint256).tTransferAmount (#1142)
Variable RichQuackV2._getValues(uint256).rTransferAmount (#916) is too similar to RichQuackV2._transferStandard(address,address,uint256).tTransferAmount (#1123)
Variable RichQuackV2._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#931) is too similar to RichQuackV2._getTValues(uint256).tTransferAmount (#923)
Variable RichQuackV2._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to RichQuackV2._getTValues(uint256).tTransferAmount (#923)
Variable RichQuackV2._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to RichQuackV2._transferStandard(address,address,uint256).tTransferAmount (#1123)
Variable RichQuackV2._transferToExcluded(address,address,uint256).rTransferAmount (#1132) is too similar to RichQuackV2._transferFromExcluded(address,address,uint256).tTransferAmount (#1142)
Variable RichQuackV2._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#931) is too similar to RichQuackV2._transferStandard(address,address,uint256).tTransferAmount (#1123)
Variable RichQuackV2._transferToExcluded(address,address,uint256).rTransferAmount (#1132) is too similar to RichQuackV2._getValues(uint256).tTransferAmount (#915)
Variable RichQuackV2._transferFromExcluded(address,address,uint256).rTransferAmount (#1142) is too similar to RichQuackV2._transferFromExcluded(address,address,uint256).tTransferAmount (#1142)
Variable RichQuackV2._getValues(uint256).rTransferAmount (#916) is too similar to RichQuackV2._transferFromExcluded(address,address,uint256).tTransferAmount (#1142)
Variable RichQuackV2._transferToExcluded(address,address,uint256).rTransferAmount (#1132) is too similar to RichQuackV2._transferToExcluded(address,address,uint256).tTransferAmount (#1132)
Variable RichQuackV2.reflectionFromToken(uint256,bool).rTransferAmount (#834) is too similar to RichQuackV2._getTValues(uint256).tTransferAmount (#923)
Variable RichQuackV2.reflectionFromToken(uint256,bool).rTransferAmount (#834) is too similar to RichQuackV2._transferStandard(address,address,uint256).tTransferAmount (#1123)
Variable RichQuackV2._transferToExcluded(address,address,uint256).rTransferAmount (#1132) is too similar to RichQuackV2._getTValues(uint256).tTransferAmount (#923)
Variable RichQuackV2._transferToExcluded(address,address,uint256).rTransferAmount (#1132) is too similar to RichQuackV2._transferStandard(address,address,uint256).tTransferAmount (#1123)
Variable RichQuackV2._transferFromExcluded(address,address,uint256).rTransferAmount (#1142) is too similar to RichQuackV2._getTValues(uint256).tTransferAmount (#923)
Variable RichQuackV2._transferFromExcluded(address,address,uint256).rTransferAmount (#1142) is too similar to RichQuackV2._transferStandard(address,address,uint256).tTransferAmount (#1123)
Variable RichQuackV2._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to RichQuackV2._transferToExcluded(address,address,uint256).tTransferAmount (#1132)
Variable RichQuackV2._transferBothExcluded(address,address,uint256).rTransferAmount (#869) is too similar to RichQuackV2._transferBothExcluded(address,address,uint256).tTransferAmount (#869)
Variable RichQuackV2._getValues(uint256).rTransferAmount (#916) is too similar to RichQuackV2._transferBothExcluded(address,address,uint256).tTransferAmount (#869)
Variable RichQuackV2.reflectionFromToken(uint256,bool).rTransferAmount (#834) is too similar to RichQuackV2._transferBothExcluded(address,address,uint256).tTransferAmount (#869)
Variable RichQuackV2._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#931) is too similar to RichQuackV2._transferBothExcluded(address,address,uint256).tTransferAmount (#869)
Variable RichQuackV2.reflectionFromToken(uint256,bool).rTransferAmount (#834) is too similar to RichQuackV2._transferToExcluded(address,address,uint256).tTransferAmount (#1132)
Variable RichQuackV2._transferBothExcluded(address,address,uint256).rTransferAmount (#869) is too similar to RichQuackV2._transferToExcluded(address,address,uint256).tTransferAmount (#1132)
Variable RichQuackV2._getValues(uint256).rTransferAmount (#916) is too similar to RichQuackV2._transferToExcluded(address,address,uint256).tTransferAmount (#1132)
Variable RichQuackV2._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#931) is too similar to RichQuackV2._transferToExcluded(address,address,uint256).tTransferAmount (#1132)
Variable RichQuackV2._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to RichQuackV2._transferFromExcluded(address,address,uint256).tTransferAmount (#1142)
Variable RichQuackV2._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to RichQuackV2._getValues(uint256).tTransferAmount (#915)
Variable RichQuackV2._transferBothExcluded(address,address,uint256).rTransferAmount (#869) is too similar to RichQuackV2._transferFromExcluded(address,address,uint256).tTransferAmount (#1142)
Variable RichQuackV2._transferFromExcluded(address,address,uint256).rTransferAmount (#1142) is too similar to RichQuackV2._transferBothExcluded(address,address,uint256).tTransferAmount (#869)
Variable RichQuackV2._transferBothExcluded(address,address,uint256).rTransferAmount (#869) is too similar to RichQuackV2._getValues(uint256).tTransferAmount (#915)
Variable RichQuackV2._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#931) is too similar to RichQuackV2._transferFromExcluded(address,address,uint256).tTransferAmount (#1142)
Variable RichQuackV2.reflectionFromToken(uint256,bool).rTransferAmount (#834) is too similar to RichQuackV2._getValues(uint256).tTransferAmount (#915)
Variable RichQuackV2._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#931) is too similar to RichQuackV2._getValues(uint256).tTransferAmount (#915)
Variable RichQuackV2._getValues(uint256).rTransferAmount (#916) is too similar to RichQuackV2._getValues(uint256).tTransferAmount (#915)
Variable RichQuackV2._transferFromExcluded(address,address,uint256).rTransferAmount (#1142) is too similar to RichQuackV2._transferToExcluded(address,address,uint256).tTransferAmount (#1132)
Variable RichQuackV2._transferBothExcluded(address,address,uint256).rTransferAmount (#869) is too similar to RichQuackV2._transferStandard(address,address,uint256).tTransferAmount (#1123)
Variable RichQuackV2._transferFromExcluded(address,address,uint256).rTransferAmount (#1142) is too similar to RichQuackV2._getValues(uint256).tTransferAmount (#915)
Variable RichQuackV2._transferToExcluded(address,address,uint256).rTransferAmount (#1132) is too similar to RichQuackV2._transferBothExcluded(address,address,uint256).tTransferAmount (#869)
Variable RichQuackV2._transferBothExcluded(address,address,uint256).rTransferAmount (#869) is too similar to RichQuackV2._getTValues(uint256).tTransferAmount (#923)
Variable RichQuackV2._transferStandard(address,address,uint256).rTransferAmount (#1123) is too similar to RichQuackV2._transferBothExcluded(address,address,uint256).tTransferAmount (#869)
Prevent variables from having similar names.

Additional information: link

RichQuackV2._decimals (#705) should be constant
RichQuackV2._name (#703) should be constant
RichQuackV2._symbol (#704) should be constant
RichQuackV2._tTotal (#699) should be constant
RichQuackV2.numTokensSellToAddToLiquidity (#720) should be constant
Add the constant attributes to state variables that never change.

Additional information: link

Contract name (RichQUACK.com) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.


Not a direct threat, but may indicate unreliable intentions of developer. Widespread names (e.g. Elon, King, Moon, Doge) are common among meme-tokens and scams. The allow to gain free hype and attract unexperienced investors.

Address.isContract(address) (#268-277) uses assembly
- INLINE ASM (#275)
Address._functionCallWithValue(address,bytes,uint256,string) (#361-382) uses assembly
- INLINE ASM (#374-377)
Do not use evm assembly.

Additional information: link

RichQuackV2.setTaxFeePercent(uint256) (#887-889) should emit an event for:
- _taxFee = taxFee (#888)
RichQuackV2.setLiquidityFeePercent(uint256) (#891-893) should emit an event for:
- _liquidityFee = liquidityFee (#892)
RichQuackV2.setMaxTxPercent(uint256) (#895-899) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 2) (#896-898)
Emit an event for critical parameter changes.

Additional information: link

Ownable.unlock() (#463-468) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now > _lockTime,Contract is locked until 7 days) (#465)
Avoid relying on block.timestamp.

Additional information: link

Reentrancy in RichQuackV2._transfer(address,address,uint256) (#999-1043):
External calls:
- swapAndLiquify(contractTokenBalance) (#1030)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1077-1083)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1030)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
Event emitted after the call(s):
- Transfer(sender,recipient,tTransferAmount) (#1128)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- Transfer(sender,recipient,tTransferAmount) (#1138)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- Transfer(sender,recipient,tTransferAmount) (#1148)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- Transfer(sender,recipient,tTransferAmount) (#876)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
Reentrancy in RichQuackV2.constructor() (#736-752):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#741-742)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#751)
Reentrancy in RichQuackV2.swapAndLiquify(uint256) (#1045-1066):
External calls:
- swapTokensForEth(half) (#1057)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1077-1083)
- addLiquidity(otherHalf,newBalance) (#1063)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1063)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#996)
- addLiquidity(otherHalf,newBalance) (#1063)
- SwapAndLiquify(half,newBalance,otherHalf) (#1065)
Reentrancy in RichQuackV2.transferFrom(address,address,uint256) (#795-799):
External calls:
- _transfer(sender,recipient,amount) (#796)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1077-1083)
External calls sending eth:
- _transfer(sender,recipient,amount) (#796)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#996)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#797)
Apply the check-effects-interactions pattern.

Additional information: link

Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#507) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#508) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#525) is not in mixedCase
Function IUniswapV2Router01.WETH() (#547) is not in mixedCase
Parameter RichQuackV2.setSwapAndLiquifyEnabled(bool)._enabled (#901) is not in mixedCase
Parameter RichQuackV2.calculateTaxFee(uint256)._amount (#960) is not in mixedCase
Parameter RichQuackV2.calculateLiquidityFee(uint256)._amount (#966) is not in mixedCase
Variable RichQuackV2._taxFee (#707) is not in mixedCase
Variable RichQuackV2._liquidityFee (#710) is not in mixedCase
Variable RichQuackV2._maxTxAmount (#719) is not in mixedCase
Follow the Solidity naming convention.

Additional information: link

RichQuackV2.slitherConstructorVariables() (#685-1155) uses literals with too many digits:
- _tTotal = 100000000000 * 10 ** 6 * 10 ** 9 (#699)
RichQuackV2.slitherConstructorVariables() (#685-1155) uses literals with too many digits:
- _maxTxAmount = 500000000 * 10 ** 6 * 10 ** 9 (#719)
RichQuackV2.slitherConstructorVariables() (#685-1155) uses literals with too many digits:
- numTokensSellToAddToLiquidity = 50000000 * 10 ** 6 * 10 ** 9 (#720)
Use: Ether suffix, Time suffix, or The scientific notation

Additional information: link

Redundant expression "this (#241)" inContext (#235-244)
Remove redundant statements if they congest code but offer no value.

Additional information: link

RichQuackV2.addLiquidity(uint256,uint256) (#1086-1099) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
Ensure that all the return values of the function calls are used.

Additional information: link

RichQuackV2.allowance(address,address).owner (#786) shadows:
- Ownable.owner() (#416-418) (function)
RichQuackV2._approve(address,address,uint256).owner (#991) shadows:
- Ownable.owner() (#416-418) (function)
Rename the local variables that shadow another component.

Additional information: link

Reentrancy in RichQuackV2._transfer(address,address,uint256) (#999-1043):
External calls:
- swapAndLiquify(contractTokenBalance) (#1030)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1077-1083)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1030)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- _liquidityFee = _previousLiquidityFee (#984)
- _liquidityFee = 0 (#979)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- _previousLiquidityFee = _liquidityFee (#976)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- _previousTaxFee = _taxFee (#975)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- _tFeeTotal = _tFeeTotal.add(tFee) (#911)
- _tokenTransfer(from,to,amount,takeFee) (#1042)
- _taxFee = _previousTaxFee (#983)
- _taxFee = 0 (#978)
Reentrancy in RichQuackV2.constructor() (#736-752):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#741-742)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#748)
- _isExcludedFromFee[address(this)] = true (#749)
- uniswapV2Router = _uniswapV2Router (#745)
Reentrancy in RichQuackV2.setRouterAddress(address) (#754-758):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#756)
State variables written after the call(s):
- uniswapV2Router = _uniswapV2Router (#757)
Reentrancy in RichQuackV2.swapAndLiquify(uint256) (#1045-1066):
External calls:
- swapTokensForEth(half) (#1057)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1077-1083)
- addLiquidity(otherHalf,newBalance) (#1063)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1063)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1063)
- _allowances[owner][spender] = amount (#995)
Reentrancy in RichQuackV2.transferFrom(address,address,uint256) (#795-799):
External calls:
- _transfer(sender,recipient,amount) (#796)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1077-1083)
External calls sending eth:
- _transfer(sender,recipient,amount) (#796)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1091-1098)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#797)
- _allowances[owner][spender] = amount (#995)
Apply the check-effects-interactions pattern.

Additional information: link

RichQuackV2.includeInReward(address) (#856-867) has costly operations inside a loop:
- _excluded.pop() (#863)
Use a local variable to hold the loop computation result.

Additional information: link

renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#435-438)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#444-448)
geUnlockTime() should be declared external:
- Ownable.geUnlockTime() (#450-452)
lock(uint256) should be declared external:
- Ownable.lock(uint256) (#455-460)
unlock() should be declared external:
- Ownable.unlock() (#463-468)
setRouterAddress(address) should be declared external:
- RichQuackV2.setRouterAddress(address) (#754-758)
name() should be declared external:
- RichQuackV2.name() (#760-762)
symbol() should be declared external:
- RichQuackV2.symbol() (#764-766)
decimals() should be declared external:
- RichQuackV2.decimals() (#768-770)
totalSupply() should be declared external:
- RichQuackV2.totalSupply() (#772-774)
transfer(address,uint256) should be declared external:
- RichQuackV2.transfer(address,uint256) (#781-784)
allowance(address,address) should be declared external:
- RichQuackV2.allowance(address,address) (#786-788)
approve(address,uint256) should be declared external:
- RichQuackV2.approve(address,uint256) (#790-793)
transferFrom(address,address,uint256) should be declared external:
- RichQuackV2.transferFrom(address,address,uint256) (#795-799)
increaseAllowance(address,uint256) should be declared external:
- RichQuackV2.increaseAllowance(address,uint256) (#801-804)
decreaseAllowance(address,uint256) should be declared external:
- RichQuackV2.decreaseAllowance(address,uint256) (#806-809)
isExcludedFromReward(address) should be declared external:
- RichQuackV2.isExcludedFromReward(address) (#811-813)
totalFees() should be declared external:
- RichQuackV2.totalFees() (#815-817)
deliver(uint256) should be declared external:
- RichQuackV2.deliver(uint256) (#819-826)
reflectionFromToken(uint256,bool) should be declared external:
- RichQuackV2.reflectionFromToken(uint256,bool) (#828-837)
excludeFromReward(address) should be declared external:
- RichQuackV2.excludeFromReward(address) (#845-854)
excludeFromFee(address) should be declared external:
- RichQuackV2.excludeFromFee(address) (#879-881)
includeInFee(address) should be declared external:
- RichQuackV2.includeInFee(address) (#883-885)
setSwapAndLiquifyEnabled(bool) should be declared external:
- RichQuackV2.setSwapAndLiquifyEnabled(bool) (#901-904)
isExcludedFromFee(address) should be declared external:
- RichQuackV2.isExcludedFromFee(address) (#987-989)
Use the external attribute for functions never called from the contract.

Additional information: link

Holders:

Contract has 12% buy tax and 11% sell tax.
Taxes are suspiciously high (over 10%) and contract ownership is not renounced. Token has a high risk of becoming a honeypot.


Token is deployed only at one blockchain


Unable to find Youtube account


Unable to find whitepaper link on the website


Unable to find token on CoinHunt

Additional information: link


Unable to find code repository for the project

No disclosed threats

Price for QUACK

News for QUACK