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 24 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
148 changes: 148 additions & 0 deletions applications/metaquity_nft_provenance_tracker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# 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 using using existing solution for crawling through the blockchain, Currently we are exploring subscan for this solution and these are self-hosted or we will connect to external RPC nodes for fetching the data.
- Middleware layer: Contains the crawlers/plugins through which we can crawl the blockchain and collect information about NFTs and 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.
- API: This layer helps in fetching details of the blockchain from 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.
- 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 command. This module will be essentially integrated at the client side.

Technology stack:
- MongoDB
- Typescript
- Elasticsearch
- JavaScript

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

- **Estimated duration:** 1 month
- **FTE:** 1,5
- **Costs:** 10,000 USD


| Number | Deliverable | Specification |
| -----: | ----------- | ------------- |
| **0a.** | License | Apache 2.0 |
| **0b.** | Documentation | We will provide both readme.md and official docs documentation |
| **0c.** | Testing and Testing Guide | Testing guide will be mentioned in official docs & core unit tests will be provided |
| 1. | Data model definition | Designing and defining the architectural overview of the data model for this application |
Copy link
Collaborator

Choose a reason for hiding this comment

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

This is another research-leaning deliverable that I wouldn't support. Please focus on the deliverables, rather on activities - While I agree that you should have a well-defined model (rather than having non-typed js) I'd expect it the related code do be self-documenting by being clear and expressive and supplement it with inline-code where deemed necessary. Architectural diagrams or model diagrams can make sense here, too, however, I'd expect it to be part of the Documentation (0b.). To conclude, I suggest you remove this deliverable and incorporate it into the "Documentation" deliverable instead.

Copy link
Collaborator

Choose a reason for hiding this comment

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

The mandatory Docker deliverable is still missing here.

| 2. | NFT scanner module | This module will be in middle layer to scan the blockchain for the blocks containing NFT related data from the genesis block and invoke indexer module (We will be indexing only blocks that has NFT related data.)|
Copy link
Collaborator

Choose a reason for hiding this comment

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

The previous, related inline comment still hasn't been addressed.


### Milestone 2

- **Estimated Duration:** 1,5 month
- **FTE:** 1,5
- **Costs:** 10,000 USD


| 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. |
| **0e.** | Article | Add an article covering how to integrate NFT-SDK in a project. |
Copy link
Collaborator

Choose a reason for hiding this comment

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

The mandatory Docker deliverable is still missing here.

| 1. | NFT indexer module | Index all the data that is scanned by the scanner module and pass it to the database layer. |
| 2. | Design and development of the NFT provenance SDK | A typescript-based SDK which consists of API calls to the database to fetch the NFT lifecycle. |
| 3. | Technical Documentation for the SDK | We will provide a technical doc outlining the process of integrating the SDK to other projects. |

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