---
# System prepended metadata

title: NFT Engine and Marketplace Spec

---

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