Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Reentrancy in Axes721.saleMint(address,uint256) (#2230-2256):
External calls:
- (succ) = address(ssn[_season].withdraw).call{value: ssn[_season].seasonPrice}() (#2244)
- ERC20Interface(ssn[_season].tokenContract).transferFrom(msg.sender,address(this),ssn[_season].seasonPrice) (#2249)
- ERC20Interface(ssn[_season].tokenContract).transfer(ssn[_season].withdraw,ssn[season].seasonPrice) (#2250)
External calls sending eth:
- (succ) = address(ssn[_season].withdraw).call{value: ssn[_season].seasonPrice}() (#2244)
State variables written after the call(s):
- ssn[_season].seasonAmount -= 1 (#2254)
- tokensBought[_season][msg.sender] += 1 (#2255)
Apply the check-effects-interactions pattern.
Additional information: link
ERC20Interface (#2095-2098) has incorrect ERC20 function interface:ERC20Interface.transfer(address,uint256) (#2096)
ERC20Interface (#2095-2098) has incorrect ERC20 function interface:ERC20Interface.transferFrom(address,address,uint256) (#2097)
Set the appropriate return values and types for the defined ERC20 functions.
Additional information: link
Axes721.addToWhitelist(address[],uint256).j (#2326) 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
ERC721._mint(address,uint256,string,uint256) (#1791-1807) ignores return value by _holderTokens[to].add(tokenId) (#1797)
ERC721._mint(address,uint256,string,uint256) (#1791-1807) ignores return value by _tokenOwners.set(tokenId,to) (#1799)
ERC721._burn(uint256) (#1819-1838) ignores return value by _holderTokens[owner].remove(tokenId) (#1832)
ERC721._burn(uint256) (#1819-1838) ignores return value by _tokenOwners.remove(tokenId) (#1834)
ERC721._transfer(address,address,uint256) (#1851-1866) ignores return value by _holderTokens[from].remove(tokenId) (#1860)
ERC721._transfer(address,address,uint256) (#1851-1866) ignores return value by _holderTokens[to].add(tokenId) (#1861)
ERC721._transfer(address,address,uint256) (#1851-1866) ignores return value by _tokenOwners.set(tokenId,to) (#1863)
Ensure that all the return values of the function calls are used.
Additional information: link
Axes721.constructor(string,string,string).name (#2170) shadows:
- ERC721.name() (#1560-1562) (function)
- IERC721Metadata.name() (#468) (function)
Axes721.constructor(string,string,string).symbol (#2170) shadows:
- ERC721.symbol() (#1567-1569) (function)
- IERC721Metadata.symbol() (#473) (function)
Axes721.constructor(string,string,string).baseURI (#2170) shadows:
- ERC721.baseURI() (#1616-1618) (function)
Axes721.changeBaseURI(string).baseURI (#2312) shadows:
- ERC721.baseURI() (#1616-1618) (function)
Rename the local variables that shadow another component.
Additional information: link
Axes721.setItemsAddresses(address,address)._contract (#2197) lacks a zero-check on :
- itemTokenContract = _contract (#2199)
Axes721.setItemsAddresses(address,address)._withdraw (#2197) lacks a zero-check on :
- itemWithdraw = _withdraw (#2200)
Check that the address is not zero.
Additional information: link
Reentrancy in Axes721.itemMint(address,string) (#2258-2266):
External calls:
- ERC20Interface(itemTokenContract).transferFrom(msg.sender,address(this),items[_item]) (#2262)
- ERC20Interface(itemTokenContract).transfer(itemWithdraw,items[_item]) (#2263)
State variables written after the call(s):
- _mint(to,_tokenIdTracker.current(),_item,0) (#2264)
- _tokenITEMs[tokenId] = tokenItem (#1907)
- _mint(to,_tokenIdTracker.current(),_item,0) (#2264)
- _tokenSeason[tokenId] = _season (#1890)
- _mint(to,_tokenIdTracker.current(),_item,0) (#2264)
- _tokenURIs[tokenId] = rnd.toString() (#1878)
Reentrancy in Axes721.saleMint(address,uint256) (#2230-2256):
External calls:
- (succ) = address(ssn[_season].withdraw).call{value: ssn[_season].seasonPrice}() (#2244)
- ERC20Interface(ssn[_season].tokenContract).transferFrom(msg.sender,address(this),ssn[_season].seasonPrice) (#2249)
- ERC20Interface(ssn[_season].tokenContract).transfer(ssn[_season].withdraw,ssn[season].seasonPrice) (#2250)
External calls sending eth:
- (succ) = address(ssn[_season].withdraw).call{value: ssn[_season].seasonPrice}() (#2244)
State variables written after the call(s):
- _mint(_to,_tokenIdTracker.current(),ssn[_season].seasonItem,_season) (#2252)
- _tokenITEMs[tokenId] = tokenItem (#1907)
- _mint(_to,_tokenIdTracker.current(),ssn[_season].seasonItem,_season) (#2252)
- _tokenSeason[tokenId] = _season (#1890)
- _mint(_to,_tokenIdTracker.current(),ssn[_season].seasonItem,_season) (#2252)
- _tokenURIs[tokenId] = rnd.toString() (#1878)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Axes721.itemMint(address,string) (#2258-2266):
External calls:
- ERC20Interface(itemTokenContract).transferFrom(msg.sender,address(this),items[_item]) (#2262)
- ERC20Interface(itemTokenContract).transfer(itemWithdraw,items[_item]) (#2263)
Event emitted after the call(s):
- Mint(to,tokenId,_season) (#1805)
- _mint(to,_tokenIdTracker.current(),_item,0) (#2264)
- Transfer(address(0),to,tokenId) (#1806)
- _mint(to,_tokenIdTracker.current(),_item,0) (#2264)
Reentrancy in Axes721.saleMint(address,uint256) (#2230-2256):
External calls:
- (succ) = address(ssn[_season].withdraw).call{value: ssn[_season].seasonPrice}() (#2244)
- ERC20Interface(ssn[_season].tokenContract).transferFrom(msg.sender,address(this),ssn[_season].seasonPrice) (#2249)
- ERC20Interface(ssn[_season].tokenContract).transfer(ssn[_season].withdraw,ssn[season].seasonPrice) (#2250)
External calls sending eth:
- (succ) = address(ssn[_season].withdraw).call{value: ssn[_season].seasonPrice}() (#2244)
Event emitted after the call(s):
- Mint(to,tokenId,_season) (#1805)
- _mint(_to,_tokenIdTracker.current(),ssn[_season].seasonItem,_season) (#2252)
- Transfer(address(0),to,tokenId) (#1806)
- _mint(_to,_tokenIdTracker.current(),ssn[_season].seasonItem,_season) (#2252)
Apply the check-effects-interactions pattern.
Additional information: link
Axes721.saleMint(address,uint256) (#2230-2256) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp >= ssn[_season].seasonStart && block.timestamp <= ssn[_season].seasonStop,Season not active - time) (#2235)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#750-759) uses assembly
- INLINE ASM (#757)
Address._verifyCallResult(bool,bytes,string) (#895-912) uses assembly
- INLINE ASM (#904-907)
Do not use evm assembly.
Additional information: link
Axes721.addChangeItem(string,uint256,bool) (#2184-2191) compares to a boolean constant:
-items_exist[_item] == false (#2186)
Axes721.saleMint(address,uint256) (#2230-2256) compares to a boolean constant:
-ssn[_season].whitelist == true (#2236)
Axes721.saleMint(address,uint256) (#2230-2256) compares to a boolean constant:
-require(bool,string)(whitelist[_season][msg.sender] == true,You are not in whitelist) (#2237)
Axes721.saleMint(address,uint256) (#2230-2256) compares to a boolean constant:
-ssn[_season].tokens == false (#2241)
Axes721.itemMint(address,string) (#2258-2266) compares to a boolean constant:
-require(bool,string)(items_bool[_item] == true,Item not active) (#2260)
Axes721.systemMint(address,string) (#2268-2273) compares to a boolean constant:
-require(bool,string)(items_bool[_item] == true,Item not active) (#2270)
Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256) (#2275-2294) compares to a boolean constant:
-require(bool,string)(items_bool[_seasonItem] == true,Item not active) (#2278)
Remove the equality to the boolean constant.
Additional information: link
AccessControl._setRoleAdmin(bytes32,bytes32) (#286-289) is never used and should be removed
Address.functionCall(address,bytes) (#803-805) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#828-830) is never used and should be removed
Address.functionDelegateCall(address,bytes) (#877-879) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (#887-893) is never used and should be removed
Address.functionStaticCall(address,bytes) (#853-855) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (#863-869) is never used and should be removed
Address.sendValue(address,uint256) (#777-783) is never used and should be removed
Context._msgData() (#88-91) is never used and should be removed
Counters.decrement(Counters.Counter) (#67-69) is never used and should be removed
ERC721._safeMint(address,uint256) (#1766-1768) is never used and should be removed
ERC721._safeMint(address,uint256,bytes) (#1774-1777) is never used and should be removed
EnumerableMap._get(EnumerableMap.Map,bytes32) (#1357-1359) is never used and should be removed
EnumerableMap.get(EnumerableMap.UintToAddressMap,uint256) (#1431-1433) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (#1057-1059) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (#1095-1097) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (#1074-1076) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (#1183-1185) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (#1081-1083) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (#1067-1069) is never used and should be removed
SafeMath.add(uint256,uint256) (#597-602) is never used and should be removed
SafeMath.div(uint256,uint256) (#671-673) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#687-693) is never used and should be removed
SafeMath.mod(uint256,uint256) (#707-709) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#723-726) is never used and should be removed
SafeMath.mul(uint256,uint256) (#645-657) is never used and should be removed
SafeMath.sub(uint256,uint256) (#614-616) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (#628-633) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#777-783):
- (success) = recipient.call{value: amount}() (#781)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (#838-845):
- (success,returndata) = target.call{value: value}(data) (#843)
Low level call in Address.functionStaticCall(address,bytes,string) (#863-869):
- (success,returndata) = target.staticcall(data) (#867)
Low level call in Address.functionDelegateCall(address,bytes,string) (#887-893):
- (success,returndata) = target.delegatecall(data) (#891)
Low level call in Axes721.saleMint(address,uint256) (#2230-2256):
- (succ) = address(ssn[_season].withdraw).call{value: ssn[_season].seasonPrice}() (#2244)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Parameter ERC721.checkHash(string)._key (#1606) is not in mixedCase
Parameter ERC721.safeTransferFrom(address,address,uint256,bytes)._data (#1703) is not in mixedCase
Parameter Axes721.itemInfo(string)._item (#2180) is not in mixedCase
Parameter Axes721.addChangeItem(string,uint256,bool)._item (#2184) is not in mixedCase
Parameter Axes721.addChangeItem(string,uint256,bool)._price (#2184) is not in mixedCase
Parameter Axes721.addChangeItem(string,uint256,bool)._item_bool (#2184) is not in mixedCase
Parameter Axes721.setItemsAddresses(address,address)._contract (#2197) is not in mixedCase
Parameter Axes721.setItemsAddresses(address,address)._withdraw (#2197) is not in mixedCase
Parameter Axes721.tokensBoughtByAddress(uint256,address)._season (#2215) is not in mixedCase
Parameter Axes721.tokensBoughtByAddress(uint256,address)._buyer (#2215) is not in mixedCase
Parameter Axes721.saleMint(address,uint256)._to (#2230) is not in mixedCase
Parameter Axes721.saleMint(address,uint256)._season (#2230) is not in mixedCase
Parameter Axes721.itemMint(address,string)._item (#2258) is not in mixedCase
Parameter Axes721.systemMint(address,string)._item (#2268) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._seasonStart (#2275) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._seasonStop (#2275) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._seasonPrice (#2275) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._seasonAmount (#2275) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._whitelist (#2275) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._withdraw (#2275) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._tokenContract (#2275) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._seasonItem (#2275) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._seasonName (#2275) is not in mixedCase
Parameter Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256)._tokensPerBuyer (#2275) is not in mixedCase
Parameter Axes721.resetSeason(uint256)._season (#2296) is not in mixedCase
Parameter Axes721.addToWhitelist(address[],uint256)._address (#2323) is not in mixedCase
Parameter Axes721.addToWhitelist(address[],uint256)._season (#2323) is not in mixedCase
Parameter Axes721.isWhitelisted(address,uint256)._address (#2332) is not in mixedCase
Parameter Axes721.isWhitelisted(address,uint256)._season (#2332) is not in mixedCase
Variable Axes721.items_bool (#2148) is not in mixedCase
Variable Axes721.items_exist (#2149) is not in mixedCase
Variable Axes721._items (#2150) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#89)" inContext (#83-92)
Remove redundant statements if they congest code but offer no value.
Additional information: link
getRoleMemberCount(bytes32) should be declared external:
- AccessControl.getRoleMemberCount(bytes32) (#180-182)
getRoleMember(bytes32,uint256) should be declared external:
- AccessControl.getRoleMember(bytes32,uint256) (#196-198)
getRoleAdmin(bytes32) should be declared external:
- AccessControl.getRoleAdmin(bytes32) (#206-208)
grantRole(bytes32,address) should be declared external:
- AccessControl.grantRole(bytes32,address) (#220-224)
revokeRole(bytes32,address) should be declared external:
- AccessControl.revokeRole(bytes32,address) (#235-239)
renounceRole(bytes32,address) should be declared external:
- AccessControl.renounceRole(bytes32,address) (#255-259)
supportsInterface(bytes4) should be declared external:
- ERC165.supportsInterface(bytes4) (#552-554)
balanceOf(address) should be declared external:
- ERC721.balanceOf(address) (#1544-1548)
name() should be declared external:
- ERC721.name() (#1560-1562)
symbol() should be declared external:
- ERC721.symbol() (#1567-1569)
tokenFullInfo(uint256) should be declared external:
- ERC721.tokenFullInfo(uint256) (#1591-1594)
tokenITEM(uint256) should be declared external:
- ERC721.tokenITEM(uint256) (#1596-1599)
tokenSEASON(uint256) should be declared external:
- ERC721.tokenSEASON(uint256) (#1601-1604)
checkHash(string) should be declared external:
- ERC721.checkHash(string) (#1606-1609)
baseURI() should be declared external:
- ERC721.baseURI() (#1616-1618)
tokenOfOwnerByIndex(address,uint256) should be declared external:
- ERC721.tokenOfOwnerByIndex(address,uint256) (#1623-1625)
totalSupply() should be declared external:
- ERC721.totalSupply() (#1630-1633)
tokenByIndex(uint256) should be declared external:
- ERC721.tokenByIndex(uint256) (#1638-1641)
approve(address,uint256) should be declared external:
- ERC721.approve(address,uint256) (#1646-1655)
setApprovalForAll(address,bool) should be declared external:
- ERC721.setApprovalForAll(address,bool) (#1669-1674)
transferFrom(address,address,uint256) should be declared external:
- ERC721.transferFrom(address,address,uint256) (#1686-1691)
safeTransferFrom(address,address,uint256) should be declared external:
- ERC721.safeTransferFrom(address,address,uint256) (#1696-1698)
burn(uint256) should be declared external:
- ERC721Burnable.burn(uint256) (#1981-1985)
startStopItemsSale() should be declared external:
- Axes721.startStopItemsSale() (#2157-2161)
itemInfo(string) should be declared external:
- Axes721.itemInfo(string) (#2180-2182)
addChangeItem(string,uint256,bool) should be declared external:
- Axes721.addChangeItem(string,uint256,bool) (#2184-2191)
itemsList() should be declared external:
- Axes721.itemsList() (#2193-2195)
setItemsAddresses(address,address) should be declared external:
- Axes721.setItemsAddresses(address,address) (#2197-2201)
seasonInfo(uint256) should be declared external:
- Axes721.seasonInfo(uint256) (#2203-2205)
seasonOptions(uint256) should be declared external:
- Axes721.seasonOptions(uint256) (#2207-2209)
currentId() should be declared external:
- Axes721.currentId() (#2211-2213)
tokensBoughtByAddress(uint256,address) should be declared external:
- Axes721.tokensBoughtByAddress(uint256,address) (#2215-2217)
saleMint(address,uint256) should be declared external:
- Axes721.saleMint(address,uint256) (#2230-2256)
itemMint(address,string) should be declared external:
- Axes721.itemMint(address,string) (#2258-2266)
systemMint(address,string) should be declared external:
- Axes721.systemMint(address,string) (#2268-2273)
initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256) should be declared external:
- Axes721.initNewSeason(uint256,uint256,uint256,uint256,bool,address,address,string,string,uint256) (#2275-2294)
resetSeason(uint256) should be declared external:
- Axes721.resetSeason(uint256) (#2296-2310)
changeBaseURI(string) should be declared external:
- Axes721.changeBaseURI(string) (#2312-2315)
setTokenInfo(uint256,string) should be declared external:
- Axes721.setTokenInfo(uint256,string) (#2317-2321)
addToWhitelist(address[],uint256) should be declared external:
- Axes721.addToWhitelist(address[],uint256) (#2323-2330)
isWhitelisted(address,uint256) should be declared external:
- Axes721.isWhitelisted(address,uint256) (#2332-2334)
pause() should be declared external:
- Axes721.pause() (#2345-2348)
unpause() should be declared external:
- Axes721.unpause() (#2359-2362)
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 price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts