### Key Features: **Multi-Game Compatibility:** - Our goal is to create an NFT engine that effortlessly integrates with a variety of games. This compatibility allows users to experience the benefits of NFTs across different gaming environments, fostering a more interconnected gaming ecosystem. **Marketplace:** - The proposal includes the creation of a user-friendly marketplace that facilitates the listing, buying, selling, and trading of NFT items. With advanced features like item browsing and filtering, we aim to provide a seamless transactional experience for users. ### Data Structures: **Game Specification:** I suggest a comprehensive structure for game-related information, linking games to NFT items through a unique game identifier. This foundational structure supports a multi-game approach, allowing for diverse game integrations. ``` { "gameId": "xyz123", "gameName": "Awesome RPG", "gameDescription": "An exciting role-playing game.", "developer": "Game Studios Inc.", "genre": "Role-Playing", "rating": "T", "imageURL": "https://example.com/awesome_rpg_image.jpg", "adminAccounts": ['tobias-g'] } ``` This would be an API request that would have authentication which we could use to setup new games. **NFT Item Definition:** - To ensure versatility, a detailed structure for NFT items is proposed, including unique identifiers, names, descriptions, and attributes. An array of supported games can added to an item's usability across games, promoting interoperability. ``` { "tokenId": "unique_identifier_here", "name": "Go Fasters", "description": "A mighty item that can be upgraded for more power.", "imageURL": "https://example.com/go_fasters_image.jpg", "supportedGameIds": [], "owner": "tobias-g", "inGame": false, "gameId": null "listed": true, "listing": { "listPrice": "1", "symbol": "USD" }, "attributes": { "type": "Armor", "wearableType": "Wearable", "weaponType": "Weapon", "material": ["rubber", "steel", "mithril"], "speed": 2, "range": 0, "damage": 0, "magic": ["fire", "ice"], "durability": 5, "attribute1": "Text", "attribute2": "More Text", "attribute3": 42 } } ``` **Transaction History:** - Specify a model for recording transaction history, ensuring transparency and traceability over time. This history model includes buyer and seller details, transaction date, and status for a comprehensive record of marketplace activities. Transfer: ``` { "_id": ObjectId("transaction_id_here"), "tokenId": ObjectId("nft_item_id_here"), "transactionType": "transfer", "details": { "sender": ObjectId("sender_user_id_here"), "receiver": ObjectId("receiver_user_id_here") }, "trxId": "asbhh238323xx8fnf", "transactionDate": ISODate("transaction_date_here"), "status": "completed" } ``` Marketplace Sale: ``` { "_id": ObjectId("transaction_id_here"), "tokenId": ObjectId("nft_item_id_here"), "transactionType": "nft_market_sale", "details": { "price": { "amount": 50, "symbol": "USD" }, "buyer": ObjectId("buyer_user_id_here"), "seller": "seller_name" }, "trxId": "asbhh238323xx8fnf", "transactionDate": ISODate("transaction_date_here"), "status": "completed" } ``` Custom JSON Transactions on Hive | Action | Description | |-----------------------|--------------------------------------------------------------------| | `Transfer NFT` | Transfer ownership of an NFT from one account to another. | | | - Details include tokenId and recipient's account. | | | - Changes ownership status of the NFT. | | `List NFT for Sale` | Add an NFT to the marketplace for sale. | | | - Details include tokenId and sale price. | | | - Makes the NFT available for purchase in the marketplace. | | `Cancel Listings` | Remove an NFT from the marketplace. | | | - Details include tokenId. | | | - Cancels an existing listing, removing the NFT from the marketplace. | ### Transfer Operations on Hive | Action | Description | |-----------------------|--------------------------------------------------------------------| | `Buy NFT` | Purchase an NFT from the marketplace. | | | - Details include tokenId and amount paid. | | | - Completes a marketplace transaction, transferring ownership. | ### APIs | Action | Description | |-----------------------|--------------------------------------------------------------------| | `Issue NFT` | Create a new NFT with specified attributes. | | | - Details such as tokenId and attributes are included. | | | - Must be signed by admin account to issue | | `Update NFT Attributes`| Modify attributes of an existing NFT. | | | - Details include tokenId and updated attributes. | | | - Allows dynamic changes to NFT properties. | | `Import into Game` | Link an NFT to a specific game. | | | - Details include tokenId and gameId. | | | - Associates an NFT with a particular game. | | `Unbind from Game` | Remove the association of an NFT from a game. | | | - Details include tokenId and gameId. | | | - Dissociates an NFT from a specific game. | | `Import into Game` | Link an NFT to a specific game. | | | - Details include tokenId and gameId. | | | - Associates an NFT with a particular game. | | `Login` | TBA ## Marketplace Requirements | **Page/Feature** | **Requirements** | |----------------------------|-----------------------------------------------------------------------------------------------------| | **Authentication** | - Integration with Hive Keychain for secure user authentication. | | **Collection Overview Page**| - Display curated overview of available NFT collections. | | | - Include categories, item count, and basic collection information. | | **Collection Item Page** | - Individual pages for each NFT item. | | | - Users can list their NFTs for sale. | | | - Options for transferring NFTs to another user within the platform. | | | - Ability to cancel a listing if it has been listed. | | **Marketplace Overview Page**| - Similar to the Collection Overview but for listed items in the marketplace. | | **Listed Item Page** | - Users can buy listed NFTs. | | | - Users can cancel a listing if they own it. | | **User Light Wallet** | - Provide a light wallet feature to show the user's balance. | | **404 Page** | - Create a custom 404 error page with a user-friendly message and navigation links. |