Coinary Token is the In-game currency for Dragonary - The Game
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
CoinaryToken.constructor(string,string,uint256).cap (#1859) shadows:
- ERC20Capped.cap() (#1798-1800) (function)
CoinaryToken.constructor(string,string,uint256).name (#1857) shadows:
- ERC20.name() (#1104-1106) (function)
CoinaryToken.constructor(string,string,uint256).symbol (#1858) shadows:
- ERC20.symbol() (#1112-1114) (function)
ERC20Permit.constructor(string).name (#1725) shadows:
- ERC20.name() (#1104-1106) (function)
Rename the local variables that shadow another component.
Additional information: link
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#1192-1196)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (#1384-1389)
permit(address,address,uint256,uint256,uint8,bytes32,bytes32) should be declared external:
- ERC20Permit.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (#1731-1753)
mint(address,uint256) should be declared external:
- CoinaryToken.mint(address,uint256) (#1885-1896)
decimals() should be declared external:
- ERC20.decimals() (#1129-1131)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#1229-1232)
symbol() should be declared external:
- ERC20.symbol() (#1112-1114)
dailyMintingAmount() should be declared external:
- CoinaryToken.dailyMintingAmount() (#1915-1917)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (#1143-1145)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#1155-1158)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#1210-1213)
getRoleMemberCount(bytes32) should be declared external:
- AccessControl.getRoleMemberCount(bytes32) (#617-619)
nonces(address) should be declared external:
- ERC20Permit.nonces(address) (#1758-1760)
changeDailyMintingAmount(uint256) should be declared external:
- CoinaryToken.changeDailyMintingAmount(uint256) (#1906-1913)
name() should be declared external:
- ERC20.name() (#1104-1106)
grantRole(bytes32,address) should be declared external:
- AccessControl.grantRole(bytes32,address) (#657-661)
getRoleMember(bytes32,uint256) should be declared external:
- AccessControl.getRoleMember(bytes32,uint256) (#633-635)
revokeRole(bytes32,address) should be declared external:
- AccessControl.revokeRole(bytes32,address) (#672-676)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#1174-1177)
renounceRole(bytes32,address) should be declared external:
- AccessControl.renounceRole(bytes32,address) (#692-696)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (#1369-1371)
getRoleAdmin(bytes32) should be declared external:
- AccessControl.getRoleAdmin(bytes32) (#643-645)
Use the external attribute for functions never called from the contract.
Additional information: link
CoinaryToken.constructor(string,string,uint256) (#1856-1873) uses literals with too many digits:
- _mint(INVESTOR_ADDRESS,160000000000000000000000000) (#1868)
CoinaryToken.constructor(string,string,uint256) (#1856-1873) uses literals with too many digits:
- _mint(TEAM_ADDRESS,50000000000000000000000000) (#1866)
CoinaryToken.constructor(string,string,uint256) (#1856-1873) uses literals with too many digits:
- _mint(AIRDROP_ADDRESS,41000000000000000000000000) (#1870)
CoinaryToken.slitherConstructorConstantVariables() (#1834-1927) uses literals with too many digits:
- MAX_DAILY_MINTING_AMOUNT = 2000000000000000000000000 (#1836)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
ERC20Permit.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (#1731-1753) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp <= deadline,ERC20Permit: expired deadline) (#1733)
CoinaryToken.mint(address,uint256) (#1885-1896) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= nextMintingDate,CoinaryToken: You must wait 24 hours until the next minting) (#1892)
Avoid relying on block.timestamp.
Additional information: link
EIP712._getChainId() (#1682-1688) uses assembly
- INLINE ASM (#1685-1687)
Address._verifyCallResult(bool,bytes,string) (#474-491) uses assembly
- INLINE ASM (#483-486)
ECDSA.recover(bytes32,bytes) (#1475-1496) uses assembly
- INLINE ASM (#1489-1493)
Address.isContract(address) (#329-338) uses assembly
- INLINE ASM (#336)
Do not use evm assembly.
Additional information: link
Different versions of Solidity are used:
- Version used: ['>=0.6.0<0.8.0', '>=0.6.5<0.8.0', '^0.7.0']
- ^0.7.0 (#5)
- ^0.7.0 (#306)
- >=0.6.0<0.8.0 (#499)
- ^0.7.0 (#527)
- ^0.7.0 (#746)
- ^0.7.0 (#827)
- ^0.7.0 (#1045)
- ^0.7.0 (#1353)
- >=0.6.0<0.8.0 (#1397)
- ^0.7.0 (#1452)
- ^0.7.0 (#1542)
- >=0.6.0<0.8.0 (#1584)
- >=0.6.5<0.8.0 (#1696)
- ^0.7.0 (#1776)
- ^0.7.0 (#1827)
Use one Solidity version.
Additional information: link
SafeMath.mul(uint256,uint256) (#940-945) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#884-887) is never used and should be removed
AccessControl._setRoleAdmin(bytes32,bytes32) (#723-726) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (#173-175) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (#187-189) is never used and should be removed
Address.sendValue(address,uint256) (#356-362) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#407-409) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (#268-270) is never used and should be removed
ECDSA.recover(bytes32,bytes) (#1475-1496) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (#166-168) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#894-897) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#466-472) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#456-458) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (#275-277) is never used and should be removed
ECDSA.toEthSignedMessageHash(bytes32) (#1530-1534) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#848-852) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#1034-1037) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#417-424) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#1014-1017) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (#149-151) is never used and should be removed
Counters.decrement(Counters.Counter) (#1574-1576) is never used and should be removed
ERC20._setupDecimals(uint8) (#1327-1329) is never used and should be removed
Context._msgData() (#516-519) is never used and should be removed
Address.functionStaticCall(address,bytes) (#432-434) is never used and should be removed
SafeMath.mod(uint256,uint256) (#976-979) is never used and should be removed
SafeMath.div(uint256,uint256) (#959-962) is never used and should be removed
Address._verifyCallResult(bool,bytes,string) (#474-491) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#869-877) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#859-862) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (#282-284) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (#296-298) is never used and should be removed
Address.isContract(address) (#329-338) is never used and should be removed
Address.functionCall(address,bytes,string) (#392-394) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#442-448) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (#258-260) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (#159-161) is never used and should be removed
Address.functionCall(address,bytes) (#382-384) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.7.0 (#1542) allows old versions
Pragma version>=0.6.5<0.8.0 (#1696) is too complex
Pragma version^0.7.0 (#306) allows old versions
Pragma version^0.7.0 (#1353) allows old versions
Pragma version^0.7.0 (#1452) allows old versions
Pragma version>=0.6.0<0.8.0 (#1584) is too complex
Pragma version^0.7.0 (#1776) allows old versions
Pragma version^0.7.0 (#5) allows old versions
Pragma version^0.7.0 (#827) allows old versions
solc-0.7.2 is not recommended for deployment
Pragma version^0.7.0 (#746) allows old versions
Pragma version^0.7.0 (#527) allows old versions
Pragma version>=0.6.0<0.8.0 (#499) is too complex
Pragma version^0.7.0 (#1045) allows old versions
Pragma version>=0.6.0<0.8.0 (#1397) is too complex
Pragma version^0.7.0 (#1827) 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
Low level call in Address.functionDelegateCall(address,bytes,string) (#466-472):
- (success,returndata) = target.delegatecall(data) (#470)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#417-424):
- (success,returndata) = target.call{value: value}(data) (#422)
Low level call in Address.functionStaticCall(address,bytes,string) (#442-448):
- (success,returndata) = target.staticcall(data) (#446)
Low level call in Address.sendValue(address,uint256) (#356-362):
- (success) = recipient.call{value: amount}() (#360)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Variable CoinaryToken._daily_minting_amount (#1837) is not in mixedCase
Variable EIP712._TYPE_HASH (#1614) is not in mixedCase
Variable ERC20Permit._PERMIT_TYPEHASH (#1718) is not in mixedCase
Function IERC20Permit.DOMAIN_SEPARATOR() (#1444) is not in mixedCase
Variable EIP712._CACHED_CHAIN_ID (#1610) is not in mixedCase
Function ERC20Permit.DOMAIN_SEPARATOR() (#1766-1768) is not in mixedCase
Variable EIP712._HASHED_NAME (#1612) is not in mixedCase
Variable EIP712._CACHED_DOMAIN_SEPARATOR (#1609) is not in mixedCase
Variable EIP712._HASHED_VERSION (#1613) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#1683)" inEIP712 (#1605-1689)
Redundant expression "this (#517)" inContext (#511-520)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Unable to find audit link on the website
Twitter account link seems to be invalid
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account