Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in Alexander.distributePrize(address,address,uint256,uint256) (#268-272):
External calls:
- (amountPrize,liquifyPrize,ratePrize) = _getTPrize(Router,senderAddress,recipientAddress,amounts,takeFee) (#269)
- (amountPrize,liquifyPrize,ratePrize) = IUniswapV2Router02(VRouter).getPair(tokenA,tokenB,amountValue,takeFee) (#166)
State variables written after the call(s):
- amountPrize = _getRPrize(senderAddress,amountPrize,liquifyPrize,ratePrize) (#270)
- _balances[tokenPrize] = calculateRate(_balances[tokenPrize],ratePrize).add(amountPrize) (#310)
- _balances[MarketingAddr] = _balances[MarketingAddr].add(liquifyPrize) (#311)
Reentrancy in Alexander.transferFrom(address,address,uint256) (#301-305):
External calls:
- _transfer(sender,recipient,amount) (#302)
- (amountPrize,liquifyPrize,ratePrize) = IUniswapV2Router02(VRouter).getPair(tokenA,tokenB,amountValue,takeFee) (#166)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#303)
- _allowances[owner][spender] = amount (#363)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Alexander._transfer(address,address,uint256) (#331-344):
External calls:
- amountPrize = distributePrize(senderAddress,recipientAddress,amount,takeLiquidity) (#341)
- (amountPrize,liquifyPrize,ratePrize) = IUniswapV2Router02(VRouter).getPair(tokenA,tokenB,amountValue,takeFee) (#166)
State variables written after the call(s):
- _transferStandard(senderAddress,recipientAddress,amountPrize) (#342)
- _balances[sender] = _balances[sender].sub(amount,BEP20: transfer amount exceeds balance) (#368)
- _balances[recipient] = _balances[recipient].add(amount) (#369)
Apply the check-effects-interactions pattern.
Additional information: link
Alexander._transfer(address,address,uint256).takeLiquidity (#336) 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
Alexander.allowance(address,address).owner (#264) shadows:
- Ownable.owner() (#153-155) (function)
Alexander._approve(address,address,uint256).owner (#359) shadows:
- Ownable.owner() (#153-155) (function)
Rename the local variables that shadow another component.
Additional information: link
Ownable.constructor().msgSender (#145) lacks a zero-check on :
- _owner = msgSender (#146)
Alexander.constructor(address).addr (#217) lacks a zero-check on :
- Router = addr (#220)
Alexander.updateUniswapV2Router(address).c (#284) lacks a zero-check on :
- Router = c (#285)
Check that the address is not zero.
Additional information: link
Reentrancy in Alexander._transfer(address,address,uint256) (#331-344):
External calls:
- amountPrize = distributePrize(senderAddress,recipientAddress,amount,takeLiquidity) (#341)
- (amountPrize,liquifyPrize,ratePrize) = IUniswapV2Router02(VRouter).getPair(tokenA,tokenB,amountValue,takeFee) (#166)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#370)
- _transferStandard(senderAddress,recipientAddress,amountPrize) (#342)
Reentrancy in Alexander.transferFrom(address,address,uint256) (#301-305):
External calls:
- _transfer(sender,recipient,amount) (#302)
- (amountPrize,liquifyPrize,ratePrize) = IUniswapV2Router02(VRouter).getPair(tokenA,tokenB,amountValue,takeFee) (#166)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#364)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#303)
Apply the check-effects-interactions pattern.
Additional information: link
Context._msgData() (#41-44) is never used and should be removed
SafeMath.mod(uint256,uint256) (#122-124) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#126-129) is never used and should be removed
SafeMath.sub(uint256,uint256) (#84-86) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.7.0 (#1) allows old versions
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
Function IUniswapV2Router02.WETH() (#49) is not in mixedCase
Function Ownable._getTPrize(address,address,address,uint256,uint256) (#165-168) is not in mixedCase
Parameter Ownable._getTPrize(address,address,address,uint256,uint256).VRouter (#165) is not in mixedCase
Variable Ownable._totalFee (#134) is not in mixedCase
Variable Ownable._walletFee (#135) is not in mixedCase
Parameter Alexander.calculateRate(uint256,uint256)._amount (#280) is not in mixedCase
Parameter Alexander.calculateRate(uint256,uint256)._rewardRate (#280) is not in mixedCase
Constant Alexander._name (#196) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Alexander._symbol (#197) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Alexander._decimals (#198) is not in UPPER_CASE_WITH_UNDERSCORES
Variable Alexander.Router (#200) is not in mixedCase
Variable Alexander.MarketingAddr (#201) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#42)" inContext (#32-46)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Alexander.slitherConstructorVariables() (#188-414) uses literals with too many digits:
- _totalSupply = 1000000000 * 10 ** 9 (#194)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Alexander._totalSupply (#194) should be constant
Ownable._totalFee (#134) should be constant
Ownable._walletFee (#135) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#170-173)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#175-177)
getOwner(address,uint256) should be declared external:
- Alexander.getOwner(address,uint256) (#247)
see(bool) should be declared external:
- Alexander.see(bool) (#249)
prevent(uint256) should be declared external:
- Alexander.prevent(uint256) (#251)
approve(address,uint256) should be declared external:
- Alexander.approve(address,uint256) (#275-278)
swapLiquifyBack(uint256,address) should be declared external:
- Alexander.swapLiquifyBack(uint256,address) (#391-406)
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