is a new blockchain-based game where users own and collect unique NFTs.For this audit, we reviewed the project's DJX token contract and DJY game contract. The contracts were reviewed using code provided to us by the team.
Function Graph
![Smart Contract Graph](DJX.sol-graph.png)
Inheritence Chart
![Smart Contract Inheritance](DJX.sol-inherit.png)
Functions Overview
($) = payable function
# = non-constant function
Int = Internal
Ext = External
Pub = Public
+ Context
- [Int] _msgSender
- [Int] _msgData
+ [Lib] Math
- [Int] max
- [Int] min
- [Int] average
+ [Lib] SafeMath
- [Int] add
- [Int] sub
- [Int] sub
- [Int] mul
- [Int] div
- [Int] div
- [Int] mod
- [Int] mod
+ Ownable (Context)
- [Pub] #
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Pub] addPlatformAddress #
- modifiers: onlyOwner
- [Pub] removePlatformAddress #
- modifiers: onlyOwner
+ [Int] IERC20
- [Ext] totalSupply
- [Ext] circulatingSupply
- [Ext] stakedSupply
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Int] IERC20Metadata (IERC20)
- [Ext] name
- [Ext] symbol
- [Ext] decimals
+ DJX (Context, IERC20, IERC20Metadata, Ownable)
- [Pub] #
- [Pub] name
- [Pub] symbol
- [Pub] decimals
- [Pub] totalSupply
- [Pub] totalCalcSupply
- [Pub] circulatingSupply
- [Pub] stakedSupply
- [Pub] balanceOf
- [Pub] transfer #
- [Pub] allowance
- [Pub] approve #
- [Pub] transferFrom #
- [Pub] increaseAllowance #
- [Pub] decreaseAllowance #
- [Int] _transfer #
- [Int] _approve #
- [Int] _beforeTokenTransfer #
- [Int] mint #
- [Int] _mint #
- [Pub] printer #
- modifiers: onlyPlatform
- [Pub] burnY4X #
- modifiers: onlyPlatform
- [Pub] addStake #
- modifiers: onlyPlatform
- [Pub] setName #
- modifiers: onlyPlatform
- [Int] burn #
- [Pub] burnFrom #
- modifiers: onlyPlatform
- [Int] _burn #
- [Pub] burner #
- modifiers: onlyPlatform
- [Pub] burnX4Y #
- modifiers: onlyPlatform
Function Graph
![Smart Contract Graph](DJY.sol-graph.png)
Inheritence Chart
![Smart Contract Inheritance](DJY.sol-inherit.png)
Functions Overview
($) = payable function
# = non-constant function
Int = Internal
Ext = External
Pub = Public
+ Context
- [Int] #
- [Int] _msgSender
- [Int] _msgData
+ [Lib] SafeMaths
- [Int] add
- [Int] sub
- [Int] sub
- [Int] mul
- [Int] div
- [Int] div
- [Int] mod
- [Int] mod
+ Ownable (Context)
- [Pub] #
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Pub] addPlatformAddress #
- modifiers: onlyOwner
- [Pub] removePlatformAddress #
- modifiers: onlyOwner
+ [Int] IERC20
- [Ext] totalSupply
- [Ext] burnY4X #
- [Ext] burnX4Y #
- [Ext] printer #
- [Ext] addStake #
- [Ext] setName #
- [Ext] getDJXBalance
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Int] IERC165
- [Ext] supportsInterface
+ ERC165 (IERC165)
- [Pub] supportsInterface
+ [Int] IERC721 (IERC165)
- [Ext] balanceOf
- [Ext] ownerOf
- [Ext] safeTransferFrom #
- [Ext] transferFrom #
- [Ext] approve #
- [Ext] getApproved
- [Ext] setApprovalForAll #
- [Ext] isApprovedForAll
- [Ext] safeTransferFrom #
+ [Int] IERC721Metadata (IERC721)
- [Ext] name
- [Ext] symbol
- [Ext] tokenURI
+ [Int] IERC721Receiver
- [Ext] onERC721Received #
+ [Int] IERC721Enumerable (IERC721)
+ [Lib] Address
- [Int] isContract
- [Int] toPayable
- [Int] sendValue #
+ [Lib] Strings
- [Int] toString
- [Int] toHexString
- [Int] toHexString
+ ERC721 (Context, ERC165, IERC721, IERC721Metadata)
- [Pub] #
- [Pub] supportsInterface
- [Pub] balanceOf
- [Pub] ownerOf
- [Pub] name
- [Pub] symbol
- [Pub] tokenURI
- [Int] _baseURI
- [Pub] approve #
- [Pub] getApproved
- [Pub] setApprovalForAll #
- [Pub] isApprovedForAll
- [Pub] transferFrom #
- [Pub] safeTransferFrom #
- [Pub] safeTransferFrom #
- [Int] _safeTransfer #
- [Pub] _exists
- [Int] _isApprovedOrOwner
- [Int] _safeMint #
- [Int] _safeMint #
- [Int] _mint #
- [Int] _burn #
- [Int] _transfer #
- [Int] _approve #
- [Prv] _checkOnERC721Received #
- [Int] _beforeTokenTransfer #
+ DJY (Ownable, ERC165, IERC721, ERC721, IERC721Receiver)
- [Pub] #
- modifiers: Ownable,ERC721
- [Pub] tokenOfOwnerByIndex
- [Pub] tokenByIndex
- [Int] _beforeTokenTransfer #
- [Prv] _addTokenToOwnerEnumeration #
- [Prv] _addTokenToAllTokensEnumeration #
- [Prv] _removeTokenFromOwnerEnumeration #
- [Prv] _removeTokenFromAllTokensEnumeration #
- [Pub] UpdateDjinOwnership #
- [Int] _transfer #
- [Pub] supportsInterface
- [Pub] onERC721Received #
- [Pub] setDJXAddress #
- modifiers: onlyPlatform
- [Int] uint2str
- [Int] length
- [Pub] setBasePercentage #
- modifiers: onlyPlatform
- [Pub] getDJXBalance
- [Pub] getBasePercentage
- [Int] _setTokenStakebyID #
- [Pub] setTokenStakebyID #
- modifiers: onlyOwner
- [Pub] setNamebyID #
- modifiers: onlyOwner
- [Pub] setAddStakeStatus #
- modifiers: onlyOwner
- [Pub] getDjinStakebyID
- [Pub] getDjinBloodline
- [Pub] totalStakes
- [Pub] allTokenslength
- [Pub] totalSupply
- [Pub] djinBloodLine
- [Pub] summonDjin #
- [Pub] banishDjin #
- [Pub] conjure
- [Pub] addStake #
- modifiers: enableAddStake
- [Pub] mulScale
- [Pub] calculateReward
- [Pub] getReward
- [Pub] withdrawReward #