Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NFT provenance tracker SDK - grant application #1832

Closed
wants to merge 28 commits into from
Closed
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
54539ae
initial template
Ekaanth Jun 28, 2023
7eb647b
initial commit
Ekaanth Jun 28, 2023
95e9b04
Content added
Ekaanth Jul 3, 2023
078ff6e
Merge branch 'w3f:master' into master
Ekaanth Jul 3, 2023
386691c
Update metaquity-nft-provenance-tracker.md
metaquity Jul 3, 2023
712a502
Update metaquity-nft-provenance-tracker.md
metaquity Jul 3, 2023
c149a02
Update metaquity-nft-provenance-tracker.md
metaquity Jul 3, 2023
b7958a8
Update metaquity-nft-provenance-tracker.md
metaquity Jul 3, 2023
d00beea
updated image
Ekaanth Jul 3, 2023
4cb1154
updated image
Ekaanth Jul 3, 2023
f0f24e7
updated Image
Ekaanth Jul 3, 2023
1b78b64
updated milestones
Ekaanth Jul 3, 2023
fb90469
Merge branch 'w3f:master' into master
Ekaanth Jul 3, 2023
dd309db
file name updated
Ekaanth Jul 3, 2023
353abda
Update metaquity_nft_provenance_tracker.md
Ekaanth Jul 13, 2023
2c6f348
updated application
Ekaanth Jul 27, 2023
86a7d32
Update image
Ekaanth Jul 27, 2023
e110196
Merge branch 'w3f:master' into master
Ekaanth Jul 27, 2023
d5f4cbe
Update license
Ekaanth Jul 27, 2023
48de46f
updated
Ekaanth Jul 28, 2023
a18a3de
Update tech architecture
Ekaanth Aug 25, 2023
f8034ee
Update metaquity_nft_provenance_tracker.md
Ekaanth Aug 25, 2023
e7de5d9
Overview updated
Ekaanth Aug 25, 2023
95a4ad9
Merge branch 'w3f:master' into master
Ekaanth Aug 25, 2023
203dd05
updated milestone
Ekaanth Sep 10, 2023
89154da
updated
Ekaanth Sep 19, 2023
d4f5c6f
updated
Ekaanth Sep 19, 2023
018f097
Merge branch 'w3f:master' into master
Ekaanth Sep 19, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions applications/metaquity_nft_provenance_tracker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# NFT PROVENANCE TRACKER SDK

