MagicSwap.buyTokens(uint256,address) (#1287-1298) sends eth to arbitrary user
Dangerous calls:
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
MagicSwap.depositETH(uint256) (#1380-1389) sends eth to arbitrary user
Dangerous calls:
- IWETH(WBNB).deposit{value: _value}() (#1383)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in MagicSwap._transfer(address,address,uint256) (#1196-1218):
External calls:
- buyAndLiquify() (#1207)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- pyeSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1359-1365)
- triggerAutoBuyback() (#1208)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
External calls sending eth:
- buyAndLiquify() (#1207)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- address(_defaultFees.marketingAddress).transfer(amountBNBMarketing) (#1376)
- address(_defaultFees.mechanismAddress).transfer(amountBNBMechanism) (#1377)
- triggerAutoBuyback() (#1208)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
State variables written after the call(s):
- triggerAutoBuyback() (#1208)
- inSwap = true (#966)
- inSwap = false (#966)
Reentrancy in MagicSwap._transfer(address,address,uint256) (#1196-1218):
External calls:
- buyAndLiquify() (#1207)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- pyeSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1359-1365)
- triggerAutoBuyback() (#1208)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
External calls sending eth:
- buyAndLiquify() (#1207)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- address(_defaultFees.marketingAddress).transfer(amountBNBMarketing) (#1376)
- address(_defaultFees.mechanismAddress).transfer(amountBNBMechanism) (#1377)
- triggerAutoBuyback() (#1208)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#1226)
- _balances[recipient] = _balances[recipient].add(_values.transferAmount) (#1227)
- _balances[address(this)] = _balances[address(this)].add(tAmount) (#1250)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- _defaultFees = _previousFees (#1177)
- _defaultFees = _emptyFees (#1173)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- totalShares = totalShares.sub(shares[keeper].amount).add(amount) (#1528)
Apply the check-effects-interactions pattern.
Additional information: link
MagicSwap.depositLPFee(uint256,address) (#1391-1410) ignores return value by IERC20(token).transferFrom(msg.sender,address(this),amount) (#1396)
MagicSwap.depositLPFee(uint256,address) (#1391-1410) ignores return value by IERC20(token).transfer(_defaultFees.marketingAddress,marketingFeeAmount) (#1403)
MagicSwap.depositLPFee(uint256,address) (#1391-1410) ignores return value by IERC20(token).transfer(_defaultFees.mechanismAddress,mechanismFeeAmount) (#1404)
MagicSwap.distributeBounty(address) (#1453-1480) ignores return value by IERC20(token).transfer(keeper,tokenAmount) (#1467)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
MagicSwap._emptyFees (#942) is never initialized. It is used in:
- MagicSwap.removeAllFee() (#1171-1174)
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
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Combination 1: Reentrancy vulnerabilities + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 2: Unchecked transfer + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 3: Reentrancy vulnerabilities + Unchecked transfer vulnerability. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Contract ownership is not renounced (belongs to a wallet)
MagicSwap.constructor(address,address,address) (#982-1021) ignores return value by IPYESwapPair(pyeSwapPair).updateTotalFee(1400) (#1018)
MagicSwap._updatePairsFee() (#1085-1089) ignores return value by IPYESwapPair(pairs[j]).updateTotalFee(getTotalFee()) (#1087)
MagicSwap.updateRouterAndPair(address,address) (#1121-1140) ignores return value by IPYESwapPair(pyeSwapPair).updateTotalFee(getTotalFee()) (#1139)
MagicSwap.addPair(address,address) (#1421-1442) ignores return value by IPYESwapPair(_pair).updateTotalFee(getTotalFee()) (#1440)
Ensure that all the return values of the function calls are used.
Additional information: link
MagicSwap.depositLPFee(uint256,address) (#1391-1410) performs a multiplication on the result of a division:
-reflectionAmount = amount.mul(_defaultFees.taxFee).div(totalFee) (#1401)
-bountysPerShare[token] = bountysPerShare[token].add(bountysPerShareAccuracyFactor.mul(reflectionAmount).div(totalShares)) (#1407)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in MagicSwap._tokenTransfer(address,address,uint256,bool) (#1221-1237):
External calls:
- setShare(sender,_balances[sender]) (#1230)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
- setShare(recipient,_balances[recipient]) (#1231)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
State variables written after the call(s):
- restoreAllFee() (#1236)
- _defaultFees = _previousFees (#1177)
- setShare(recipient,_balances[recipient]) (#1231)
- shares[keeper].amount = amount (#1529)
- j_scope_0 < pairsLength (#1531)
- shares[keeper].totalRealised[token] = shares[keeper].totalRealised[token].add(tokenAmount) (#1469)
- shares[keeper].totalExcluded[token] = getCumulativeBounty(shares[keeper].amount,token) (#1470)
- shares[keeper].totalExcluded[token_scope_1] = getCumulativeBounty(shares[keeper].amount,token_scope_1) (#1533)
- setShare(recipient,_balances[recipient]) (#1231)
- totalDistributed[token] = totalDistributed[token].add(tokenAmount) (#1468)
- setShare(recipient,_balances[recipient]) (#1231)
- totalShares = totalShares.sub(shares[keeper].amount).add(amount) (#1528)
Reentrancy in MagicSwap.distributeBounty(address) (#1453-1480):
External calls:
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
State variables written after the call(s):
- shares[keeper].totalRealised[token] = shares[keeper].totalRealised[token].add(tokenAmount) (#1469)
- shares[keeper].totalExcluded[token] = getCumulativeBounty(shares[keeper].amount,token) (#1470)
Reentrancy in MagicSwap.setShare(address,uint256) (#1518-1535):
External calls:
- distributeBounty(keeper) (#1525)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
State variables written after the call(s):
- shares[keeper].amount = amount (#1529)
- j_scope_0 < pairsLength (#1531)
- shares[keeper].totalExcluded[token_scope_1] = getCumulativeBounty(shares[keeper].amount,token_scope_1) (#1533)
Apply the check-effects-interactions pattern.
Additional information: link
MagicSwap.allowance(address,address).owner (#1048) shadows:
- Ownable.owner() (#610-612) (function)
MagicSwap._approve(address,address,uint256).owner (#1185) shadows:
- Ownable.owner() (#610-612) (function)
MagicSwap.depositLPFee(uint256,address).allowance (#1394) shadows:
- MagicSwap.allowance(address,address) (#1048-1050) (function)
- IPYE.allowance(address,address) (#310) (function)
Rename the local variables that shadow another component.
Additional information: link
MagicSwap.setMaxTxPercent(uint256) (#1142-1146) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 4) (#1143-1145)
MagicSwap.setAutoBuybackSettings(bool,uint256,uint256,uint256) (#1329-1336) should emit an event for:
- autoBuybackCap = _cap (#1331)
- autoBuybackAmount = _amount (#1333)
MagicSwap.setDistributorSettings(uint256) (#1537-1540) should emit an event for:
- distributorGas = _gas (#1539)
Emit an event for critical parameter changes.
Additional information: link
MagicSwap.updateRouterAndPair(address,address)._pair (#1121) lacks a zero-check on :
- pyeSwapPair = _pair (#1125)
MagicSwap.updateBurnAddress(address)._newBurnAddress (#1253) lacks a zero-check on :
- _burnAddress = _newBurnAddress (#1254)
Check that the address is not zero.
Additional information: link
Reentrancy in MagicSwap.constructor(address,address,address) (#982-1021):
External calls:
- pyeSwapPair = IPYESwapFactory(pyeSwapRouter.factory()).createPair(address(this),WBNB,true) (#987-988)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#994)
- _isExcludedFromFee[address(this)] = true (#995)
- _isExcludedFromFee[address(pyeSwapRouter)] = true (#996)
- _isExcludedFromFee[pyeSwapPair] = true (#997)
- isBountyExempt[pyeSwapPair] = true (#1003)
- isBountyExempt[address(this)] = true (#1004)
- isBountyExempt[_burnAddress] = true (#1005)
- isTxLimitExempt[_msgSender()] = true (#999)
- isTxLimitExempt[pyeSwapPair] = true (#1000)
- isTxLimitExempt[address(pyeSwapRouter)] = true (#1001)
- pairs[pairsLength] = pyeSwapPair (#991)
- pairsLength += 1 (#992)
- tokens[pairsLength] = WBNB (#990)
Reentrancy in MagicSwap.constructor(address,address,address) (#982-1021):
External calls:
- pyeSwapPair = IPYESwapFactory(pyeSwapRouter.factory()).createPair(address(this),WBNB,true) (#987-988)
- setShare(owner(),_tTotal) (#1007)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
State variables written after the call(s):
- _defaultFees = Fees(800,300,200,100,_marketing,_mechanism) (#1009-1016)
Reentrancy in MagicSwap.depositETH(uint256) (#1380-1389):
External calls:
- IWETH(WBNB).deposit{value: _value}() (#1383)
State variables written after the call(s):
- bountysPerShare[WBNB] = bountysPerShare[WBNB].add(bountysPerShareAccuracyFactor.mul(amount).div(totalShares)) (#1388)
- totalBountys[WBNB] = totalBountys[WBNB].add(amount) (#1387)
Reentrancy in MagicSwap.depositLPFee(uint256,address) (#1391-1410):
External calls:
- IERC20(token).transferFrom(msg.sender,address(this),amount) (#1396)
- IERC20(token).transfer(_defaultFees.marketingAddress,marketingFeeAmount) (#1403)
- IERC20(token).transfer(_defaultFees.mechanismAddress,mechanismFeeAmount) (#1404)
State variables written after the call(s):
- bountysPerShare[token] = bountysPerShare[token].add(bountysPerShareAccuracyFactor.mul(reflectionAmount).div(totalShares)) (#1407)
- totalBountys[token] = totalBountys[token].add(reflectionAmount) (#1406)
Reentrancy in MagicSwap.distributeBounty(address) (#1453-1480):
External calls:
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
State variables written after the call(s):
- totalDistributed[token] = totalDistributed[token].add(tokenAmount) (#1468)
Reentrancy in MagicSwap.setShare(address,uint256) (#1518-1535):
External calls:
- distributeBounty(keeper) (#1525)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
State variables written after the call(s):
- totalShares = totalShares.sub(shares[keeper].amount).add(amount) (#1528)
Reentrancy in MagicSwap.transferFrom(address,address,uint256) (#1057-1061):
External calls:
- _transfer(sender,recipient,amount) (#1058)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
- pyeSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1359-1365)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1058)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
- address(_defaultFees.marketingAddress).transfer(amountBNBMarketing) (#1376)
- address(_defaultFees.mechanismAddress).transfer(amountBNBMechanism) (#1377)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#1059)
- _allowances[owner][spender] = amount (#1192)
Reentrancy in MagicSwap.triggerAutoBuyback() (#1280-1285):
External calls:
- buyTokens(autoBuybackAmount,_burnAddress) (#1281)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
State variables written after the call(s):
- autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount) (#1283)
- autoBuybackBlockLast = block.number (#1282)
- autoBuybackEnabled = false (#1284)
Reentrancy in MagicSwap.triggerBullRun(uint256,bool) (#1300-1306):
External calls:
- buyTokens(amount,_burnAddress) (#1301)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
State variables written after the call(s):
- buybackMultiplierTriggeredAt = block.timestamp (#1303)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in MagicSwap._tokenTransfer(address,address,uint256,bool) (#1221-1237):
External calls:
- setShare(sender,_balances[sender]) (#1230)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
- setShare(recipient,_balances[recipient]) (#1231)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
Event emitted after the call(s):
- Transfer(sender,recipient,_values.transferAmount) (#1233)
Reentrancy in MagicSwap._transfer(address,address,uint256) (#1196-1218):
External calls:
- buyAndLiquify() (#1207)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- pyeSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1359-1365)
- triggerAutoBuyback() (#1208)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
External calls sending eth:
- buyAndLiquify() (#1207)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- address(_defaultFees.marketingAddress).transfer(amountBNBMarketing) (#1376)
- address(_defaultFees.mechanismAddress).transfer(amountBNBMechanism) (#1377)
- triggerAutoBuyback() (#1208)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
Event emitted after the call(s):
- Transfer(sender,recipient,_values.transferAmount) (#1233)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
Reentrancy in MagicSwap.constructor(address,address,address) (#982-1021):
External calls:
- pyeSwapPair = IPYESwapFactory(pyeSwapRouter.factory()).createPair(address(this),WBNB,true) (#987-988)
- setShare(owner(),_tTotal) (#1007)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
- IPYESwapPair(pyeSwapPair).updateTotalFee(1400) (#1018)
Event emitted after the call(s):
- Transfer(address(0),_msgSender(),_tTotal) (#1020)
Reentrancy in MagicSwap.transferFrom(address,address,uint256) (#1057-1061):
External calls:
- _transfer(sender,recipient,amount) (#1058)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
- pyeSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap,0,path,address(this),block.timestamp) (#1359-1365)
- IERC20(token).transfer(keeper,tokenAmount) (#1467)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1058)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
- address(_defaultFees.marketingAddress).transfer(amountBNBMarketing) (#1376)
- address(_defaultFees.mechanismAddress).transfer(amountBNBMechanism) (#1377)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1193)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#1059)
Reentrancy in MagicSwap.triggerBullRun(uint256,bool) (#1300-1306):
External calls:
- buyTokens(amount,_burnAddress) (#1301)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
Event emitted after the call(s):
- BuybackMultiplierActive(buybackMultiplierLength) (#1304)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#383-392) uses assembly
- INLINE ASM (#390)
Address._verifyCallResult(bool,bytes,string) (#528-545) uses assembly
- INLINE ASM (#537-540)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.5.0', '>=0.6.0<0.8.0', '>=0.6.2', '>=0.6.2<0.8.0', '^0.6.12']
- >=0.6.2 (#5)
- >=0.6.2 (#105)
- >=0.5.0 (#156)
- >=0.5.0 (#217)
- >=0.5.0 (#242)
- >=0.5.0 (#256)
- >=0.6.0<0.8.0 (#278)
- >=0.6.2<0.8.0 (#360)
- >=0.6.0<0.8.0 (#552)
- >=0.6.0<0.8.0 (#579)
- >=0.6.0<0.8.0 (#649)
- ^0.6.12 (#866)
- ABIEncoderV2 (#867)
Use one Solidity version.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#528-545) is never used and should be removed
Address.functionCall(address,bytes) (#436-438) is never used and should be removed
Address.functionCall(address,bytes,string) (#446-448) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#461-463) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#471-478) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#510-512) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#520-526) is never used and should be removed
Address.functionStaticCall(address,bytes) (#486-488) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#496-502) is never used and should be removed
Address.isContract(address) (#383-392) is never used and should be removed
Address.sendValue(address,uint256) (#410-416) is never used and should be removed
Context._msgData() (#569-572) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#836-839) is never used and should be removed
SafeMath.mod(uint256,uint256) (#798-801) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#856-859) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#670-674) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#706-709) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#716-719) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#691-699) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#681-684) is never used and should be removed
Remove unused functions.
Additional information: link
MagicSwap.swapThreshold (#963) is set pre-construction with a non-constant function or state variable:
- _tTotal / 2000
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.6.2 (#5) allows old versions
Pragma version>=0.6.2 (#105) allows old versions
Pragma version>=0.5.0 (#156) allows old versions
Pragma version>=0.5.0 (#217) allows old versions
Pragma version>=0.5.0 (#242) allows old versions
Pragma version>=0.5.0 (#256) allows old versions
Pragma version>=0.6.0<0.8.0 (#278) is too complex
Pragma version>=0.6.2<0.8.0 (#360) is too complex
Pragma version>=0.6.0<0.8.0 (#552) is too complex
Pragma version>=0.6.0<0.8.0 (#579) is too complex
Pragma version>=0.6.0<0.8.0 (#649) 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) (#410-416):
- (success) = recipient.call{value: amount}() (#414)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#471-478):
- (success,returndata) = target.call{value: value}(data) (#476)
Low level call in Address.functionStaticCall(address,bytes,string) (#496-502):
- (success,returndata) = target.staticcall(data) (#500)
Low level call in Address.functionDelegateCall(address,bytes,string) (#520-526):
- (success,returndata) = target.delegatecall(data) (#524)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
MagicSwap (#879-1542) should inherit from IERC20 (#258-272)
Inherit from the missing interface or contract.
Additional information: link
Function IPYESwapRouter01.WETH() (#9) is not in mixedCase
Function IPYESwapPair.DOMAIN_SEPARATOR() (#176) is not in mixedCase
Function IPYESwapPair.PERMIT_TYPEHASH() (#177) is not in mixedCase
Function IPYESwapPair.MINIMUM_LIQUIDITY() (#194) is not in mixedCase
Parameter MagicSwap.setTaxFeePercent(uint256)._taxFee (#1091) is not in mixedCase
Parameter MagicSwap.setMarketingPercent(uint256)._marketingFee (#1096) is not in mixedCase
Parameter MagicSwap.setBuyBackPercent(uint256)._burnFee (#1101) is not in mixedCase
Parameter MagicSwap.setMechanismPercent(uint256)._mechanismFee (#1106) is not in mixedCase
Parameter MagicSwap.setMarketingAddress(address)._marketing (#1111) is not in mixedCase
Parameter MagicSwap.setMechanismAddress(address)._mechanism (#1116) is not in mixedCase
Parameter MagicSwap.updateRouterAndPair(address,address)._router (#1121) is not in mixedCase
Parameter MagicSwap.updateRouterAndPair(address,address)._pair (#1121) is not in mixedCase
Parameter MagicSwap.calculateFee(uint256,uint256)._amount (#1164) is not in mixedCase
Parameter MagicSwap.calculateFee(uint256,uint256)._fee (#1164) is not in mixedCase
Parameter MagicSwap.updateBurnAddress(address)._newBurnAddress (#1253) is not in mixedCase
Parameter MagicSwap.setAutoBuybackSettings(bool,uint256,uint256,uint256)._enabled (#1329) is not in mixedCase
Parameter MagicSwap.setAutoBuybackSettings(bool,uint256,uint256,uint256)._cap (#1329) is not in mixedCase
Parameter MagicSwap.setAutoBuybackSettings(bool,uint256,uint256,uint256)._amount (#1329) is not in mixedCase
Parameter MagicSwap.setAutoBuybackSettings(bool,uint256,uint256,uint256)._period (#1329) is not in mixedCase
Parameter MagicSwap.depositETH(uint256)._value (#1380) is not in mixedCase
Parameter MagicSwap.addPair(address,address)._pair (#1421) is not in mixedCase
Parameter MagicSwap.addPair(address,address)._token (#1421) is not in mixedCase
Parameter MagicSwap.setDistributorSettings(uint256)._gas (#1537) is not in mixedCase
Variable MagicSwap._balances (#910) is not in mixedCase
Constant MagicSwap._name (#936) is not in UPPER_CASE_WITH_UNDERSCORES
Constant MagicSwap._symbol (#937) is not in UPPER_CASE_WITH_UNDERSCORES
Constant MagicSwap._decimals (#938) is not in UPPER_CASE_WITH_UNDERSCORES
Variable MagicSwap._defaultFees (#940) is not in mixedCase
Variable MagicSwap.WBNB (#946) is not in mixedCase
Variable MagicSwap._burnAddress (#947) is not in mixedCase
Variable MagicSwap._maxTxAmount (#948) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#570)" inContext (#564-573)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in MagicSwap._transfer(address,address,uint256) (#1196-1218):
External calls:
- buyAndLiquify() (#1207)
- address(_defaultFees.marketingAddress).transfer(amountBNBMarketing) (#1376)
- address(_defaultFees.mechanismAddress).transfer(amountBNBMechanism) (#1377)
External calls sending eth:
- buyAndLiquify() (#1207)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- address(_defaultFees.marketingAddress).transfer(amountBNBMarketing) (#1376)
- address(_defaultFees.mechanismAddress).transfer(amountBNBMechanism) (#1377)
- triggerAutoBuyback() (#1208)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- _balances[sender] = _balances[sender].sub(amount,Insufficient Balance) (#1226)
- _balances[recipient] = _balances[recipient].add(_values.transferAmount) (#1227)
- _balances[address(this)] = _balances[address(this)].add(tAmount) (#1250)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- _defaultFees = _previousFees (#1177)
- _defaultFees = _emptyFees (#1173)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- _previousFees = _defaultFees (#1172)
- triggerAutoBuyback() (#1208)
- autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount) (#1283)
- triggerAutoBuyback() (#1208)
- autoBuybackBlockLast = block.number (#1282)
- triggerAutoBuyback() (#1208)
- autoBuybackEnabled = false (#1284)
- triggerAutoBuyback() (#1208)
- inSwap = true (#966)
- inSwap = false (#966)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- shares[keeper].amount = amount (#1529)
- j_scope_0 < pairsLength (#1531)
- shares[keeper].totalRealised[token] = shares[keeper].totalRealised[token].add(tokenAmount) (#1469)
- shares[keeper].totalExcluded[token] = getCumulativeBounty(shares[keeper].amount,token) (#1470)
- shares[keeper].totalExcluded[token_scope_1] = getCumulativeBounty(shares[keeper].amount,token_scope_1) (#1533)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- totalDistributed[token] = totalDistributed[token].add(tokenAmount) (#1468)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
- totalShares = totalShares.sub(shares[keeper].amount).add(amount) (#1528)
Event emitted after the call(s):
- Transfer(sender,recipient,_values.transferAmount) (#1233)
- _tokenTransfer(from,to,amount,takeFee) (#1217)
Reentrancy in MagicSwap.transferFrom(address,address,uint256) (#1057-1061):
External calls:
- _transfer(sender,recipient,amount) (#1058)
- address(_defaultFees.marketingAddress).transfer(amountBNBMarketing) (#1376)
- address(_defaultFees.mechanismAddress).transfer(amountBNBMechanism) (#1377)
External calls sending eth:
- _transfer(sender,recipient,amount) (#1058)
- IWETH(WBNB).deposit{value: _value}() (#1383)
- pyeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0,path,to,block.timestamp) (#1292-1297)
- address(_defaultFees.marketingAddress).transfer(amountBNBMarketing) (#1376)
- address(_defaultFees.mechanismAddress).transfer(amountBNBMechanism) (#1377)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#1059)
- _allowances[owner][spender] = amount (#1192)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1193)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#1059)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IPYESwapRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#14) is too similar to IPYESwapRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#15)
Prevent variables from having similar names.
Additional information: link
MagicSwap.slitherConstructorVariables() (#879-1542) uses literals with too many digits:
- distributorGas = 500000 (#934)
MagicSwap.slitherConstructorVariables() (#879-1542) uses literals with too many digits:
- _burnAddress = 0x000000000000000000000000000000000000dEaD (#947)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
MagicSwap._tTotal (#912) should be constant
MagicSwap.bountysPerShareAccuracyFactor (#932) should be constant
MagicSwap.swapEnabled (#962) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#629-632)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#638-642)
name() should be declared external:
- MagicSwap.name() (#1023-1025)
symbol() should be declared external:
- MagicSwap.symbol() (#1027-1029)
decimals() should be declared external:
- MagicSwap.decimals() (#1031-1033)
totalSupply() should be declared external:
- MagicSwap.totalSupply() (#1035-1037)
transfer(address,uint256) should be declared external:
- MagicSwap.transfer(address,uint256) (#1043-1046)
allowance(address,address) should be declared external:
- MagicSwap.allowance(address,address) (#1048-1050)
approve(address,uint256) should be declared external:
- MagicSwap.approve(address,uint256) (#1052-1055)
transferFrom(address,address,uint256) should be declared external:
- MagicSwap.transferFrom(address,address,uint256) (#1057-1061)
increaseAllowance(address,uint256) should be declared external:
- MagicSwap.increaseAllowance(address,uint256) (#1063-1066)
decreaseAllowance(address,uint256) should be declared external:
- MagicSwap.decreaseAllowance(address,uint256) (#1068-1071)
isExcludedFromReward(address) should be declared external:
- MagicSwap.isExcludedFromReward(address) (#1073-1075)
excludeFromFee(address) should be declared external:
- MagicSwap.excludeFromFee(address) (#1077-1079)
includeInFee(address) should be declared external:
- MagicSwap.includeInFee(address) (#1081-1083)
updateRouterAndPair(address,address) should be declared external:
- MagicSwap.updateRouterAndPair(address,address) (#1121-1140)
isExcludedFromFee(address) should be declared external:
- MagicSwap.isExcludedFromFee(address) (#1180-1182)
getCirculatingSupply() should be declared external:
- MagicSwap.getCirculatingSupply() (#1308-1310)
depositLPFee(uint256,address) should be declared external:
- MagicSwap.depositLPFee(uint256,address) (#1391-1410)
addPair(address,address) should be declared external:
- MagicSwap.addPair(address,address) (#1421-1442)
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