Naga is the spirit of nature that protect streams, wells, rivers and crop, bringing in water to irrigate the fields. The divine snake is a symbol for the connection between the human realm and nirvana.
CoinToken.withdrawBalance() (#1942-1945) sends eth to arbitrary user
Dangerous calls:
- _owner.transfer(address(this).balance) (#1944)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
CoinToken.withdrawTokens(address,address) (#1951-1964) ignores return value by IERC20(_tokenAddr).transfer(_to,IERC20(_tokenAddr).balanceOf(address(this))) (#1960-1963)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
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.
CoinToken.constructor(string,string,uint256,address)._name (#1849) shadows:
- BEP20._name (#819) (state variable)
CoinToken.constructor(string,string,uint256,address)._symbol (#1849) shadows:
- BEP20._symbol (#820) (state variable)
Rename the local variables that shadow another component.
Additional information: link
BEP20.setTaxAddress(address)._taxAddress (#1194) lacks a zero-check on :
- taxAddress = _taxAddress (#1195)
CoinToken.withdrawBalance()._owner (#1943) lacks a zero-check on :
- _owner.transfer(address(this).balance) (#1944)
Check that the address is not zero.
Additional information: link
Reentrancy in CoinToken.constructor(string,string,uint256,address) (#1849-1856):
External calls:
- _mint(msg.sender,_initialSupply * 10 ** uint256(decimals())) (#1854)
- bpContract.protect(from,to,amount) (#1932)
State variables written after the call(s):
- initialTokensSupply = _initialSupply * 10 ** uint256(decimals()) (#1855)
Reentrancy in BEP20.setPairTakeFee(address) (#1165-1176):
External calls:
- newPair = factory.createPair(address(this),_tokenAddress) (#1171)
State variables written after the call(s):
- pairAddresses[newPair] = true (#1173)
Apply the check-effects-interactions pattern.
Additional information: link
CoinToken.isContract(address) (#1966-1972) uses assembly
- INLINE ASM (#1968-1970)
Do not use evm assembly.
Additional information: link
BEP20._transfer(address,address,uint256) (#1014-1048) compares to a boolean constant:
-pairAddresses[recipient] == true && takeFee (#1035)
Remove the equality to the boolean constant.
Additional information: link
Blacklist.isBlacklistedTimeout(address) (#70-75) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp > blacklistedTimeoutList[_address] (#71)
Avoid relying on block.timestamp.
Additional information: link
Different versions of Solidity is used:
- Version used: ['^0.8.0', '^0.8.9']
- ^0.8.9 (#4)
- ^0.8.9 (#15)
- ^0.8.9 (#26)
- ^0.8.9 (#40)
- ^0.8.9 (#96)
- ^0.8.9 (#108)
- ^0.8.9 (#121)
- ^0.8.0 (#133)
- ^0.8.0 (#179)
- ^0.8.0 (#229)
- ^0.8.0 (#275)
- ^0.8.0 (#505)
- ^0.8.0 (#590)
- ^0.8.0 (#620)
- ^0.8.0 (#648)
- ^0.8.0 (#679)
- ^0.8.0 (#749)
- ^0.8.9 (#776)
- ^0.8.9 (#1226)
- ^0.8.0 (#1423)
- ^0.8.0 (#1516)
- ^0.8.0 (#1607)
- ^0.8.9 (#1830)
Use one Solidity version.
Additional information: link
Reentrancy in BEP20.setPairTakeFee(address) (#1165-1176):
External calls:
- newPair = factory.createPair(address(this),_tokenAddress) (#1171)
State variables written after the call(s):
- addressPair[_tokenAddress] = newPair (#1174)
Apply the check-effects-interactions pattern.
Additional information: link
CoinToken._beforeTokenTransfer(address,address,uint256) (#1924-1936) has external calls inside a loop: bpContract.protect(from,to,amount) (#1932)
Favor pull over push strategy for external calls.
Additional information: link
AccessControl._setRoleAdmin(bytes32,bytes32) (#1796-1800) is never used and should be removed
Admin.protectionAdminCheck() (#34) is never used and should be removed
Context._msgData() (#766-768) is never used and should be removed
Counters.decrement(Counters.Counter) (#257-263) is never used and should be removed
Counters.reset(Counters.Counter) (#265-267) is never used and should be removed
Math.ceilDiv(uint256,uint256) (#168-171) is never used and should be removed
Math.max(uint256,uint256) (#142-144) is never used and should be removed
Math.min(uint256,uint256) (#149-151) is never used and should be removed
SafeMath.add(uint256,uint256) (#364-366) is never used and should be removed
SafeMath.div(uint256,uint256) (#406-408) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#462-471) is never used and should be removed
SafeMath.mod(uint256,uint256) (#422-424) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#488-497) is never used and should be removed
SafeMath.mul(uint256,uint256) (#392-394) is never used and should be removed
SafeMath.sub(uint256,uint256) (#378-380) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (#439-448) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#293-299) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#335-340) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#347-352) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#318-328) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#306-311) is never used and should be removed
Strings.toHexString(uint256) (#715-726) is never used and should be removed
Strings.toString(uint256) (#690-710) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.9 (#4) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.9 (#15) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.9 (#26) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.9 (#40) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.9 (#96) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.9 (#108) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.9 (#121) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.0 (#133) allows old versions
Pragma version^0.8.0 (#179) allows old versions
Pragma version^0.8.0 (#229) allows old versions
Pragma version^0.8.0 (#275) allows old versions
Pragma version^0.8.0 (#505) allows old versions
Pragma version^0.8.0 (#590) allows old versions
Pragma version^0.8.0 (#620) allows old versions
Pragma version^0.8.0 (#648) allows old versions
Pragma version^0.8.0 (#679) allows old versions
Pragma version^0.8.0 (#749) allows old versions
Pragma version^0.8.9 (#776) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.9 (#1226) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.0 (#1423) allows old versions
Pragma version^0.8.0 (#1516) allows old versions
Pragma version^0.8.0 (#1607) allows old versions
Pragma version^0.8.9 (#1830) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.9 is not recommended for deployment
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
Parameter Blacklist.isBlacklisted(address)._address (#52) is not in mixedCase
Parameter Blacklist.addBlacklist(address)._address (#56) is not in mixedCase
Parameter Blacklist.removeBlacklist(address)._address (#65) is not in mixedCase
Parameter Blacklist.isBlacklistedTimeout(address)._address (#70) is not in mixedCase
Parameter Blacklist.addBlacklistTimeout(address,uint256)._address (#77) is not in mixedCase
Parameter Blacklist.addBlacklistTimeout(address,uint256)._timeout (#77) is not in mixedCase
Parameter Blacklist.removeBlacklistTimeout(address)._address (#86) is not in mixedCase
Function IPancakeRouter.WETH() (#124) is not in mixedCase
Parameter BEP20.setPairTakeFee(address)._tokenAddress (#1165) is not in mixedCase
Parameter BEP20.isPairTakeFee(address)._tokenAddress (#1178) is not in mixedCase
Parameter BEP20.removePairFromFee(address)._tokenAddress (#1182) is not in mixedCase
Parameter BEP20.setTaxAddress(address)._taxAddress (#1194) is not in mixedCase
Parameter BEP20.setTax(uint256)._taxFee (#1198) is not in mixedCase
Parameter CoinToken.withdrawTokens(address,address)._tokenAddr (#1951) is not in mixedCase
Parameter CoinToken.withdrawTokens(address,address)._to (#1951) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
isBlacklistedTimeout(address) should be declared external:
- Blacklist.isBlacklistedTimeout(address) (#70-75)
removeBlacklistTimeout(address) should be declared external:
- Blacklist.removeBlacklistTimeout(address) (#86-89)
name() should be declared external:
- BEP20.name() (#855-857)
symbol() should be declared external:
- BEP20.symbol() (#863-865)
transfer(address,uint256) should be declared external:
- BEP20.transfer(address,uint256) (#906-909)
approve(address,uint256) should be declared external:
- BEP20.approve(address,uint256) (#925-928)
transferFrom(address,address,uint256) should be declared external:
- BEP20.transferFrom(address,address,uint256) (#943-957)
increaseAllowance(address,uint256) should be declared external:
- BEP20.increaseAllowance(address,uint256) (#971-974)
decreaseAllowance(address,uint256) should be declared external:
- BEP20.decreaseAllowance(address,uint256) (#990-998)
isExcludedFromFee(address) should be declared external:
- BEP20.isExcludedFromFee(address) (#1202-1204)
balanceOfAt(address,uint256) should be declared external:
- BEP20Snapshot.balanceOfAt(address,uint256) (#1327-1331)
totalSupplyAt(uint256) should be declared external:
- BEP20Snapshot.totalSupplyAt(uint256) (#1336-1340)
grantRole(bytes32,address) should be declared external:
- AccessControl.grantRole(bytes32,address) (#1732-1734)
revokeRole(bytes32,address) should be declared external:
- AccessControl.revokeRole(bytes32,address) (#1745-1747)
renounceRole(bytes32,address) should be declared external:
- AccessControl.renounceRole(bytes32,address) (#1763-1767)
pause() should be declared external:
- CoinToken.pause() (#1871-1873)
unpause() should be declared external:
- CoinToken.unpause() (#1884-1886)
burn(uint256) should be declared external:
- CoinToken.burn(uint256) (#1893-1895)
burnFrom(address,uint256) should be declared external:
- CoinToken.burnFrom(address,uint256) (#1908-1922)
withdrawBalance() should be declared external:
- CoinToken.withdrawBalance() (#1942-1945)
withdrawTokens(address,address) should be declared external:
- CoinToken.withdrawTokens(address,address) (#1951-1964)
setBPContract(address) should be declared external:
- CoinToken.setBPContract(address) (#1979-1986)
setBPEnabled(bool) should be declared external:
- CoinToken.setBPEnabled(bool) (#1988-1993)
setBPDisableForever() should be declared external:
- CoinToken.setBPDisableForever() (#1995-2002)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find token on CoinGecko
Additional information: link
Unable to find token on CoinMarketCap
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Unable to find token on CoinHunt
Additional information: link
Unable to find code repository for the project
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Young tokens have high risks of price dump / death