- **Team Name:** [Metaquity limited](https://www.metaquity.xyz) (Part of Substrate Builders Program)
- **Payment Address:** Fiat payment (Bank account details will be emailed to [email protected] by [email protected])
- **Level:** 2

## Project Overview :page_facing_up:

We propose to build an NFT Provenance Tracker SDK, an on-chain system capable of tracking and displaying the entire lifecycle of NFTs across multiple parachains in the Polkadot ecosystem. The tracker will collect data like NFT creation, past ownership history, price history, metadata, and locking/unlocking events. The data will be made accessible via SDK.

### Project Context

The rise of NFTs has brought a new level of complexity to asset tracking in the blockchain space. The unique and non-interchangeable nature of NFTs, combined with the ability to fractionalize and trade them across multiple parachains, presents a pressing need for a tool that can track their provenance in a trustless and transparent manner.

Our research indicates that, while there are some solutions for tracking NFT provenance, none currently offer cross-parachain functionality combined with an on-chain model for scalability. By developing this tool, we can significantly enhance transparency and trust in the Polkadot NFT space, benefiting individual NFT owners, DEXs, parachain operators, and potential asset buyers.

### Project Details

Architecture:

<img width="1244" alt="Screenshot 2023-08-25 at 13 06 25" src="https://github.com/Metaquity-Network/Grants-Program/assets/22363352/3f9c7231-c45c-4541-8374-197c5bc33d6b">

Overview:
A standard asset-tracking SDK will be built with the following layers:

- Blockchain layer: Access to the blockchain data source and crawl through the blocks from the genesis block, we will use using existing solution for crawling through the blockchain, we are exploring subscan for this solution and these are self-hosted or we will connect to external RPC nodes for fetching the data. We will be looking at subsquid for this solution.

- Middleware layer: Contains the crawlers/plugins which are written in typescript through which we can crawl the blockchain and collect information about NFTs write into the database and index it using elastic search. These indexers can index data based on the common NFR events and platform-specific events for better data availability. This module can be a self-hosted or SaaS this module can read and index any newer blockchain that adopts `pallet-nft` for the NFTs.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Middleware layer: Contains the crawlers/plugins which are written in typescript through which we can crawl the blockchain and collect information about NFTs write into the database and index it using elastic search. These indexers can index data based on the common NFR events and platform-specific events for better data availability. This module can be a self-hosted or SaaS this module can read and index any newer blockchain that adopts `pallet-nft` for the NFTs.
- Middleware layer: Contains the crawlers/plugins which are written in typescript through which we can crawl the blockchain and collect information about NFTs write into the database and index it using elastic search. These indexers can index data based on the common NFT events and platform-specific events for better data availability. This module can be a self-hosted or SaaS this module can read and index any newer blockchain that adopts `pallet-nft` for the NFTs.


- API: This layer helps in fetching details of the blockchain from the DB to the SDK, This is a transportation layer where it is fetching information from the DB based on the user commands. This module will also be self-hosted. The API endpoints will be private and accessible through SDK, the API endpoints will be written using node(typescript)

- SDK: This package will have all the necessary functions to fetch details about the NFT asset. Users will be able to download this package and query for the information of the asset on blockchain by providing various SDK commands. This module will be essentially integrated on the client side. Essentially the SDK will written in typescript and deployed on the NPM marketplace.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- SDK: This package will have all the necessary functions to fetch details about the NFT asset. Users will be able to download this package and query for the information of the asset on blockchain by providing various SDK commands. This module will be essentially integrated on the client side. Essentially the SDK will written in typescript and deployed on the NPM marketplace.
- SDK: This package will have all the necessary functions to fetch details about the NFT asset. Users will be able to download this package and query for the information of the asset on blockchain by providing various SDK commands. This module will be essentially integrated on the client side. Essentially, the SDK will written in typescript and published on the NPM marketplace.



Technology stack:
- MongoDB
- Typescript
- Elasticsearch
- JavaScript
- Subsquid

### Ecosystem Fit

There are quite a few projects in the Polkadot/Kusama ecosystem that are working with NFTs. And going forward with XCM v4 supporting cross-chain transfer of NFT's, we believe tracking and tracing of the entire lifecycle of an NFT will not only be a need but a must-have.

The NFT-Provenance-Tracker SDK built by Metaquity will be a great way for these projects to implement provenance for their projects and will save a lot of time and effort to build this from scratch.

Also in line with our project, we intend to extend this SDK to include use cases of tracking fractional ownership of the individual NFTs. This use case alone will open a lot of doors of bringing real-world assets into the Polkadot ecosystem.

Later on we can extend EVM compatibility to this project to make it more versatile.

## Team :busts_in_silhouette:

### Team members

- Abhishek Chatterjee
- Abhishek Sira Chandrashekhar
- Arko Ganguli

### Contact

- **Contact Name:** Abhishek Chatterjee
- **Contact Email:** [email protected]
- **Website:** [Metaquity](www.metaquity.xyz/)

### Legal Structure

- **Registered Address:** 128 CITY ROAD, UNITED KINGDOM, LONDON, EC1V 2NX
- **Registered Legal Entity:** Metaquity Limited.

### Team's experience

- **Abhishek Chatterjee**: Co-founder of Metaquity, 15+ years of product and technical experience. 4+ years of blockchain experience.
- **Abhishek Sira Chandrasekhar**: Software developer with 4+ years of experience in development 2+ years in Blockchain working on DID, SSI, VC and ZKP. Prior to Metaquity used to work at Litentry as a mobile developer.

- Metaquity Network is already part of the Substrate Builders Program.


### Team Code Repos

- https://github.com/metaquiry-network/nft-provenance-tracker

Team members GitHub:

- https://github.com/abhichat85
- https://github.com/ekaanth

### Team LinkedIn Profiles (if available)

- https://www.linkedin.com/in/abhishekchatterjee85/
- https://www.linkedin.com/in/abhishek-sira-chandrashekar-821244b7/

## Development Roadmap :nut_and_bolt:

This project will be a proof of concept (PoC) to demonstrate a particular use case and how NFT-SDK can be leveraged by other projects and parachains in the Polkadot ecosystem. Since this will be an SDK, anyone will be able to integrate this within their application. This acts as an enabler for this particular use case for provenance tracking of NFTs and fractional fungible tokens associated with those NFTs. This can extend to not only digital assets but also real-world assets (which is what is the primary focus of Metaquity Network).

### Overview

- **Total Estimated Duration:** 2,5 months
- **Full-Time Equivalent (FTE):** 2 FTE (full-time employees)
- **Total Costs:** 20,000 USD

### Milestone

| Number | Deliverable | Specification |
| -----: | ----------- | ------------- |
| **0a.** | License | Apache 2.0 |
| **0b.** | Documentation | We will provide both readme.md and official architectural documentation of the NFT scanner module |
| **0c.** | Testing and Testing Guide | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. |
| **0d.** | Docker | Dockerfiles and docker-compose.yml for running a development environment that locally spins up, which will be able to interact with the database to fetch the indexed information locally. |
| **0e.** | Article | Add an article covering how to integrate NFT-SDK in a project. |
| 1. | NFT Schema Development | Development of data models for the indexing of the NFT-related extrinsic so that users can get compressive information of the NFT lifecycle |
| 2. | Collection schema development | Development of NFT-collection schema models |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Development of NFT-collection schema models

By schema models do you mean data schemas? So basically, which attributes an object would have and which relations objects have between each other?

Suggested change
| 2. | Collection schema development | Development of NFT-collection schema models |
| 2. | Collection schema development | Development of NFT-collection data schemas |

| 3. | NFT fractionalization schema development | Development of fractionalization schema models |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the difference to the previous deliverable 2. | Collection schema development here?

| 4. | NFT lifecycle schema development | Developing schema models for the NFT lifecycle, which includes the ownership, transfer, locking, or fractionalization of NFT |
| 5. | NFT pallet event indexer | Development of the module to monitor the latest block generation via subsquid |
| 6. | Asset pallet event and fractionalization indexer | Development of the module to monitor the pallet NFT actions and NFT fractionalization pallet actions |
| 7. | Integration of subsquid | Using subsquid to get the latest block information |
| 8. | Implementation of APIs | Development of endpoints that can ge used for SDKs request to fetch more details about the NFT lifecycle |
| 9. | Implementation of SDK | Develop SDK to facilitate the user's call to action |
| 10. | NFT indexer module | Index all the data that is scanned by the scanner module and pass it to the database layer. |
| 11. | Design and development of the NFT provenance SDK | A typescript-based SDK that consists of API calls to the database to fetch the NFT lifecycle. |
| 12. | Technical Documentation for the SDK | We will provide a compressive technical document outlining the process of integrating the SDK, available functionality, and data model types of the data that is fetched. |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably be part of 0b. Documentation

Comment on lines +112 to +123
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general, these deliverables are very vague:

  • I'm not sure we need multiple deliverables that are concerned with implementing "schema models". I'd expect that to be part of a module/library/SDK etc. Don't get me wrong - I think it's good that you're doing that (rather than using vanillajs with no custom data structures in the form of types/interfaces/classes, etc.) but I don't think there's a need to break them into deliverables. It's sufficient if you mention it in the spec of a deliverable (e.g. something like the SDK is going to be implemented using TypeScript and we're going to use custom interfaces for X, Y and Z).
  • Not sure what's the difference between 9. | Implementation of SDK and 11. | Design and development of the NFT provenance SDK
  • Not sure what is meant by "facilitate the user's call to action"
  • It'd be helpful to know which technologies and languages are being used in each deliverable.


## Future Plans

- Support the NFTs of Statemint
- Support wasm based NFTs
- Adding capabilities for tracking and tracing fractional ownership of NFTs
- Adding capabilities for tracking locking/unlocking of NFTs

## Additional information

> When you talk about NFTs, do you mean the NFTs pallet, PSP34s, uniques pallet, or EVM-compatible ones?

We will not be focusing currently on the EVM-compatible ones but stick to more Polkadot ecosystem NFT's which are powered mostly by the Uniques Pallet and going forward the NFT's pallet will be used. So this will be a tool for aggregation for NFTs created through both pallets.

> Indexing NFT-related events seem to be a common indexer task. See, for example, https://github.com/emarai/squid-polkadot-psp34-nft-indexing. Why should we fund another, NFT-only indexer?

We have envisioned this project as a more generic use case for our larger project and other projects in the ecosystem. PSP34 and especially the ones mentioned in the link is focused on the Astar network but this SDK can be implemented by any parachain using NFTs in some form or the other. More importantly, this is not going to be just an NFT-only indexer module, we can extend this to re-fungible tokens built on top of these NFTs and to track provenance of the entire asset lifecycle, which includes extending this use case to track fractional ownership of assets in the future.

> Please expand the Ecosystem Fit section to explain who your target audience is and how this project compares to similar, existing ones.

Our target audience is basically the parachains and projects in the Polkadot ecosystem who are working with NFTs and possibly refungibility of NFT's to fungible tokens and make their lives simpler by providing an open source tool to track the entire lifecycle of their assets. Also upcoming parachains like Metaquity Network (ours) and others can use this to build these provenance use cases which will eventually give rise to more effective collaborations between the DeX's and the parachains.
Loading