https://github.com/nawodyaishan/erc-1155-draft-nft-mint-lab
The DraftMultiMinter is a robust ERC-1155 contract facilitating the creation of various token types that are essential for diverse game mechanics and economies
https://github.com/nawodyaishan/erc-1155-draft-nft-mint-lab
erc1155 ethereum hardhat nextjs react smart-contracts solidity thridweb typescript
Last synced: 4 months ago
JSON representation
The DraftMultiMinter is a robust ERC-1155 contract facilitating the creation of various token types that are essential for diverse game mechanics and economies
- Host: GitHub
- URL: https://github.com/nawodyaishan/erc-1155-draft-nft-mint-lab
- Owner: nawodyaishan
- Created: 2024-01-05T02:42:39.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-19T01:34:39.000Z (almost 2 years ago)
- Last Synced: 2025-03-15T05:28:48.228Z (8 months ago)
- Topics: erc1155, ethereum, hardhat, nextjs, react, smart-contracts, solidity, thridweb, typescript
- Language: TypeScript
- Homepage:
- Size: 5.93 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Overview
The `DraftMultiMinter` is a robust ERC-1155 contract facilitating the creation of various token types that are essential for diverse game mechanics and economies. This contract is specifically designed to enable:
* **Fungible Tokens (FTs):** Represent in-game resources like currency and experience boosters.
* **Non-Fungible Tokens (NFTs):** Serve as unique player cards, stadium elements, or collectible game assets.
## Key Features
* **Distinct Token Types:** Effortlessly categorize tokens into their specific roles, simplifying the creation of multifaceted game mechanics.
* **Efficient Minting:** Mints both fungible and non-fungible tokens in a streamlined manner.
* **NFT Supply Management:** Tracks the supply of NFTs with built-in safeguards to prevent over-minting and maintain scarcity.
* **Metadata Handling:** Provides a standard mechanism for defining individual token metadata that's compatible with external marketplaces and visualization tools.
* **Ownable:** Includes ownership controls to regulate contract administration.
* **Pausable:** Offers the ability to pause token transfers as needed for updates or emergency scenarios.
## Code Highlights
1. **ERC-1155 Standard:** Leverages the ERC-1155 standard to establish core functionalities for minting multiple token types with associated amounts and metadata in a single contract.
2. **Token Type Enumeration:** The `TokenType` enum allows for clear identification of supported token categories:
* `IN_GAME_CURRENCY`
* `EXPERIENCE_BOOST`
* `PLAYER_CARD`
* `STADIUM_VILLAGE_BUILDING`
3. **Minting Functions:** The contract implements separate functions for efficient minting:
* `mintFT()`: Mint fungible tokens with defined types and quantities.
* `mintNFT()`: Create NFTs, tracking supply to enforce limits.
4. **Metadata Management:**
* `setURI()`: Provides an administrative function to update the base URI for metadata.
* `uri()`: Overrides the standard `uri()` function to fetch dynamic metadata for each token based on its ID and the base URI.
## Getting Started
1. **Deployment:**
* Deploy the `DraftMultiMinter.sol` contract to your desired blockchain environment.
2. **Configuration:**
* Replace the placeholder in the constructor (`"https://turquoise-rear-loon-357.mypinata.cloud/ipfs/QmahUaDqT8b4dMcibzZJzVy2edV2rTU6sKDUqcNavJEMJ7/{id}.json"`) with your actual base metadata URI if the IPFS-stored structure differs.
3. **Minting:**
* Use the `mintFT()` and `mintNFT()` functions to create the necessary tokens for your game.
## Using the Contract
To ensure efficient usage, make note of the following:
* **`getTokenId()` Function:** Utilize this function to obtain the token ID associated with a particular `TokenType` which is vital for minting calls.
* **`isFungibleToken()` and `isNonFungibleToken()`**: Employ these helper functions to easily determine the type of a given token ID.
* **Access Controls:** Be cognizant that sensitive calls, such as minting, are reserved for the contract owner.