### 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. |