What is ABCD Token?
Crypto ABCD is an educational platform that was founded to offer online courses for crypto education. Our goal is to spread knowledge and understanding of digital coins and the market they exist in, in an effort to help investors make informed decisions with their investments. We have assembled a roster of experts to help investors of all backgrounds and experience levels in crypto.
Who is The Founder of ABCD Token?
ABCD was founded by Mohamad Aftab, who has profound experience in investments & he is a serial entrepreneur. He is the Found/CEO of ABCD Token. ABCD founded in June 2021 in emergency of the growing popularity and adoptions of cryptocurrencies around the world. The founder's purpose is to provide a platform to educate upcoming new crypto enthusiasts.
What Makes ABCD Token Unique?
ABCD Token is a DeFi BEP-20 token under Binance Smart Chain (BSC) developed to help cryptocurrency investors access courses from the educational platform, CRYPTO ABCD.
In order to gain access to these courses, users will have to acquire the ABCD Token. These tokens will be the only utility tokens you can use to interact with our platform.
How Many ABCD Token Are There in Circulation?
There is a maximum supply of 75 billion ABCD — but at the time of writing, there was a circulating supply of about 65 billion. Two rounds of public sales of ABCD tokens were held between June 4th, 2021, and June 7th, 2021.
Out of total supply, 8% is allocated for marketing, advisory & promotions of the project and 5% is allocated for the project development.
What is ABCD's Tokenomics?
ABCD Token use Tokenomics to reward its holders. There is a total of 8% tax on each transaction which is divided into, 3% given back to all holders, 3% added back into liquidity & 2% is allocated for project development.
What is Our Project Goal?
Our mission is to build an online community that can match the growth of cryptocurrency technology. We are thrilled to support cryptocurrency investors and enthusiasts by providing access to skilled experts in the field, and the programs created by them. Our big picture goal is to improve cryptocurrency culture, by providing education and knowledge to every investor in the space.
What is the utility of Token?
Users will also be able to earn ABCD Tokens by interacting with our learning apps & games. We are currently working on this function as part of our program and we will announce its availability once complete.
What platforms will be provided by ABCD Team?
We will provide online courses ranging from the Beginner’s level to the Advanced level on cryptocurrency which anyone can purchase with the use of our ABCD tokens. Users will be able to earn these tokens as well by interacting with our learning apps & playing the fun games that we will be developing in the foreseen future. These tokens will be the only utility tokens to interact with our platform.
Where Can You Buy ABCD Token?
Since ABCD Tokens are BEP20 Tokens, one must buy BNB (the native coin of the Binance Smart Chain) and trade them at the PancakeSwap.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in ABCD._transfer(address,address,uint256) (#1149-1196):
External calls:
- swapAndLiquify(contractTokenBalance) (#1180)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1230-1236)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1180)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
State variables written after the call(s):
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity) (#1077)
- _rOwned[_devWallet] = _rOwned[_devWallet].add(rDev) (#1093)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1277)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1290)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#1303)
- _rOwned[sender] = _rOwned[sender].sub(rAmount) (#971)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1278)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1304)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#1292)
- _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount) (#973)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _rTotal = _rTotal.sub(rFee) (#1016)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _tOwned[_devWallet] = _tOwned[_devWallet].add(tDev) (#1095)
- _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity) (#1079)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#1302)
- _tOwned[sender] = _tOwned[sender].sub(tAmount) (#970)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#1291)
- _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount) (#972)
Apply the check-effects-interactions pattern.
Additional information: link
ABCD._rTotal (#790) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
ABCD._previousTaxFee (#803) is set pre-construction with a non-constant function or state variable:
- _taxFee
ABCD._previousDevFee (#806) is set pre-construction with a non-constant function or state variable:
- _devFee
ABCD._previousLiquidityFee (#809) is set pre-construction with a non-constant function or state variable:
- _liquidityFee
ABCD._maxTxAmount (#818) is set pre-construction with a non-constant function or state variable:
- _tTotal
ABCD.numTokensSellToAddToLiquidity (#819) is set pre-construction with a non-constant function or state variable:
- _tTotal
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
ABCD.addLiquidity(uint256,uint256) (#1239-1252) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
Ensure that all the return values of the function calls are used.
Additional information: link
ABCD.allowance(address,address).owner (#881) shadows:
- Ownable.owner() (#536-538) (function)
ABCD._approve(address,address,uint256).owner (#1141) shadows:
- Ownable.owner() (#536-538) (function)
Rename the local variables that shadow another component.
Additional information: link
ABCD.setTaxFeePercent(uint256) (#989-991) should emit an event for:
- _taxFee = taxFee (#990)
ABCD.setDevFeePercent(uint256) (#993-995) should emit an event for:
- _devFee = devFee (#994)
ABCD.setLiquidityFeePercent(uint256) (#997-999) should emit an event for:
- _liquidityFee = liquidityFee (#998)
ABCD.setMaxTxPercent(uint256) (#1001-1005) should emit an event for:
- _maxTxAmount = _tTotal.mul(maxTxPercent).div(10 ** 2) (#1002-1004)
Emit an event for critical parameter changes.
Additional information: link
ABCD.setDevAddress(address).dev (#940) lacks a zero-check on :
- _devWallet = dev (#941)
Check that the address is not zero.
Additional information: link
Reentrancy in ABCD._transfer(address,address,uint256) (#1149-1196):
External calls:
- swapAndLiquify(contractTokenBalance) (#1180)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1230-1236)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1180)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
State variables written after the call(s):
- addAddress(from) (#1191)
- _AddressExists[adr] = true (#1085)
- addAddress(to) (#1192)
- _AddressExists[adr] = true (#1085)
- addAddress(from) (#1191)
- _addressList.push(adr) (#1086)
- addAddress(to) (#1192)
- _addressList.push(adr) (#1086)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _devFee = _previousDevFee (#1133)
- _devFee = 0 (#1126)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _liquidityFee = _previousLiquidityFee (#1134)
- _liquidityFee = 0 (#1127)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _previousDevFee = _devFee (#1121)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _previousLiquidityFee = _liquidityFee (#1122)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _previousTaxFee = _taxFee (#1120)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _tFeeTotal = _tFeeTotal.add(tFee) (#1017)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- _taxFee = _previousTaxFee (#1131)
- _taxFee = 0 (#1124)
Reentrancy in ABCD.constructor() (#835-853):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#842-843)
State variables written after the call(s):
- _isExcludedFromFee[owner()] = true (#849)
- _isExcludedFromFee[address(this)] = true (#850)
- uniswapV2Router = _uniswapV2Router (#846)
Reentrancy in ABCD.swapAndLiquify(uint256) (#1198-1219):
External calls:
- swapTokensForEth(half) (#1210)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1230-1236)
- addLiquidity(otherHalf,newBalance) (#1216)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1216)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1216)
- _allowances[owner][spender] = amount (#1145)
Reentrancy in ABCD.transferFrom(address,address,uint256) (#890-894):
External calls:
- _transfer(sender,recipient,amount) (#891)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1230-1236)
External calls sending eth:
- _transfer(sender,recipient,amount) (#891)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
State variables written after the call(s):
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#892)
- _allowances[owner][spender] = amount (#1145)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in ABCD._transfer(address,address,uint256) (#1149-1196):
External calls:
- swapAndLiquify(contractTokenBalance) (#1180)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1230-1236)
External calls sending eth:
- swapAndLiquify(contractTokenBalance) (#1180)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
Event emitted after the call(s):
- Transfer(msg.sender,_devWallet,tDev) (#1096)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- Transfer(sender,recipient,tTransferAmount) (#1285)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- Transfer(sender,recipient,tTransferAmount) (#1297)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- Transfer(sender,recipient,tTransferAmount) (#1309)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
- Transfer(sender,recipient,tTransferAmount) (#978)
- _tokenTransfer(from,to,amount,takeFee) (#1195)
Reentrancy in ABCD.constructor() (#835-853):
External calls:
- uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#842-843)
Event emitted after the call(s):
- Transfer(address(0),owner(),_tTotal) (#852)
Reentrancy in ABCD.swapAndLiquify(uint256) (#1198-1219):
External calls:
- swapTokensForEth(half) (#1210)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1230-1236)
- addLiquidity(otherHalf,newBalance) (#1216)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1216)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1146)
- addLiquidity(otherHalf,newBalance) (#1216)
- SwapAndLiquify(half,newBalance,otherHalf) (#1218)
Reentrancy in ABCD.transferFrom(address,address,uint256) (#890-894):
External calls:
- _transfer(sender,recipient,amount) (#891)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1230-1236)
External calls sending eth:
- _transfer(sender,recipient,amount) (#891)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,owner(),block.timestamp) (#1244-1251)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1146)
- _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,ERC20: transfer amount exceeds allowance)) (#892)
Apply the check-effects-interactions pattern.
Additional information: link
Address.isContract(address) (#343-352) uses assembly
- INLINE ASM (#350)
Address._verifyCallResult(bool,bytes,string) (#488-505) uses assembly
- INLINE ASM (#497-500)
Do not use evm assembly.
Additional information: link
ABCD.includeInReward(address) (#955-966) has costly operations inside a loop:
- _excluded.pop() (#962)
Use a local variable to hold the loop computation result.
Additional information: link
Address._verifyCallResult(bool,bytes,string) (#488-505) is never used and should be removed
Address.functionCall(address,bytes) (#396-398) is never used and should be removed
Address.functionCall(address,bytes,string) (#406-408) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#421-423) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#431-438) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#470-472) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#480-486) is never used and should be removed
Address.functionStaticCall(address,bytes) (#446-448) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#456-462) is never used and should be removed
Address.isContract(address) (#343-352) is never used and should be removed
Address.sendValue(address,uint256) (#370-376) is never used and should be removed
Context._msgData() (#316-319) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#271-276) is never used and should be removed
SafeMath.mod(uint256,uint256) (#231-233) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#293-298) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#102-108) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#144-149) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#156-161) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#127-137) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#115-120) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#370-376):
- (success) = recipient.call{value: amount}() (#374)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#431-438):
- (success,returndata) = target.call{value: value}(data) (#436)
Low level call in Address.functionStaticCall(address,bytes,string) (#456-462):
- (success,returndata) = target.staticcall(data) (#460)
Low level call in Address.functionDelegateCall(address,bytes,string) (#480-486):
- (success,returndata) = target.delegatecall(data) (#484)
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() (#602) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#603) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#620) is not in mixedCase
Function IUniswapV2Router01.WETH() (#640) is not in mixedCase
Parameter ABCD.setSwapAndLiquifyEnabled(bool)._enabled (#1007) is not in mixedCase
Parameter ABCD.calculateTaxFee(uint256)._amount (#1099) is not in mixedCase
Parameter ABCD.calculateDevFee(uint256)._amount (#1105) is not in mixedCase
Parameter ABCD.calculateLiquidityFee(uint256)._amount (#1111) is not in mixedCase
Variable ABCD._AddressExists (#778) is not in mixedCase
Variable ABCD._taxFee (#802) is not in mixedCase
Variable ABCD._devFee (#805) is not in mixedCase
Variable ABCD._liquidityFee (#808) is not in mixedCase
Variable ABCD._maxTxAmount (#818) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#317)" inContext (#311-320)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#645) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#646)
Variable ABCD._transferFromExcluded(address,address,uint256).rTransferAmount (#1301) is too similar to ABCD._transferBothExcluded(address,address,uint256).tTransferAmount (#969)
Variable ABCD.reflectionFromToken(uint256,bool).rTransferAmount (#929) is too similar to ABCD._transferStandard(address,address,uint256).tTransferAmount (#1276)
Variable ABCD._getValues(uint256).rTransferAmount (#1033) is too similar to ABCD._transferBothExcluded(address,address,uint256).tTransferAmount (#969)
Variable ABCD._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to ABCD._transferBothExcluded(address,address,uint256).tTransferAmount (#969)
Variable ABCD._transferFromExcluded(address,address,uint256).rTransferAmount (#1301) is too similar to ABCD._transferStandard(address,address,uint256).tTransferAmount (#1276)
Variable ABCD._transferToExcluded(address,address,uint256).rTransferAmount (#1289) is too similar to ABCD._transferBothExcluded(address,address,uint256).tTransferAmount (#969)
Variable ABCD._transferFromExcluded(address,address,uint256).rTransferAmount (#1301) is too similar to ABCD._transferFromExcluded(address,address,uint256).tTransferAmount (#1301)
Variable ABCD._transferStandard(address,address,uint256).rTransferAmount (#1276) is too similar to ABCD._transferStandard(address,address,uint256).tTransferAmount (#1276)
Variable ABCD._getValues(uint256).rTransferAmount (#1033) is too similar to ABCD._transferStandard(address,address,uint256).tTransferAmount (#1276)
Variable ABCD._transferFromExcluded(address,address,uint256).rTransferAmount (#1301) is too similar to ABCD._transferToExcluded(address,address,uint256).tTransferAmount (#1289)
Variable ABCD._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to ABCD._transferStandard(address,address,uint256).tTransferAmount (#1276)
Variable ABCD._getValues(uint256).rTransferAmount (#1033) is too similar to ABCD._transferFromExcluded(address,address,uint256).tTransferAmount (#1301)
Variable ABCD._getValues(uint256).rTransferAmount (#1033) is too similar to ABCD._transferToExcluded(address,address,uint256).tTransferAmount (#1289)
Variable ABCD._transferFromExcluded(address,address,uint256).rTransferAmount (#1301) is too similar to ABCD._getTValues(uint256).tTransferAmount (#1043)
Variable ABCD._getValues(uint256).rTransferAmount (#1033) is too similar to ABCD._getTValues(uint256).tTransferAmount (#1043)
Variable ABCD._transferToExcluded(address,address,uint256).rTransferAmount (#1289) is too similar to ABCD._transferStandard(address,address,uint256).tTransferAmount (#1276)
Variable ABCD._transferToExcluded(address,address,uint256).rTransferAmount (#1289) is too similar to ABCD._transferFromExcluded(address,address,uint256).tTransferAmount (#1301)
Variable ABCD._transferToExcluded(address,address,uint256).rTransferAmount (#1289) is too similar to ABCD._transferToExcluded(address,address,uint256).tTransferAmount (#1289)
Variable ABCD._transferToExcluded(address,address,uint256).rTransferAmount (#1289) is too similar to ABCD._getTValues(uint256).tTransferAmount (#1043)
Variable ABCD.reflectionFromToken(uint256,bool).rTransferAmount (#929) is too similar to ABCD._transferBothExcluded(address,address,uint256).tTransferAmount (#969)
Variable ABCD._transferStandard(address,address,uint256).rTransferAmount (#1276) is too similar to ABCD._getValues(uint256).tTransferAmount (#1030)
Variable ABCD.reflectionFromToken(uint256,bool).rTransferAmount (#929) is too similar to ABCD._transferFromExcluded(address,address,uint256).tTransferAmount (#1301)
Variable ABCD._transferFromExcluded(address,address,uint256).rTransferAmount (#1301) is too similar to ABCD._getValues(uint256).tTransferAmount (#1030)
Variable ABCD._transferToExcluded(address,address,uint256).rTransferAmount (#1289) is too similar to ABCD._getValues(uint256).tTransferAmount (#1030)
Variable ABCD._getValues(uint256).rTransferAmount (#1033) is too similar to ABCD._getValues(uint256).tTransferAmount (#1030)
Variable ABCD._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to ABCD._transferFromExcluded(address,address,uint256).tTransferAmount (#1301)
Variable ABCD._getRValues(ABCD.TData).rTransferAmount (#1053) is too similar to ABCD._getValues(uint256).tTransferAmount (#1030)
Variable ABCD._transferStandard(address,address,uint256).rTransferAmount (#1276) is too similar to ABCD._getTValues(uint256).tTransferAmount (#1043)
Variable ABCD.reflectionFromToken(uint256,bool).rTransferAmount (#929) is too similar to ABCD._transferToExcluded(address,address,uint256).tTransferAmount (#1289)
Variable ABCD._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to ABCD._getTValues(uint256).tTransferAmount (#1043)
Variable ABCD._getRValues(ABCD.TData).rTransferAmount (#1053) is too similar to ABCD._getTValues(uint256).tTransferAmount (#1043)
Variable ABCD._transferStandard(address,address,uint256).rTransferAmount (#1276) is too similar to ABCD._transferFromExcluded(address,address,uint256).tTransferAmount (#1301)
Variable ABCD._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to ABCD._transferToExcluded(address,address,uint256).tTransferAmount (#1289)
Variable ABCD.reflectionFromToken(uint256,bool).rTransferAmount (#929) is too similar to ABCD._getValues(uint256).tTransferAmount (#1030)
Variable ABCD._transferStandard(address,address,uint256).rTransferAmount (#1276) is too similar to ABCD._transferBothExcluded(address,address,uint256).tTransferAmount (#969)
Variable ABCD._getRValues(ABCD.TData).rTransferAmount (#1053) is too similar to ABCD._transferStandard(address,address,uint256).tTransferAmount (#1276)
Variable ABCD._getRValues(ABCD.TData).rTransferAmount (#1053) is too similar to ABCD._transferFromExcluded(address,address,uint256).tTransferAmount (#1301)
Variable ABCD._transferBothExcluded(address,address,uint256).rTransferAmount (#969) is too similar to ABCD._getValues(uint256).tTransferAmount (#1030)
Variable ABCD._transferStandard(address,address,uint256).rTransferAmount (#1276) is too similar to ABCD._transferToExcluded(address,address,uint256).tTransferAmount (#1289)
Variable ABCD._getRValues(ABCD.TData).rTransferAmount (#1053) is too similar to ABCD._transferBothExcluded(address,address,uint256).tTransferAmount (#969)
Variable ABCD.reflectionFromToken(uint256,bool).rTransferAmount (#929) is too similar to ABCD._getTValues(uint256).tTransferAmount (#1043)
Variable ABCD._getRValues(ABCD.TData).rTransferAmount (#1053) is too similar to ABCD._transferToExcluded(address,address,uint256).tTransferAmount (#1289)
Prevent variables from having similar names.
Additional information: link
ABCD.slitherConstructorVariables() (#773-1313) uses literals with too many digits:
- _tTotal = 75000000000 * 10 ** 9 (#789)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
ABCD._decimals (#800) should be constant
ABCD._name (#798) should be constant
ABCD._symbol (#799) should be constant
ABCD._tTotal (#789) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#555-558)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#564-568)
name() should be declared external:
- ABCD.name() (#855-857)
symbol() should be declared external:
- ABCD.symbol() (#859-861)
decimals() should be declared external:
- ABCD.decimals() (#863-865)
totalSupply() should be declared external:
- ABCD.totalSupply() (#867-869)
transfer(address,uint256) should be declared external:
- ABCD.transfer(address,uint256) (#876-879)
allowance(address,address) should be declared external:
- ABCD.allowance(address,address) (#881-883)
approve(address,uint256) should be declared external:
- ABCD.approve(address,uint256) (#885-888)
transferFrom(address,address,uint256) should be declared external:
- ABCD.transferFrom(address,address,uint256) (#890-894)
increaseAllowance(address,uint256) should be declared external:
- ABCD.increaseAllowance(address,uint256) (#896-899)
decreaseAllowance(address,uint256) should be declared external:
- ABCD.decreaseAllowance(address,uint256) (#901-904)
isExcludedFromReward(address) should be declared external:
- ABCD.isExcludedFromReward(address) (#906-908)
totalFees() should be declared external:
- ABCD.totalFees() (#910-912)
deliver(uint256) should be declared external:
- ABCD.deliver(uint256) (#914-921)
reflectionFromToken(uint256,bool) should be declared external:
- ABCD.reflectionFromToken(uint256,bool) (#923-932)
setDevAddress(address) should be declared external:
- ABCD.setDevAddress(address) (#940-942)
excludeFromReward(address) should be declared external:
- ABCD.excludeFromReward(address) (#945-953)
excludeFromFee(address) should be declared external:
- ABCD.excludeFromFee(address) (#981-983)
includeInFee(address) should be declared external:
- ABCD.includeInFee(address) (#985-987)
setSwapAndLiquifyEnabled(bool) should be declared external:
- ABCD.setSwapAndLiquifyEnabled(bool) (#1007-1010)
isExcludedFromFee(address) should be declared external:
- ABCD.isExcludedFromFee(address) (#1137-1139)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Token has a considerable age, but we're still unable to find its website
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Token has a considerable age, but social accounts / website are missing or have few users
Token has a considerable age, but average PancakeSwap 30d trading volume is low
Young tokens have high risks of price dump / death
Telegram account link seems to be invalid
Twitter account link seems to be invalid
Unable to find Youtube account