ProtocolERC721U
Inherits: Initializable, ERC721Upgradeable, ERC721EnumerableUpgradeable, ERC721URIStorageUpgradeable, ERC721BurnableUpgradeable, OwnableUpgradeable, UUPSUpgradeable, ProtocolTokenCommonU, ReentrancyGuard
Author: @ShaneDuncan602, @oscarsernarosero, @TJ-Everett
This is the base contract for all protocol ERC721Upgradeables
State Variables
handlerAddress
handler
_tokenIdCounter
baseUri
Base Contract URI
__gap
memory placeholders to allow variable addition without affecting client upgradeability
Functions
constructor
initialize
This function should be called in an “atomic” deploy script when deploying an ERC721Upgradeable contract. “Front Running” is possible if this function is called individually after the ERC721Upgradeable proxy is deployed. It is critical to ensure your deploy process mitigates this risk.
Initializer sets the name, symbol and base URI of NFT along with the App Manager and Handler Address
Parameters
Name | Type | Description |
---|---|---|
_nameProto | string | Name of NFT |
_symbolProto | string | Symbol for the NFT |
_appManagerAddress | address | Address of App Manager |
_baseUri | string |
_initializeProtocol
Private Initializer sets the name, symbol and base URI of NFT along with the App Manager and Handler Address
Parameters
Name | Type | Description |
---|---|---|
_appManagerAddress | address | Address of App Manager |
_authorizeUpgrade
_burn
Function to burn or remove token from circulation
Parameters
Name | Type | Description |
---|---|---|
tokenId | uint256 | Id of token to be burned |
_baseURI
Function to return baseURI for contract
Returns
Name | Type | Description |
---|---|---|
<none> | string | baseUri URI link to NFT metadata |
tokenURI
Function to return tokenURI for contract
Returns
Name | Type | Description |
---|---|---|
<none> | string | tokenURI link to NFT metadata |
setBaseURI
this is called in the constructor and can be called to update URI metadata pointer
Function to set URI for contract.
Parameters
Name | Type | Description |
---|---|---|
_baseUri | string | URI to the metadata file(s) for the contract |
supportsInterface
Returns true if this contract implements the interface defined by
interfaceId
. See the corresponding
https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
to learn more about how these ids are created.
This function call must use less than 30 000 gas.
safeMint
END setters and getters *******
Add appAdministratorOnly modifier to restrict minting privilages
Function mints new a new token to caller with tokenId incremented by 1 from previous minted token.
Parameters
Name | Type | Description |
---|---|---|
to | address | Address of recipient |
_beforeTokenTransfer
Function called before any token transfers to confirm transfer is within rules of the protocol
Parameters
Name | Type | Description |
---|---|---|
from | address | sender address |
to | address | recipient address |
tokenId | uint256 | Id of token to be transferred |
batchSize | uint256 | the amount of NFTs to mint in batch. If a value greater than 1 is given, tokenId will represent the first id to start the batch. |
withdraw
Rule Processor Module Check
Function to withdraw Ether sent to contract
AppAdministratorOnly modifier uses appManagerAddress. Only Addresses asigned as AppAdministrator can call function.
getHandlerAddress
This function returns the handler address
Returns
Name | Type | Description |
---|---|---|
<none> | address | handlerAddress |
connectHandlerToToken
This function does not check for zero address. Zero address is a valid address for this function’s purpose.
Function to connect Token to previously deployed Handler contract
Parameters
Name | Type | Description |
---|---|---|
_deployedHandlerAddress | address | address of the currently deployed Handler Address |