Base URI: this will be concatenated with token ID to generate the token URIs.
Mintable: allows privilegial accounts to create new tokens.
Auto Increment IDs: automatically assigns incremental IDs to new tokens.
Burnable: creates an ERC721 Token that can be irreversibly burned(destroyed).
Pausable: adds a contract module that allows authorized accounts to trigger an emergency stop mechanism.
Enumerable: implements an optional extension of ERC721 defined in the EIP, which adds enumerability of all token IDs in the contract as well as all token IDs owned by each account.
URI Storage: provides an ERC721 token with storage-based token URI management.
This directory provides ways to restrict who can access the functions of a contract or when they can do it.
Ownable: this contract module provides basic access control, where there is an account (an owner) that has exclusive access to specific functions. By default, the owner account is the one that deploys the contract, but this can later be changed with transferOwnership. This module is used through inheritance and makes the onlyOwner modifier available, which can be applied to functions to restrict their use to the owner.
Roles: this contract module allows children to implement role-based access control mechanisms. It's a lightweight version that doesn't allow enumeration of role members except through off-chain means by accessing the contract event logs. For cases requiring on-chain enumerability, see AccessControlEnumerable. Roles are referred to by their bytes32 identifier, and these should be exposed in the external API as unique identifiers. The best way to achieve this is by using public constant hash digests.
OpenZeppelin provides tooling for deploying and securing upgradeable smart contracts.
Transparent: uses a more complex proxy with higher overhead but requires fewer changes in your contract. Can also be used with beacons.
UUPS: uses a simple proxy with less overhead but requires including extra code in your contract. Allows flexibility for authorizing upgrades.
Security contract: provide a contact where people can report security issues. This will only be visible if contract metadata is verified.
License: the MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it places very limited restrictions on reuse and is, therefore, highly compatible.
Compiler: choose the same version of the compiler that appears in the code.
Compile our contract by clicking the compile button.
Deploy & run transaction
Enviroment: select the "Injected Web3" option and connect Metamask to Remix.
Deploy: click the "Deploy" button and confirm the transaction.
Deployed Contracts: you can access your contract in the "Deployed Contracts" tab. Click on it to display all the functions of your contract. It's as simple as entering the parameters and clicking the actions.
There are increasingly more platforms that allow you to create smart contracts without having to write code. Remix offers incredible facilities for both beginners in blockchain programming and experienced developers looking to explore new functionalities in smart contracts.