ExampleERC721
Inherits: ERC721, ReentrancyGuard, ERC721Burnable, [RulesEngineClientERC721](/v2(/reference/v2/client/RulesEngineClientERC721.sol/abstract.RulesEngineClientERC721)
Author: @mpetersoCode55, @ShaneDuncan602, @TJ-Everett, @VoR0220
This contract demonstrates how to integrate the Rules Engine with an ERC721 token for policy enforcement.
This contract is an example implementation of an ERC721 token integrated with the Rules Engine. It extends the OpenZeppelin ERC721 and ERC721Burnable contracts and includes additional functionality for interacting with the Rules Engine. The contract ensures compliance with policies defined in the Rules Engine for minting, transferring, and transferring tokens on behalf of others. It also includes a withdrawal function for Ether stored in the contract.
State Variables
baseUri
Base Contract URI
counter
Functions
constructor
Constructor for the Example ERC721 token.
Initializes the token with a name and symbol.
Parameters
Name | Type | Description |
---|---|---|
_name | string | The name of the token. |
_symbol | string | The symbol of the token. |
safeMint
Mints a new token to the specified address.
The token ID is incremented by 1 from the previous minted token. This function is payable to allow child contracts to override it with a priced mint function.
Parameters
Name | Type | Description |
---|---|---|
to | address | The address of the recipient. |
safeTransferFrom
Safely transfers a token from one address to another.
This function overrides the ERC721-safeTransferFrom function and interacts with the Rules Engine to ensure compliance with transfer policies. It includes additional checks for policy compliance.
Parameters
Name | Type | Description |
---|---|---|
from | address | The address of the current token owner. |
to | address | The address of the recipient. |
tokenId | uint256 | The ID of the token to transfer. |
data | bytes | Additional data to pass to the recipient contract. |
transferFrom
Transfers a token from one address to another.
This function overrides the [ERC721-transferFrom](/v2(/reference/v2/example/ExampleERC20.sol/contract.ExampleERC20.md#transferfrom) function and interacts with the Rules Engine to ensure compliance with transfer policies. It includes additional checks for policy compliance.
Parameters
Name | Type | Description |
---|---|---|
from | address | The address of the current token owner. |
to | address | The address of the recipient. |
tokenId | uint256 | The ID of the token to transfer. |
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.
withdraw
Withdraws Ether stored in the contract.
This function allows only App Administrators to withdraw Ether. It uses the appManagerAddress to enforce access control. The function is payable to allow flexibility in child contracts.