Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
PigKing.transferEthOut(uint256,uint256) (#1012-1015) sends eth to arbitrary user
Dangerous calls:
- _marketingWallet.transfer(marketingBalance) (#1014)
PigKing.swapETHForTokens(uint256) (#1017-1032) sends eth to arbitrary user
Dangerous calls:
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
PigKing.addLiquidity(uint256,uint256) (#1052-1065) sends eth to arbitrary user
Dangerous calls:
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in PigKing._transfer(address,address,uint256) (#915-966):
External calls:
- swapAndLiquify(contractTokenBalance) (#949)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1043-1049)
- buyBackTokens(buyBackAmount) (#955)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#949)
- _devWallet.transfer(devBalance) (#1013)
- _marketingWallet.transfer(marketingBalance) (#1014)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- buyBackTokens(buyBackAmount) (#955)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _buyBackFee = _previousBuyBackFee (#1190)
- _buyBackFee = _boostedBuyBackFee (#1207)
- _buyBackFee = 0 (#1182)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _devFee = _previousDevFee (#1192)
- _devFee = _boostedDevFee (#1209)
- _devFee = 0 (#1184)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _liquidityFee = _previousLiquidityFee (#1189)
- _liquidityFee = _boostedLiquidityFee (#1206)
- _liquidityFee = 0 (#1181)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _marketingFee = _previousMarketingFee (#1191)
- _marketingFee = _boostedMarketingFee (#1208)
- _marketingFee = 0 (#1183)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1152)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1085)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1086)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _rTotal = _rTotal.sub(rFee) (#1145)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1154)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1089)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1091)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1093)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1094)
- buyBackTokens(buyBackAmount) (#955)
- inSwapAndLiquify = true (#671)
- inSwapAndLiquify = false (#673)
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.
PigKing.swapAndLiquify(uint256) (#974-1010) performs a multiplication on the result of a division:
-half = toLiquify.div(2) (#984)
-liquidityBalance = fromSwap.mul(half).div(toSwapForEth) (#999)
PigKing.swapAndLiquify(uint256) (#974-1010) performs a multiplication on the result of a division:
-toBuyBack = contractTokenBalance.mul(_buyBackFee).div(totalBNBFees) (#979)
-buyBackBalance = fromSwap.mul(toBuyBack).div(toSwapForEth) (#1000)
PigKing.swapAndLiquify(uint256) (#974-1010) performs a multiplication on the result of a division:
-toDev = contractTokenBalance.mul(_devFee).div(totalBNBFees) (#980)
-devBalance = fromSwap.mul(toDev).div(toSwapForEth) (#1001)
Consider ordering multiplication before division.
Additional information: link
PigKing.addLiquidity(uint256,uint256) (#1052-1065) ignores return value by dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
Ensure that all the return values of the function calls are used.
Additional information: link
PigKing._approve(address,address,uint256).owner (#907) shadows:
- Ownable.owner() (#539-541) (function)
Rename the local variables that shadow another component.
Additional information: link
PigKing.setTaxes(uint256,uint256,uint256,uint256,uint256) (#766-773) should emit an event for:
- _reflectFee = reflectFee (#768)
- _liquidityFee = liquidityFee (#769)
- _marketingFee = marketingFee (#770)
- _buyBackFee = buyBackFee (#771)
- _devFee = devFee (#772)
PigKing.setBoostedTaxes(uint256,uint256,uint256,uint256,uint256) (#775-782) should emit an event for:
- _boostedReflectFee = reflectFee (#777)
- _boostedLiquidityFee = liquidityFee (#778)
- _boostedMarketingFee = marketingFee (#779)
- _boostedBuyBackFee = buyBackFee (#780)
- _boostedDevFee = devFee (#781)
PigKing.setMaxTxPercent(uint256,uint256) (#784-788) should emit an event for:
- _maxTxAmount = _tTotal.mul(percent).div(divisor) (#786)
PigKing.setMaxWallet(uint256,uint256) (#790-794) should emit an event for:
- _maxWalletAmount = _tTotal.mul(percent).div(divisor) (#792)
PigKing.setPercentToSell(uint256) (#796-799) should emit an event for:
- percentToSell = percent (#797)
- numTokensSellToAddToLiquidity = (_tTotal * percentToSell) / 10000 (#798)
PigKing.setBuyBackSellLimit(uint256) (#816-818) should emit an event for:
- buyBackSellLimit = limit * 10 ** _decimalsMul (#817)
PigKing.setBuyBackAmount(uint256,uint256) (#820-822) should emit an event for:
- buyBackAmount = amount * 10 ** multiplier (#821)
Emit an event for critical parameter changes.
Additional information: link
Reentrancy in PigKing._transfer(address,address,uint256) (#915-966):
External calls:
- swapAndLiquify(contractTokenBalance) (#949)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1043-1049)
- buyBackTokens(buyBackAmount) (#955)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#949)
- _devWallet.transfer(devBalance) (#1013)
- _marketingWallet.transfer(marketingBalance) (#1014)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- buyBackTokens(buyBackAmount) (#955)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousBuyBackFee = _buyBackFee (#1201)
- _previousBuyBackFee = _buyBackFee (#1176)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousDevFee = _devFee (#1203)
- _previousDevFee = _devFee (#1178)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousLiquidityFee = _liquidityFee (#1200)
- _previousLiquidityFee = _liquidityFee (#1175)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousMarketingFee = _marketingFee (#1202)
- _previousMarketingFee = _marketingFee (#1177)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousReflectFee = _reflectFee (#1199)
- _previousReflectFee = _reflectFee (#1174)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _reflectFee = _previousReflectFee (#1188)
- _reflectFee = _boostedReflectFee (#1205)
- _reflectFee = 0 (#1180)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1146)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- boosted = true (#1072)
- boosted = false (#1195)
Reentrancy in PigKing.constructor() (#676-706):
External calls:
- lpPair = IUniswapV2Factory(_dexRouter.factory()).createPair(address(this),_dexRouter.WETH()) (#681-682)
State variables written after the call(s):
- _approve(_msgSender(),_routerAddress,_tTotal) (#703)
- _allowances[owner][spender] = amount (#911)
- _excluded.push(address(this)) (#690)
- _excluded.push(owner()) (#692)
- _excluded.push(burnAddress) (#694)
- _excluded.push(lpPair) (#696)
- _excluded.push(0x2D045410f002A95EFcEE67759A92518fA3FcE677) (#700)
- _isExcluded[address(this)] = true (#689)
- _isExcluded[owner()] = true (#691)
- _isExcluded[burnAddress] = true (#693)
- _isExcluded[lpPair] = true (#695)
- _isExcluded[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true (#699)
- _isExcludedFromFee[owner()] = true (#686)
- _isExcludedFromFee[address(this)] = true (#687)
- _isExcludedFromFee[0x2D045410f002A95EFcEE67759A92518fA3FcE677] = true (#698)
- _liquidityHolders[owner()] = true (#688)
- dexRouter = _dexRouter (#684)
Reentrancy in PigKing.setNewRouter(address) (#746-756):
External calls:
- lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this),_newRouter.WETH()) (#750)
State variables written after the call(s):
- dexRouter = _newRouter (#755)
Reentrancy in PigKing.swapAndLiquify(uint256) (#974-1010):
External calls:
- swapTokensForEth(toSwapForEth) (#995)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1043-1049)
- addLiquidity(otherHalf,liquidityBalance) (#1005)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
External calls sending eth:
- addLiquidity(otherHalf,liquidityBalance) (#1005)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
State variables written after the call(s):
- addLiquidity(otherHalf,liquidityBalance) (#1005)
- _allowances[owner][spender] = amount (#911)
Reentrancy in PigKing.transferFrom(address,address,uint256) (#730-734):
External calls:
- _transfer(sender,recipient,amount) (#731)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1043-1049)
External calls sending eth:
- _transfer(sender,recipient,amount) (#731)
- _devWallet.transfer(devBalance) (#1013)
- _marketingWallet.transfer(marketingBalance) (#1014)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#732)
- _allowances[owner][spender] = amount (#911)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in PigKing._transfer(address,address,uint256) (#915-966):
External calls:
- swapAndLiquify(contractTokenBalance) (#949)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1043-1049)
- buyBackTokens(buyBackAmount) (#955)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#949)
- _devWallet.transfer(devBalance) (#1013)
- _marketingWallet.transfer(marketingBalance) (#1014)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- buyBackTokens(buyBackAmount) (#955)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#1031)
- buyBackTokens(buyBackAmount) (#955)
- Transfer(sender,address(this),tLiquidity) (#1155)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- Transfer(sender,recipient,tTransferAmount) (#1102)
- _tokenTransfer(from,to,amount,takeFee) (#965)
Reentrancy in PigKing.constructor() (#676-706):
External calls:
- lpPair = IUniswapV2Factory(_dexRouter.factory()).createPair(address(this),_dexRouter.WETH()) (#681-682)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#912)
- _approve(_msgSender(),_routerAddress,_tTotal) (#703)
- Transfer(address(0),_msgSender(),_tTotal) (#705)
Reentrancy in PigKing.swapAndLiquify(uint256) (#974-1010):
External calls:
- swapTokensForEth(toSwapForEth) (#995)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1043-1049)
- addLiquidity(otherHalf,liquidityBalance) (#1005)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
External calls sending eth:
- addLiquidity(otherHalf,liquidityBalance) (#1005)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#912)
- addLiquidity(otherHalf,liquidityBalance) (#1005)
- SwapAndLiquify(half,liquidityBalance,otherHalf) (#1007)
Reentrancy in PigKing.swapETHForTokens(uint256) (#1017-1032):
External calls:
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#1031)
Reentrancy in PigKing.transferFrom(address,address,uint256) (#730-734):
External calls:
- _transfer(sender,recipient,amount) (#731)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
- dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1043-1049)
External calls sending eth:
- _transfer(sender,recipient,amount) (#731)
- _devWallet.transfer(devBalance) (#1013)
- _marketingWallet.transfer(marketingBalance) (#1014)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#912)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#732)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#277-286) uses assembly
- INLINE ASM (#284)
Address._functionCallWithValue(address,bytes,uint256,string) (#314-335) uses assembly
- INLINE ASM (#327-330)
Do not use evm assembly.
Additional information: link
PigKing.restoreAllFee() (#1187-1196) compares to a boolean constant:
-boosted == true (#1194)
Remove the equality to the boolean constant.
Additional information: link
PigKing.includeInReward(address) (#891-902) has costly operations inside a loop:
- _excluded.pop() (#898)
Use a local variable to hold the loop computation result.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#314-335) is never used and should be removed
Address.functionCall(address,bytes) (#296-298) is never used and should be removed
Address.functionCall(address,bytes,string) (#300-302) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#305-307) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#309-312) is never used and should be removed
Address.isContract(address) (#277-286) is never used and should be removed
Address.sendValue(address,uint256) (#288-294) is never used and should be removed
Context._msgData() (#21-25) is never used and should be removed
SafeMath.mod(uint256,uint256) (#254-256) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#270-273) is never used and should be removed
Remove unused functions.
Additional information: link
PigKing._decimalsMul (#582) is set pre-construction with a non-constant function or state variable:
- _decimals
PigKing._tTotal (#583) is set pre-construction with a non-constant function or state variable:
- startingSupply * 10 ** _decimalsMul
PigKing._rTotal (#584) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
PigKing._previousReflectFee (#591) is set pre-construction with a non-constant function or state variable:
- _reflectFee
PigKing._previousLiquidityFee (#595) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
PigKing._previousMarketingFee (#599) is set pre-construction with a non-constant function or state variable:
- _marketingFee
PigKing._previousBuyBackFee (#603) is set pre-construction with a non-constant function or state variable:
- _buyBackFee
PigKing._previousDevFee (#607) is set pre-construction with a non-constant function or state variable:
- _devFee
PigKing.buyBackSellLimit (#627) is set pre-construction with a non-constant function or state variable:
- (_tTotal * 2) / 100
PigKing._maxTxAmount (#635) is set pre-construction with a non-constant function or state variable:
- (_tTotal * maxTxPercent) / maxTxDivisor
PigKing._previousMaxTxAmount (#636) is set pre-construction with a non-constant function or state variable:
- _maxTxAmount
PigKing.maxTxAmountUI (#637) is set pre-construction with a non-constant function or state variable:
- (startingSupply * maxTxPercent) / maxTxDivisor
PigKing._maxWalletAmount (#642) is set pre-construction with a non-constant function or state variable:
- (_tTotal * maxWalletPercent) / maxWalletDivisor
PigKing._previousMaxWalletAmount (#643) is set pre-construction with a non-constant function or state variable:
- _maxWalletAmount
PigKing.maxWalletAmountUI (#644) is set pre-construction with a non-constant function or state variable:
- (startingSupply * maxWalletPercent) / maxWalletDivisor
PigKing.numTokensSellToAddToLiquidity (#649) is set pre-construction with a non-constant function or state variable:
- (_tTotal * percentToSell) / 10000
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
Pragma version>=0.8.0<0.9.0 (#14) is too complex
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
Low level call in Address.sendValue(address,uint256) (#288-294):
- (success) = recipient.call{value: amount}() (#292)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#314-335):
- (success,returndata) = target.call{value: weiValue}(data) (#318)
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() (#363) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#364) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#378) is not in mixedCase
Function IUniswapV2Router01.WETH() (#396) is not in mixedCase
Parameter PigKing.setSwapAndLiquifyEnabled(bool)._enabled (#806) is not in mixedCase
Parameter PigKing.setBuyBackEnabled(bool)._enabled (#811) is not in mixedCase
Parameter PigKing.calculateTaxFee(uint256)._amount (#1158) is not in mixedCase
Parameter PigKing.calculateLiquidityFee(uint256)._amount (#1162) is not in mixedCase
Variable PigKing._reflectFee (#590) is not in mixedCase
Variable PigKing._boostedReflectFee (#592) is not in mixedCase
Variable PigKing._liquidityFee (#594) is not in mixedCase
Variable PigKing._boostedLiquidityFee (#596) is not in mixedCase
Variable PigKing._marketingFee (#598) is not in mixedCase
Variable PigKing._boostedMarketingFee (#600) is not in mixedCase
Variable PigKing._buyBackFee (#602) is not in mixedCase
Variable PigKing._boostedBuyBackFee (#604) is not in mixedCase
Variable PigKing._devFee (#606) is not in mixedCase
Variable PigKing._boostedDevFee (#608) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#22)" inContext (#16-26)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in PigKing._transfer(address,address,uint256) (#915-966):
External calls:
- swapAndLiquify(contractTokenBalance) (#949)
- _devWallet.transfer(devBalance) (#1013)
- _marketingWallet.transfer(marketingBalance) (#1014)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#949)
- _devWallet.transfer(devBalance) (#1013)
- _marketingWallet.transfer(marketingBalance) (#1014)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- buyBackTokens(buyBackAmount) (#955)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _buyBackFee = _previousBuyBackFee (#1190)
- _buyBackFee = _boostedBuyBackFee (#1207)
- _buyBackFee = 0 (#1182)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _devFee = _previousDevFee (#1192)
- _devFee = _boostedDevFee (#1209)
- _devFee = 0 (#1184)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _liquidityFee = _previousLiquidityFee (#1189)
- _liquidityFee = _boostedLiquidityFee (#1206)
- _liquidityFee = 0 (#1181)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _marketingFee = _previousMarketingFee (#1191)
- _marketingFee = _boostedMarketingFee (#1208)
- _marketingFee = 0 (#1183)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousBuyBackFee = _buyBackFee (#1201)
- _previousBuyBackFee = _buyBackFee (#1176)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousDevFee = _devFee (#1203)
- _previousDevFee = _devFee (#1178)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousLiquidityFee = _liquidityFee (#1200)
- _previousLiquidityFee = _liquidityFee (#1175)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousMarketingFee = _marketingFee (#1202)
- _previousMarketingFee = _marketingFee (#1177)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _previousReflectFee = _reflectFee (#1199)
- _previousReflectFee = _reflectFee (#1174)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1152)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1085)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1086)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _rTotal = _rTotal.sub(rFee) (#1145)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _reflectFee = _previousReflectFee (#1188)
- _reflectFee = _boostedReflectFee (#1205)
- _reflectFee = 0 (#1180)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1146)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1154)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1089)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1091)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1093)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1094)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- boosted = true (#1072)
- boosted = false (#1195)
- buyBackTokens(buyBackAmount) (#955)
- inSwapAndLiquify = true (#671)
- inSwapAndLiquify = false (#673)
Event emitted after the call(s):
- SwapETHForTokens(amount,path) (#1031)
- buyBackTokens(buyBackAmount) (#955)
- Transfer(sender,address(this),tLiquidity) (#1155)
- _tokenTransfer(from,to,amount,takeFee) (#965)
- Transfer(sender,recipient,tTransferAmount) (#1102)
- _tokenTransfer(from,to,amount,takeFee) (#965)
Reentrancy in PigKing.transferFrom(address,address,uint256) (#730-734):
External calls:
- _transfer(sender,recipient,amount) (#731)
- _devWallet.transfer(devBalance) (#1013)
- _marketingWallet.transfer(marketingBalance) (#1014)
External calls sending eth:
- _transfer(sender,recipient,amount) (#731)
- _devWallet.transfer(devBalance) (#1013)
- _marketingWallet.transfer(marketingBalance) (#1014)
- dexRouter.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,burnAddress,block.timestamp) (#1057-1064)
- dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,burnAddress,block.timestamp.add(300)) (#1024-1029)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#732)
- _allowances[owner][spender] = amount (#911)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#912)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#732)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#400) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#401)
Variable PigKing.reflectionFromToken(uint256,bool).rTransferAmount (#870) is too similar to PigKing._getValues(uint256).tTransferAmount (#1106)
Variable PigKing.reflectionFromToken(uint256,bool).rTransferAmount (#870) is too similar to PigKing._getTValues(uint256).tTransferAmount (#1114)
Variable PigKing._finalizeTransfer(address,address,uint256).rTransferAmount (#1083) is too similar to PigKing._getTValues(uint256).tTransferAmount (#1114)
Variable PigKing.reflectionFromToken(uint256,bool).rTransferAmount (#870) is too similar to PigKing._finalizeTransfer(address,address,uint256).tTransferAmount (#1083)
Variable PigKing._getValues(uint256).rTransferAmount (#1107) is too similar to PigKing._getTValues(uint256).tTransferAmount (#1114)
Variable PigKing._finalizeTransfer(address,address,uint256).rTransferAmount (#1083) is too similar to PigKing._finalizeTransfer(address,address,uint256).tTransferAmount (#1083)
Variable PigKing._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1122) is too similar to PigKing._finalizeTransfer(address,address,uint256).tTransferAmount (#1083)
Variable PigKing._getValues(uint256).rTransferAmount (#1107) is too similar to PigKing._finalizeTransfer(address,address,uint256).tTransferAmount (#1083)
Variable PigKing._getValues(uint256).rTransferAmount (#1107) is too similar to PigKing._getValues(uint256).tTransferAmount (#1106)
Variable PigKing._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1122) is too similar to PigKing._getValues(uint256).tTransferAmount (#1106)
Variable PigKing._finalizeTransfer(address,address,uint256).rTransferAmount (#1083) is too similar to PigKing._getValues(uint256).tTransferAmount (#1106)
Variable PigKing._getRValues(uint256,uint256,uint256,uint256).rTransferAmount (#1122) is too similar to PigKing._getTValues(uint256).tTransferAmount (#1114)
Prevent variables from having similar names.
Additional information: link
PigKing._previousMaxTxAmount (#636) is never used in PigKing (#563-1212)
PigKing._previousMaxWalletAmount (#643) is never used in PigKing (#563-1212)
Remove unused state variables.
Additional information: link
PigKing._decimals (#581) should be constant
PigKing._devWallet (#621) should be constant
PigKing._name (#587) should be constant
PigKing._routerAddress (#617) should be constant
PigKing._symbol (#588) should be constant
PigKing.burnAddress (#619) should be constant
PigKing.masterTaxDivisor (#610) should be constant
PigKing.maxTxDivisor (#634) should be constant
PigKing.maxTxPercent (#633) should be constant
PigKing.maxWalletDivisor (#641) should be constant
PigKing.maxWalletPercent (#640) should be constant
PigKing.maximumTaxesPercent (#611) should be constant
PigKing.startingSupply (#578) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#548-551)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#553-558)
transfer(address,uint256) should be declared external:
- PigKing.transfer(address,uint256) (#720-723)
approve(address,uint256) should be declared external:
- PigKing.approve(address,uint256) (#725-728)
transferFrom(address,address,uint256) should be declared external:
- PigKing.transferFrom(address,address,uint256) (#730-734)
increaseAllowance(address,uint256) should be declared external:
- PigKing.increaseAllowance(address,uint256) (#736-739)
decreaseAllowance(address,uint256) should be declared external:
- PigKing.decreaseAllowance(address,uint256) (#741-744)
setNewRouter(address) should be declared external:
- PigKing.setNewRouter(address) (#746-756)
isExcludedFromReward(address) should be declared external:
- PigKing.isExcludedFromReward(address) (#758-760)
isExcludedFromFee(address) should be declared external:
- PigKing.isExcludedFromFee(address) (#762-764)
setSwapAndLiquifyEnabled(bool) should be declared external:
- PigKing.setSwapAndLiquifyEnabled(bool) (#806-809)
setBuyBackEnabled(bool) should be declared external:
- PigKing.setBuyBackEnabled(bool) (#811-814)
excludeFromFee(address) should be declared external:
- PigKing.excludeFromFee(address) (#834-836)
totalFees() should be declared external:
- PigKing.totalFees() (#842-844)
deliver(uint256) should be declared external:
- PigKing.deliver(uint256) (#855-862)
reflectionFromToken(uint256,bool) should be declared external:
- PigKing.reflectionFromToken(uint256,bool) (#864-873)
excludeFromReward(address) should be declared external:
- PigKing.excludeFromReward(address) (#881-889)
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