From c7f48f298132e5a20a7da42a91c9b2ccefc618fa Mon Sep 17 00:00:00 2001 From: Matej yangwao <5887929+yangwao@users.noreply.github.com> Date: Tue, 30 May 2023 14:59:26 +0200 Subject: [PATCH 1/9] Added KodaDot Grants Ecosystem --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 909cb59da8a..e96de8f3139 100644 --- a/README.md +++ b/README.md @@ -327,6 +327,7 @@ Below is a list of other grant and bounty programs in the Polkadot/Substrate eco - [HydraDX Grants and Bounties](https://docs.hydradx.io/new_deal/) - [ink!ubator](https://use.ink/ubator/) - [Interlay Labs Grants Program](https://github.com/interlay/Grants-Program) +- [KodaDot Ecosystem Grants](https://github.com/kodadot/grants) - [Moonbeam Grants Program](https://moonbeam.foundation/grants/) - [OAK’s Developer Grants](https://oak.tech/community/grants/) - [peaq Ecosystem Grant Program](https://www.peaq.network/grant-program) From 57b52e3c6bc416cfcfa081382279912ef64e88ab Mon Sep 17 00:00:00 2001 From: Matej yangwao <5887929+yangwao@users.noreply.github.com> Date: Tue, 25 Jul 2023 13:40:57 +0200 Subject: [PATCH 2/9] Create kodadot_assethub_nft_indexer_statemine_statemint.md --- ...ssethub_nft_indexer_statemine_statemint.md | 247 ++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 applications/kodadot_assethub_nft_indexer_statemine_statemint.md diff --git a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md new file mode 100644 index 00000000000..2647a50dabc --- /dev/null +++ b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md @@ -0,0 +1,247 @@ +# AssetHub NFT Indexer + +- **Team Name:** KodaDot +- **Payment Address:** 1KxzJHoRJHi8EgWVhrGDueeyzg8PyihAvSL3NP6QMcxEve6 +- **[Level](https://github.com/w3f/Grants-Program/tree/master#rooster-level-3):** 3 🐓 + +### Overview + +The AssetHub Indexer is a GraphQL service designed to streamline the interaction with Uniques, NFT non-fungible assets, and fungible assets on AssetHubs (Statemine/Statemint). This service is specifically tailored to serve as a robust data layer for NFT-oriented dApps, leveraging the simplicity of GraphQL and REST API. + +In the current landscape, developers face challenges interacting with Uniques and Assets on Statemine due to the complexity and time-consuming nature of querying fungible and non-fungible assets on AssetHub. AssetHub Indexer aims to address these challenges by providing a user-friendly GraphQL interface, thus reducing the time and effort required to query these assets. + +The key advantages of the AssetHub Indexer include +its focus on ease of use, +versatility for a broad range of use cases, and +its commitment to bringing Statemine utilization & documentation closer to developers. +Furthermore, the AssetHub Indexer is a completely decentralized, open-source solution that respects user privacy by not collecting user data. + +By reducing the time required to query assets and providing a more user-friendly interface, the AssetHub Indexer aims to foster the growth and development of the Web 3.0 ecosystem in Polkadot. + + +### Project Details + +The AssetHub Indexer is a state-of-the-art infrastructure tool designed to address developers' challenges when querying NFTs from the chain. Currently, developers are limited to querying NFTs in batches from RPC nodes, which can be time-consuming and inefficient for customer-facing products. This limitation often results in long waiting times and heavy device data loads. + +To overcome these challenges, we have developed the AssetHub Indexer. This tool leverages the power of GraphQL to provide a more efficient and user-friendly interface for developers. With the AssetHub Indexer, developers can easily query NFTs and build on top of the new [NFTs pallet by Parity](https://github.com/paritytech/substrate/blob/master/frame/nfts/src/lib.rs), opening up a wide range of potential use cases, such as creating [fandom shops](https://fandom.deno.dev) for art. + +Recognizing that many web developers may not have extensive experience with GraphQL, we have also built a TypeScript-based SDK that can be easily imported into any existing project. This SDK simplifies interacting with Uniques and Assets on Statemine, making it more accessible for developers of all skill levels. + +The AssetHub Indexer uses TypeScript and leverages the Squid framework for data processing. It interacts with a Postgres database and provides a GraphQL interface for querying data. The project structure includes directories for generated model/server definitions, server extensions, data type definitions, and mapping modules. It also uses environment variables defined in a .env file or supplied by a shell for configuration. + +Currently, the AssetHub Indexer allows developers to interact with Uniques and Assets on Statemine using GraphQL. The project is designed to be as simple as possible, ensuring all tasks can be done quickly and without extended searching. We aim to reduce the time necessary to query fungible and non-fungible assets on AssetHub, making it easier for developers to build innovative and user-friendly decentralized apps. + +#### Architecture 🏗 + +The architecture of the AssetHub Indexer is designed with simplicity and efficiency in mind, ensuring a seamless interaction with Uniques and Assets on Statemine. + +At the core of our architecture is TypeScript, a statically typed superset of JavaScript that adds optional types to the language. TypeScript ensures robustness and reliability in our codebase, allowing us to catch errors early in the development process and write more maintainable code. + +To handle data processing, we leverage the Squid framework. Squid is a powerful tool allowing us to process and index blockchain data efficiently. It provides a set of utilities for defining and running data processing tasks, making handling complex data processing requirements easier. + +Our project interacts with a Postgres database, a powerful, open-source object-relational database system that uses and extends the SQL language. Postgres provides us with the robustness, scalability, and performance we need to handle large amounts of data. + +![](https://hackmd.io/_uploads/SyLxL56uh.jpg) + +On the architectural level, we have a few layers, as described in the picture above. +We need to obtain the data for the correct function of our indexer. AssetHub indexer combines the SubSquid archive (the pre-indexed storage) and RPC node for the new data. When the indexer obtains a new event, it is automatically processed by the defined handler. As previously mentioned, we processed data stored in the Postgres DB. + +To expose the data to clients, we provide a GraphQL interface. GraphQL is a query language for APIs and a runtime for executing those queries with our existing data. It allows clients to ask for exactly what they need and nothing more, making it easier to evolve and enabling powerful developer tools. + +The project structure is organized into several key directories. The 'src/generated' directory contains model/server definitions created by codegen. The 'src/server-extension' directory contains a module with custom type-graphql-based resolvers. The 'src/types' directory contains data type definitions for chain events and extrinsics created by typegen. The 'src/mappings' directory contains the mapping module. The 'lib' directory contains compiled js files, reflecting the structure of the 'src' directory. + +Finally, the project configures environment variables, defined in a .env file or supplied by a shell. This approach allows us to easily manage and change the configuration without altering the codebase. + +The second state-of-the-art is our Client-first SDK called Uniquery. As we can see in the picture below, the only thing that client applications need to do is import the Uniquery package via ESM/CJS (Javascript targets). Once we have the Uniquery package, we can access query builder implementation (such as `client.getCollectionById(id)`). Additionally, because many developers are familiar with REST API, we build a similar fetch strategy without needing a third party (every client fetches data directly from SubSquid). The REST looks like this: `$fetch(/collectionById/${id}).` + +![](https://hackmd.io/_uploads/HkMKagJt3.png) + +#### Technology Stack 💻 + +- TypeScript +- Node.js +- Docker +- SubSquid +- Postgres +- GraphQL + + +### Ecosystem Fit + +The AssetHub Indexer is a crucial addition to the Polkadot and Substrate SDK ecosystem. It addresses the challenges developers often encounter when building on top of runtime pallets, particularly when interacting with Uniques, NFTs, and Assets on Statemine. The AssetHub Indexer provides a comprehensive NFT-oriented data solution, simplifying the development process and enhancing the efficiency of dApps within the ecosystem. + +Our solution stands out within the Polkadot and Substrate SDK ecosystem due to its user-friendly GraphQL interface and TypeScript-based SDK. These features streamline interaction with Uniques and Assets on Statemine, reducing the complexity of querying these assets. + +Moreover, the AssetHub Indexer is designed to be versatile, supporting a broad range of use cases. Developers can also leverage our [sub-scaffold UI](https://github.com/kodadot/sub-scaffold) template to bootstrap their projects quickly. This template, a forkable Substrate dev stack focused on rapid product iterations, accelerates the development process and allows developers to focus on creating innovative and user-friendly dApps, rather than getting bogged down in the initial setup. + +Our target audience for this proposal includes Web3 projects and blockchain developers, whether they are just starting out or already established within the Polkadot and Substrate SDK ecosystem. We believe the AssetHub Indexer can provide significant value to these developers, enabling them to build more efficient and user-friendly dApps like [KodaDot](https://kodadot.xyz/). + +AssetHub also plays significant for the [KodaDot](https://kodadot.xyz/) NFT marketplace, which is one of the main consumers for this indexer. Thanks to that, developers can find real-world examples of how to effectively make GraphQL queries and learn more about using Uniquery. + + +Regarding competition within the Polkadot and Substrate SDK ecosystem, the AssetHub Indexer differentiates itself through its focus on NFT-oriented data solutions, user-friendly interface, and commitment to simplifying the development process. Including the sub-scaffold UI template further sets it apart, providing developers with a ready-to-use foundation for their projects. Moreover, the AssetHub Indexer is already being utilized by [Subsocial](https://twitter.com/SubsocialChain/status/1674435226334904320) and KodaDot, demonstrating its practical application and effectiveness. We plan to further promote the indexer within the ecosystem to onboard new developers and explore new solutions. These factors position the AssetHub Indexer as a unique and valuable tool within the Polkadot and Substrate SDK ecosystem, ultimately serving as a Common Good solution. + + +## Team :busts_in_silhouette: + +### Team members (In order of joining time) + +- Matej Nemček - Project Lead +- Viktor Valaštín - Developer + +### Contact 📞 + +- **Contact Name:** Matej Nemček +- **Contact Email:** matej.nemcek@geefu.net + +### Legal Structure + +- **Registered Address:** Proletarska cesta 4, 1000 Ljubljana, Slovenia, Europe +- **Registered Legal Entity:** GenArt, Matej Nemček s.p. + + +### Team's experience + +**Matej Nemček** is the Founder and CEO of [KodaDot](https://kodadot.xyz/). He has been instrumental in the growth and development of KodaDot, leading the team to create the best end-user experience on the Asset hub. Matej's leadership and vision have been pivotal in transforming KodaDot into a collaborative hub where creators, developers, and community members work collectively for decision-making. + +**Viktor Valaštín**, also known as Viki Val, is the Co-founder of KodaDot. He is responsible for the technical aspects of the project. Viktor has been working on implementing MoonBeam and MoonRiver NFT EVM smart contracts and enabling read-only access to existing components for seamless end-user interaction. His technical expertise has been crucial in successfully launching the Basilisk NFT Marketplace pallet in the Fall of 2022. + +Matej and Viktor are strongly committed to the Polkadot ecosystem and have demonstrated their ability to deliver high-quality, impactful projects. They bring a wealth of knowledge and experience to the AssetHub Indexer project. Their work has earned KodaDot the number one rank as a decentralized dapp in the Polkadot ecosystem on [Github](https://github.com/topics/polkadot). You can read more about their work and KodaDot's contributions to the Polkadot ecosystem on the [Polkadot Wiki](https://wiki.polkadot.network/docs/learn-nft-projects#kodadot). + + +### Team Code Repos + +- [https://github.com/kodadot/stick](https://github.com/kodadot/stick) +- [https://github.com/kodadot/nft-gallery](https://github.com/kodadot/nft-gallery) + +#### Team GitHub accounts 🧑‍💻 + +- https://github.com/vikiival Viktor Valaštín +- https://github.com/yangwao Matej Nemček + + +### Team LinkedIn Profiles 🧑‍🎓 + +- [https://linkedin.com/in/mnemcek/](Matej Nemcek) +- [linkedin.com/in/vikival/](Viktor Valastin) + + +## Development Status :open_book: + +- [https://github.com/kodadot/stick](https://github.com/kodadot/stick) This is the repo for AssetHub Indexer. +- [https://github.com/kodadot/uniquery](https://github.com/kodadot/uniquery) This is the repo for SDK. + +## Development Roadmap :nut_and_bolt: + +### AssetHub Indexer Implementation + +- **Estimated duration:** 3 months ⌛️ +- **FTE:** 2 FTE +- **Costs:** 50,000 USD 💰 + + +| Sequence | Deliverable | Description | +|----------|-----------------------------------------------------|---------------------------------------------------------------------------------------------------------------| +| 0a. | Licensing | MIT License will be applicable. | +| 0b. | Documentation | Comprehensive inline code documentation and an explicit README file to guide the project setup and execution.| +| 0c. | Test Guidelines | Testing will cover major functionality with unit tests and provide a guide for executing these tests.| +| 0d. | Docker Integration | A Dockerfile will enable the project to run within a Docker container. | +| 1. | Backward Compatibility Maintenance | Ensuring backward compatibility with current Uniques v1. | +| 1a. | Collection Schema Development | Development of a GraphQL schema entity that represents the collection. | +| 1b. | NFT Schema Development | Formulation and creation of a GraphQL schema entity representing Non-fungible tokens. | +| 2. | Forward Support Implementation | Future support included for NFT pallets comprising soulbound NFTs. | +| 3a. | Unique v1.1 List Handler | Implement a handler to index set pricing from the chain. | +| 3b. | Unique v1.1 Buy Event | Handler designed to index buy events from the chain. | +| 4a. | NFT Pallet CREATE Handler | Handler created for indexing CREATE event from the chain. | +| 4b. | NFT Pallet MINT Event | Implement a handler to index MINT events from the chain. | +| 4c. | NFT Pallet BUY Event | Development of an indexing handler for BUY events from the chain. | +| 4d. | NFT Pallet LIST Handler | Deployment of a handler for indexing LIST events from the chain. | +| 4e. | NFT Pallet SEND Handler | Deployment of a handler for indexing SEND events from the chain. | +| 4f. | NFT Pallet BURN Event | Introduction of a handler to index BURN events from the chain. | +| 5. | Atomic Swaps Schema Development | Creating and designing a GraphQL schema entity to represent Atomic Swaps. | +| 6a. | Atomic Swaps CREATE Handler | Deployment of a handler for indexing creates swap events from the chain. | +| 6b. | Atomic Swaps CANCEL Event | Implement a handler to index cancel swap events from the chain. | +| 6c. | Atomic Swaps CLAIM Event | Development of a handler to index claim swap events from the chain. | +| 6d. | Atomic Swaps with Surcharge Handler | creation of an indexing handler for swap events with a surcharge from the chain. | +| 7a. | On-chain Attributes Schema Design | Development and design of a GraphQL schema entity representing on-chain attributes. | +| 7b. | On-chain Attributes CREATE Handler | Implementing a handler to index the creation of an attribute for collection from the chain. | +| 7c. | On-chain Attributes CREATE for NFT | development of a handler to index the creation of an attribute for NFT from the chain. | +| 7d. | On-chain Attributes CLEAR Handler | Developing a handler to index clearance of the attribute for the collection from the chain. | +| 7e. | On-chain Attributes CLEAR for NFT | Implementation of the indexing handler to clear an attribute for NFT from the chain. | +| 7f. | Metadata CREATE Handler | Deployment of an indexing handler to set metadata for the collection from the chain. | +| 7g. | Metadata CREATE for NFT | Creating an indexing handler to set metadata for NFT from the chain. | +| 7h. | Metadata CLEAR Handler | Developing a handler to index clearance of metadata for the collection from the chain. | +| 7i. | Metadata CLEAR for NFT | Introducing a handler for indexing clearance of metadata for NFT from the chain. | +| 7j. | Metadata IPFS Integration Handler | Design a handler to retrieve IPFS Metadata from the IPFS network. | +| 7l. | Metadata Schema Development | Creating and designing a GraphQL schema entity representing metadata. | +| 8a. | NFT Royalties Schema Integration |Design and include royalty support within the GraphQL schema. | +| 8b. | NFT Royalties Addition Handler | Implement a handler to add royalty into NFT. | +| 8c. | NFT Royalties PAYOUT Handler |Creation of handler to index royalty payout events from the chain. | +| 9. | Fungible Assets Schema Creation |Design and formulation of a GraphQL schema entity representing fungible assets. | +| 9. | Fungible Assets Force Creation |Handlers will be developed to add system tokens like KSM/DOT into fungible assets. | +| 9. | Fungible Assets CREATE Event |An event handler for indexing the creation of a fungible event from a chain, such as (RMRK/USDT) will be developed.| +| 9. | Metadata Support for Fungible Assets | Implement a handler to add metadata to a fungible asset event from the chain. | +| 9c. | Fungible Asset Allowlist Setup |Setting up allows list-based indexing of fungible assets. | +| 10a. | Data Views Development |Construction of data views for efficient access to indexed data. | +| 10b. | Asset Caching Layer | Development of a caching layer for faster performance. | +| 10c. | Implementing Metadata Caching Layer |Develop and retry IPFS metadata if un-indexed by 7j. | +| 11. | Transfer of Collection Ownership |Incorporate functionality to transfer collection ownership. | +| 12. | Altering Collection Permissions |Provide functionality to alter permissions per collection. | +| 13a. | Collection Type Schema Creation |Design and include support for various collection types (public, holder, issuer) in the GraphQL schema. | +| 13b. | Collection Type Handler Creation |Develop a handler to incorporate collection type into the collection. | +| 13c. | Update Minting Settings |Implement functionality for updating minting settings per collection. | +| 13d. | Introduction of Standalone Collection Schema | Design and add support for standalone collections (without owner) in the GraphQL schema. | +| 13e. | Standalone Collection Handler Creation |Deploy a handler to add standalone collections (without owner) per collection. | +| 14a. | Allocation of Initial Storage Bandwidth |Provide an initial bandwidth budget for IPFS item fetching (Payment is based on bandwidth scale). | +| 14b. | Initial Storage Budget Allocation |Allocate initial storage budget of $5,000 (Equivalent to 100GB storage at $5 per GB) for initial items minting, allowing for future data expansion.| +| 15a. | API Implementation: collectionById |API to fetch collection using its id. | +| 15b. | API Implementation: collectionListByIssuer |API to fetch collections with a specified address as the issuer (creator). | +| 15c. | API Implementation: collectionListByName |API to fetch collections containing the specified name. | +| 15d. | API Implementation: collectionListByOwner |API to fetch collections owned by the specified address. | +| 15e. | API Implementation: eventList |API that returns all events. | +| 15f. | API Implementation: eventListByAddress |API that yields events bound to a specified address. | +| 15g. | API Implementation: eventListByCollectionId |API that generates events for NFTs belonging to the specified collection. | +| 15h. | API Implementation: eventListByInteraction |API fetching events by specific interaction. | +| 15i. | API Implementation: eventListByItemId |API that fetches events associated with the specified NFT id. | +| 15j. | API Implementation: itemById |API that fetches a NFT using its id. | +| 15k. | API Implementation: itemListByCollectionId |API fetching NFTs from a collection with specified id. | +| 15l. | API Implement: itemListByCollectionIdAndOwner |API to fetch NFTs from a collection with a specific id and owned by a specified address. | +| 15m. | API Implement: itemListByCollectionIdList |API to retrieve a list of NFTs from specified collections. | +| 15n. | API Implementation: itemListByIssuer |API to fetch NFTs where the issuer (creator) is equal to the specified address. | +| 15o. | API Implementation: itemListByName |API to retrieve NFTs containing the specified name. | +| 15p. | API Implementation: itemListByMetadataId |API to fetch NFTs with specified metadata uri. | +| 15r. | API Implement: itemListByMetadataIdMatch |API to fetch NFTs with metadata matching the provided CID. | +| 15s. | API Implementation: itemListByOwner |API fetching NFTs owned by the specified address. | + +## Future Plans 🔭 + +Upon the successful deployment of the AssetHub Indexer, our team plans to continue refining and expanding its capabilities in response to user feedback and technological advancements. We have outlined several key enhancements and upgrades that we aim to implement: + +1. Development of an explorer to facilitate navigation within the NFT ecosystem. +2. Introduction of collections functionality for systematic organization of NFTs. +3. Creation of view modules to visually present NFT details. +4. Establishment of user profiles to enable personalized user interfaces. +5. Incorporation of constituent elements for individual NFT representation. +6. Implement action components for functionalities like LIST, SEND, BUY, MINT, BURN, and Atomic Swap. +6. Development of comprehensive statistical representations and analytics mechanisms. +8. Introduction of rankings to highlight top-performing users, collections, or items. +9. Personalization of the user interface to enhance the user experience. +10. Maintenance of compatibility with runtime upgrades and changes in the Kusama/Statemine ecosystem. +11. Regular updates to keep up with Substrate for continuous system enhancement. +12. Management of upgrades to parachain runtime versions, including indexer enhancements and related costs. + +## Future Plans + +Please include here + +- how you intend to use, enhance, promote and support your project in the short term, and +- the team's long-term plans and intentions in relation to it. + +## Additional Information ➕ + + +The AssetHub Indexer project continues our team's various projects and implementations in the Polkadot ecosystem. We have already attracted interest from developers within the Polkadot and Kusama ecosystems. Notably, we have in 2019 previously received a grant from the W3F for creating Vue.js UI utilities, components, and libraries, details of which can be found [here](https://github.com/w3f/General-Grants-Program/blob/master/grants/speculative/Vuejs_ui-components.md). + +This previous grant allowed us to reimplement keyring into Vue.js & TypeScript, demonstrating our hands-on experience with the polkadot.js.org/common utilities. The result of this work can be seen in the [web-based Subkey](https://subkey.netlify.com/) tool. + +We learned about the Grants Program through a personal recommendation. We believe that our project aligns well with the program's goals, and we are excited about the potential to further contribute to the Polkadot ecosystem. From 85507dc7249e961ac222d00726f65d45701c98f2 Mon Sep 17 00:00:00 2001 From: Matej yangwao <5887929+yangwao@users.noreply.github.com> Date: Tue, 25 Jul 2023 13:47:10 +0200 Subject: [PATCH 3/9] Update markdown --- ...kodadot_assethub_nft_indexer_statemine_statemint.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md index 2647a50dabc..09b7ebbdc8e 100644 --- a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md +++ b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md @@ -116,14 +116,14 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon #### Team GitHub accounts 🧑‍💻 -- https://github.com/vikiival Viktor Valaštín -- https://github.com/yangwao Matej Nemček +- [Viktor Valaštín](https://github.com/vikiival) +- [Matej Nemček](https://github.com/yangwao) ### Team LinkedIn Profiles 🧑‍🎓 -- [https://linkedin.com/in/mnemcek/](Matej Nemcek) -- [linkedin.com/in/vikival/](Viktor Valastin) +- [Matej Nemcek](https://linkedin.com/in/mnemcek/) +- [Viktor Valastin](https://linkedin.com/in/vikival/) ## Development Status :open_book: @@ -136,7 +136,7 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon ### AssetHub Indexer Implementation - **Estimated duration:** 3 months ⌛️ -- **FTE:** 2 FTE +- **FTE:** 4 FTE - **Costs:** 50,000 USD 💰 From 7c3cc45fb4f682e5da237f9b8149110ec5fcb22c Mon Sep 17 00:00:00 2001 From: Matej yangwao <5887929+yangwao@users.noreply.github.com> Date: Wed, 6 Sep 2023 12:36:06 +0200 Subject: [PATCH 4/9] Milestone1 - KodaDot Assets Hub --- ...ssethub_nft_indexer_statemine_statemint.md | 49 +++---------------- 1 file changed, 6 insertions(+), 43 deletions(-) diff --git a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md index 09b7ebbdc8e..793318e3bc2 100644 --- a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md +++ b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md @@ -2,7 +2,7 @@ - **Team Name:** KodaDot - **Payment Address:** 1KxzJHoRJHi8EgWVhrGDueeyzg8PyihAvSL3NP6QMcxEve6 -- **[Level](https://github.com/w3f/Grants-Program/tree/master#rooster-level-3):** 3 🐓 +- **[Level](https://github.com/w3f/Grants-Program#baby_chick-level-2):** 2 ### Overview @@ -136,8 +136,8 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon ### AssetHub Indexer Implementation - **Estimated duration:** 3 months ⌛️ -- **FTE:** 4 FTE -- **Costs:** 50,000 USD 💰 +- **FTE:** 2 FTE +- **Costs:** 30,000 USD 💰 | Sequence | Deliverable | Description | @@ -158,11 +158,6 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon | 4d. | NFT Pallet LIST Handler | Deployment of a handler for indexing LIST events from the chain. | | 4e. | NFT Pallet SEND Handler | Deployment of a handler for indexing SEND events from the chain. | | 4f. | NFT Pallet BURN Event | Introduction of a handler to index BURN events from the chain. | -| 5. | Atomic Swaps Schema Development | Creating and designing a GraphQL schema entity to represent Atomic Swaps. | -| 6a. | Atomic Swaps CREATE Handler | Deployment of a handler for indexing creates swap events from the chain. | -| 6b. | Atomic Swaps CANCEL Event | Implement a handler to index cancel swap events from the chain. | -| 6c. | Atomic Swaps CLAIM Event | Development of a handler to index claim swap events from the chain. | -| 6d. | Atomic Swaps with Surcharge Handler | creation of an indexing handler for swap events with a surcharge from the chain. | | 7a. | On-chain Attributes Schema Design | Development and design of a GraphQL schema entity representing on-chain attributes. | | 7b. | On-chain Attributes CREATE Handler | Implementing a handler to index the creation of an attribute for collection from the chain. | | 7c. | On-chain Attributes CREATE for NFT | development of a handler to index the creation of an attribute for NFT from the chain. | @@ -183,35 +178,10 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon | 9. | Metadata Support for Fungible Assets | Implement a handler to add metadata to a fungible asset event from the chain. | | 9c. | Fungible Asset Allowlist Setup |Setting up allows list-based indexing of fungible assets. | | 10a. | Data Views Development |Construction of data views for efficient access to indexed data. | -| 10b. | Asset Caching Layer | Development of a caching layer for faster performance. | -| 10c. | Implementing Metadata Caching Layer |Develop and retry IPFS metadata if un-indexed by 7j. | +| 10b. | Implementing Metadata Caching Layer |Develop and retry IPFS metadata if un-indexed by 7j. | | 11. | Transfer of Collection Ownership |Incorporate functionality to transfer collection ownership. | -| 12. | Altering Collection Permissions |Provide functionality to alter permissions per collection. | -| 13a. | Collection Type Schema Creation |Design and include support for various collection types (public, holder, issuer) in the GraphQL schema. | -| 13b. | Collection Type Handler Creation |Develop a handler to incorporate collection type into the collection. | -| 13c. | Update Minting Settings |Implement functionality for updating minting settings per collection. | -| 13d. | Introduction of Standalone Collection Schema | Design and add support for standalone collections (without owner) in the GraphQL schema. | -| 13e. | Standalone Collection Handler Creation |Deploy a handler to add standalone collections (without owner) per collection. | -| 14a. | Allocation of Initial Storage Bandwidth |Provide an initial bandwidth budget for IPFS item fetching (Payment is based on bandwidth scale). | -| 14b. | Initial Storage Budget Allocation |Allocate initial storage budget of $5,000 (Equivalent to 100GB storage at $5 per GB) for initial items minting, allowing for future data expansion.| -| 15a. | API Implementation: collectionById |API to fetch collection using its id. | -| 15b. | API Implementation: collectionListByIssuer |API to fetch collections with a specified address as the issuer (creator). | -| 15c. | API Implementation: collectionListByName |API to fetch collections containing the specified name. | -| 15d. | API Implementation: collectionListByOwner |API to fetch collections owned by the specified address. | -| 15e. | API Implementation: eventList |API that returns all events. | -| 15f. | API Implementation: eventListByAddress |API that yields events bound to a specified address. | -| 15g. | API Implementation: eventListByCollectionId |API that generates events for NFTs belonging to the specified collection. | -| 15h. | API Implementation: eventListByInteraction |API fetching events by specific interaction. | -| 15i. | API Implementation: eventListByItemId |API that fetches events associated with the specified NFT id. | -| 15j. | API Implementation: itemById |API that fetches a NFT using its id. | -| 15k. | API Implementation: itemListByCollectionId |API fetching NFTs from a collection with specified id. | -| 15l. | API Implement: itemListByCollectionIdAndOwner |API to fetch NFTs from a collection with a specific id and owned by a specified address. | -| 15m. | API Implement: itemListByCollectionIdList |API to retrieve a list of NFTs from specified collections. | -| 15n. | API Implementation: itemListByIssuer |API to fetch NFTs where the issuer (creator) is equal to the specified address. | -| 15o. | API Implementation: itemListByName |API to retrieve NFTs containing the specified name. | -| 15p. | API Implementation: itemListByMetadataId |API to fetch NFTs with specified metadata uri. | -| 15r. | API Implement: itemListByMetadataIdMatch |API to fetch NFTs with metadata matching the provided CID. | -| 15s. | API Implementation: itemListByOwner |API fetching NFTs owned by the specified address. | +| 12a. | Allocation of Initial Storage Bandwidth |Provide an initial bandwidth budget for IPFS item fetching (Payment is based on bandwidth scale). | +| 13b. | Initial Storage Budget Allocation |Allocate initial storage budget of $5,000 (Equivalent to 100GB storage at $5 per GB) for initial items minting, allowing for future data expansion.| ## Future Plans 🔭 @@ -230,13 +200,6 @@ Upon the successful deployment of the AssetHub Indexer, our team plans to contin 11. Regular updates to keep up with Substrate for continuous system enhancement. 12. Management of upgrades to parachain runtime versions, including indexer enhancements and related costs. -## Future Plans - -Please include here - -- how you intend to use, enhance, promote and support your project in the short term, and -- the team's long-term plans and intentions in relation to it. - ## Additional Information ➕ From 87cb2ef004b10cef5f10d60a3840d80ccd473f12 Mon Sep 17 00:00:00 2001 From: Matej yangwao <5887929+yangwao@users.noreply.github.com> Date: Wed, 6 Sep 2023 13:18:48 +0200 Subject: [PATCH 5/9] formatting --- .../kodadot_assethub_nft_indexer_statemine_statemint.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md index 793318e3bc2..9a5eafedf04 100644 --- a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md +++ b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md @@ -128,13 +128,13 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon ## Development Status :open_book: -- [https://github.com/kodadot/stick](https://github.com/kodadot/stick) This is the repo for AssetHub Indexer. -- [https://github.com/kodadot/uniquery](https://github.com/kodadot/uniquery) This is the repo for SDK. +- [github.com/kodadot/stick/milestone/1](https://github.com/kodadot/stick/milestone/1) - Milestone 1 track +- [github.com/kodadot/stick](https://github.com/kodadot/stick) This is the repo for AssetHub Indexer. +- [github.com/kodadot/uniquery](https://github.com/kodadot/uniquery) This is the repo for SDK. ## Development Roadmap :nut_and_bolt: -### AssetHub Indexer Implementation - +## Milestone 1 - AssetHub Indexer Implementation first part - **Estimated duration:** 3 months ⌛️ - **FTE:** 2 FTE - **Costs:** 30,000 USD 💰 From c8c41e6171e4fd63d3919891add82b7e81089bea Mon Sep 17 00:00:00 2001 From: Matej yangwao <5887929+yangwao@users.noreply.github.com> Date: Tue, 12 Sep 2023 13:53:19 +0200 Subject: [PATCH 6/9] removing residues from first version --- .../kodadot_assethub_nft_indexer_statemine_statemint.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md index 9a5eafedf04..7016ab3f3c9 100644 --- a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md +++ b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md @@ -149,7 +149,6 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon | 1. | Backward Compatibility Maintenance | Ensuring backward compatibility with current Uniques v1. | | 1a. | Collection Schema Development | Development of a GraphQL schema entity that represents the collection. | | 1b. | NFT Schema Development | Formulation and creation of a GraphQL schema entity representing Non-fungible tokens. | -| 2. | Forward Support Implementation | Future support included for NFT pallets comprising soulbound NFTs. | | 3a. | Unique v1.1 List Handler | Implement a handler to index set pricing from the chain. | | 3b. | Unique v1.1 Buy Event | Handler designed to index buy events from the chain. | | 4a. | NFT Pallet CREATE Handler | Handler created for indexing CREATE event from the chain. | @@ -180,8 +179,7 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon | 10a. | Data Views Development |Construction of data views for efficient access to indexed data. | | 10b. | Implementing Metadata Caching Layer |Develop and retry IPFS metadata if un-indexed by 7j. | | 11. | Transfer of Collection Ownership |Incorporate functionality to transfer collection ownership. | -| 12a. | Allocation of Initial Storage Bandwidth |Provide an initial bandwidth budget for IPFS item fetching (Payment is based on bandwidth scale). | -| 13b. | Initial Storage Budget Allocation |Allocate initial storage budget of $5,000 (Equivalent to 100GB storage at $5 per GB) for initial items minting, allowing for future data expansion.| + ## Future Plans 🔭 From 63b94c2d0721334be070d1960e4f6327140e4a61 Mon Sep 17 00:00:00 2001 From: Viki Val Date: Wed, 20 Sep 2023 10:01:55 +0100 Subject: [PATCH 7/9] =?UTF-8?q?=F0=9F=92=B0=20define=20to=20use=20arrowsqu?= =?UTF-8?q?id=20and=20update=20final=20price?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kodadot_assethub_nft_indexer_statemine_statemint.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md index 7016ab3f3c9..73d5872f093 100644 --- a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md +++ b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md @@ -27,7 +27,7 @@ To overcome these challenges, we have developed the AssetHub Indexer. This tool Recognizing that many web developers may not have extensive experience with GraphQL, we have also built a TypeScript-based SDK that can be easily imported into any existing project. This SDK simplifies interacting with Uniques and Assets on Statemine, making it more accessible for developers of all skill levels. -The AssetHub Indexer uses TypeScript and leverages the Squid framework for data processing. It interacts with a Postgres database and provides a GraphQL interface for querying data. The project structure includes directories for generated model/server definitions, server extensions, data type definitions, and mapping modules. It also uses environment variables defined in a .env file or supplied by a shell for configuration. +The AssetHub Indexer uses TypeScript and leverages the Squid framework (ArrowSquid) for data processing. It interacts with a Postgres database and provides a GraphQL interface for querying data. The project structure includes directories for generated model/server definitions, server extensions, data type definitions, and mapping modules. It also uses environment variables defined in a .env file or supplied by a shell for configuration. Currently, the AssetHub Indexer allows developers to interact with Uniques and Assets on Statemine using GraphQL. The project is designed to be as simple as possible, ensuring all tasks can be done quickly and without extended searching. We aim to reduce the time necessary to query fungible and non-fungible assets on AssetHub, making it easier for developers to build innovative and user-friendly decentralized apps. @@ -37,7 +37,7 @@ The architecture of the AssetHub Indexer is designed with simplicity and efficie At the core of our architecture is TypeScript, a statically typed superset of JavaScript that adds optional types to the language. TypeScript ensures robustness and reliability in our codebase, allowing us to catch errors early in the development process and write more maintainable code. -To handle data processing, we leverage the Squid framework. Squid is a powerful tool allowing us to process and index blockchain data efficiently. It provides a set of utilities for defining and running data processing tasks, making handling complex data processing requirements easier. +To handle data processing, we leverage the ArrowSquid framework. ArrowSquid is a powerful tool allowing us to process and index blockchain data efficiently. It provides a set of utilities for defining and running data processing tasks, making handling complex data processing requirements easier. Our project interacts with a Postgres database, a powerful, open-source object-relational database system that uses and extends the SQL language. Postgres provides us with the robustness, scalability, and performance we need to handle large amounts of data. @@ -61,7 +61,7 @@ The second state-of-the-art is our Client-first SDK called Uniquery. As we can s - TypeScript - Node.js - Docker -- SubSquid +- SubSquid (ArrowSquid for Substrate) - Postgres - GraphQL @@ -137,7 +137,7 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon ## Milestone 1 - AssetHub Indexer Implementation first part - **Estimated duration:** 3 months ⌛️ - **FTE:** 2 FTE -- **Costs:** 30,000 USD 💰 +- **Costs:** 25,000 USD 💰 | Sequence | Deliverable | Description | From c3f8b4d4908a3817a8b9a535356acfb64b1b8a89 Mon Sep 17 00:00:00 2001 From: Viki Val Date: Wed, 27 Sep 2023 14:03:05 +0200 Subject: [PATCH 8/9] :memo: unify deliverables per assethub indexer --- ...ssethub_nft_indexer_statemine_statemint.md | 62 +++++++++---------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md index 73d5872f093..0cecf8225c2 100644 --- a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md +++ b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md @@ -134,10 +134,17 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon ## Development Roadmap :nut_and_bolt: +### Overview + +- **Estimated duration:** 3 months ⌛️ +- **FTE:** 2 FTE +- **Costs:** 30,000 USD 💰 + + ## Milestone 1 - AssetHub Indexer Implementation first part - **Estimated duration:** 3 months ⌛️ - **FTE:** 2 FTE -- **Costs:** 25,000 USD 💰 +- **Costs:** 30,000 USD 💰 | Sequence | Deliverable | Description | @@ -146,39 +153,30 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon | 0b. | Documentation | Comprehensive inline code documentation and an explicit README file to guide the project setup and execution.| | 0c. | Test Guidelines | Testing will cover major functionality with unit tests and provide a guide for executing these tests.| | 0d. | Docker Integration | A Dockerfile will enable the project to run within a Docker container. | -| 1. | Backward Compatibility Maintenance | Ensuring backward compatibility with current Uniques v1. | +| 1. | Backward Compatibility Maintenance | Ensuring backward compatibility with current Uniques v1. | | 1a. | Collection Schema Development | Development of a GraphQL schema entity that represents the collection. | | 1b. | NFT Schema Development | Formulation and creation of a GraphQL schema entity representing Non-fungible tokens. | -| 3a. | Unique v1.1 List Handler | Implement a handler to index set pricing from the chain. | -| 3b. | Unique v1.1 Buy Event | Handler designed to index buy events from the chain. | -| 4a. | NFT Pallet CREATE Handler | Handler created for indexing CREATE event from the chain. | -| 4b. | NFT Pallet MINT Event | Implement a handler to index MINT events from the chain. | -| 4c. | NFT Pallet BUY Event | Development of an indexing handler for BUY events from the chain. | -| 4d. | NFT Pallet LIST Handler | Deployment of a handler for indexing LIST events from the chain. | -| 4e. | NFT Pallet SEND Handler | Deployment of a handler for indexing SEND events from the chain. | -| 4f. | NFT Pallet BURN Event | Introduction of a handler to index BURN events from the chain. | -| 7a. | On-chain Attributes Schema Design | Development and design of a GraphQL schema entity representing on-chain attributes. | -| 7b. | On-chain Attributes CREATE Handler | Implementing a handler to index the creation of an attribute for collection from the chain. | -| 7c. | On-chain Attributes CREATE for NFT | development of a handler to index the creation of an attribute for NFT from the chain. | -| 7d. | On-chain Attributes CLEAR Handler | Developing a handler to index clearance of the attribute for the collection from the chain. | -| 7e. | On-chain Attributes CLEAR for NFT | Implementation of the indexing handler to clear an attribute for NFT from the chain. | -| 7f. | Metadata CREATE Handler | Deployment of an indexing handler to set metadata for the collection from the chain. | -| 7g. | Metadata CREATE for NFT | Creating an indexing handler to set metadata for NFT from the chain. | -| 7h. | Metadata CLEAR Handler | Developing a handler to index clearance of metadata for the collection from the chain. | -| 7i. | Metadata CLEAR for NFT | Introducing a handler for indexing clearance of metadata for NFT from the chain. | -| 7j. | Metadata IPFS Integration Handler | Design a handler to retrieve IPFS Metadata from the IPFS network. | -| 7l. | Metadata Schema Development | Creating and designing a GraphQL schema entity representing metadata. | -| 8a. | NFT Royalties Schema Integration |Design and include royalty support within the GraphQL schema. | -| 8b. | NFT Royalties Addition Handler | Implement a handler to add royalty into NFT. | -| 8c. | NFT Royalties PAYOUT Handler |Creation of handler to index royalty payout events from the chain. | -| 9. | Fungible Assets Schema Creation |Design and formulation of a GraphQL schema entity representing fungible assets. | -| 9. | Fungible Assets Force Creation |Handlers will be developed to add system tokens like KSM/DOT into fungible assets. | -| 9. | Fungible Assets CREATE Event |An event handler for indexing the creation of a fungible event from a chain, such as (RMRK/USDT) will be developed.| -| 9. | Metadata Support for Fungible Assets | Implement a handler to add metadata to a fungible asset event from the chain. | -| 9c. | Fungible Asset Allowlist Setup |Setting up allows list-based indexing of fungible assets. | +| 2. | Unique v1.1 Handlers | Implement a handlers to index buy, set_price events from the chain. | +| 3. | NFT Pallet Handlers | Handler created for indexing create, mint, buy, set_price, transfer, burn events from the chain. | +| 4a. | On-chain Attributes Schema Design | Development and design of a GraphQL schema entity representing on-chain attributes. | +| 4b. | On-chain Attributes Handlers | Implementing a four handlers to index the creation and deletion of metadata set for collection and NFT from the chain. | +| 5a. | Metadata Schema Development | Creating and designing a GraphQL schema entity representing metadata. | +| 5b. | Metadata Handlers | Implementing a four handlers to index the creation and deletion of an attribute for collection and NFT from the chain. | +| 5c. | Metadata IPFS Integration Handler | Design a handler to retrieve IPFS Metadata from the IPFS network. | +| 5d. | Metadata IPFS Unification Handler | Design and integrate the library to uniform IPFS metadata into one format (OpenSea,TZIP-16,ERC-5773, FXhash) | +| 6a. | NFT Royalties Schema Integration | Design and include royalty support within the GraphQL schema. | +| 6b. | NFT Royalties Addition Handler | Implement a handler to add royalty into NFT. | +| 6c. | NFT Royalties PAYOUT Handler |Creation of handler to index royalty payout events from the chain. | +| 7a. | Fungible Assets Schema Creation |Design and formulation of a GraphQL schema entity representing fungible assets. | +| 7b. | Fungible Assets Force Creation |Handlers will be developed to add system tokens like KSM/DOT into fungible assets. | +| 7c. | Fungible Assets CREATE Event |An event handler for indexing the creation of a fungible event from a chain, such as (RMRK/USDT) will be developed.| +| 7d. | Metadata Support for Fungible Assets | Implement a handler to add metadata to a fungible asset event from the chain. | +| 7e. | Fungible Asset Allowlist Setup |Setting up allows list-based indexing of fungible assets. | | 10a. | Data Views Development |Construction of data views for efficient access to indexed data. | -| 10b. | Implementing Metadata Caching Layer |Develop and retry IPFS metadata if un-indexed by 7j. | -| 11. | Transfer of Collection Ownership |Incorporate functionality to transfer collection ownership. | +| 10b. | Implementing Metadata Caching Layer |Develop and retry IPFS metadata if un-indexed by Metadata IPFS Integration Handler. | +| 11a. | Transfer of Collection Ownership |Incorporate functionality to transfer collection ownership. | +| 12a. | Collection settings Schema Design | Development and design of a GraphQL schema entity representing Collection settings | +| 12b. | Collection settings handler | Implement a handler to add collection settings into data | ## Future Plans 🔭 @@ -193,7 +191,7 @@ Upon the successful deployment of the AssetHub Indexer, our team plans to contin 6. Implement action components for functionalities like LIST, SEND, BUY, MINT, BURN, and Atomic Swap. 6. Development of comprehensive statistical representations and analytics mechanisms. 8. Introduction of rankings to highlight top-performing users, collections, or items. -9. Personalization of the user interface to enhance the user experience. +7. Personalization of the user interface to enhance the user experience. 10. Maintenance of compatibility with runtime upgrades and changes in the Kusama/Statemine ecosystem. 11. Regular updates to keep up with Substrate for continuous system enhancement. 12. Management of upgrades to parachain runtime versions, including indexer enhancements and related costs. From 8c6bca3c02c70f6d09b890dac2e10ddd95f646d8 Mon Sep 17 00:00:00 2001 From: Viki Val Date: Wed, 27 Sep 2023 14:06:42 +0200 Subject: [PATCH 9/9] :memo: numbering per deliverables --- ...ssethub_nft_indexer_statemine_statemint.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md index 0cecf8225c2..637b4d09a1c 100644 --- a/applications/kodadot_assethub_nft_indexer_statemine_statemint.md +++ b/applications/kodadot_assethub_nft_indexer_statemine_statemint.md @@ -153,9 +153,9 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon | 0b. | Documentation | Comprehensive inline code documentation and an explicit README file to guide the project setup and execution.| | 0c. | Test Guidelines | Testing will cover major functionality with unit tests and provide a guide for executing these tests.| | 0d. | Docker Integration | A Dockerfile will enable the project to run within a Docker container. | -| 1. | Backward Compatibility Maintenance | Ensuring backward compatibility with current Uniques v1. | -| 1a. | Collection Schema Development | Development of a GraphQL schema entity that represents the collection. | -| 1b. | NFT Schema Development | Formulation and creation of a GraphQL schema entity representing Non-fungible tokens. | +| 1a. | Backward Compatibility Maintenance | Ensuring backward compatibility with current Uniques v1. | +| 1b. | Collection Schema Development | Development of a GraphQL schema entity that represents the collection. | +| 1c. | NFT Schema Development | Formulation and creation of a GraphQL schema entity representing Non-fungible tokens. | | 2. | Unique v1.1 Handlers | Implement a handlers to index buy, set_price events from the chain. | | 3. | NFT Pallet Handlers | Handler created for indexing create, mint, buy, set_price, transfer, burn events from the chain. | | 4a. | On-chain Attributes Schema Design | Development and design of a GraphQL schema entity representing on-chain attributes. | @@ -172,11 +172,11 @@ Matej and Viktor are strongly committed to the Polkadot ecosystem and have demon | 7c. | Fungible Assets CREATE Event |An event handler for indexing the creation of a fungible event from a chain, such as (RMRK/USDT) will be developed.| | 7d. | Metadata Support for Fungible Assets | Implement a handler to add metadata to a fungible asset event from the chain. | | 7e. | Fungible Asset Allowlist Setup |Setting up allows list-based indexing of fungible assets. | -| 10a. | Data Views Development |Construction of data views for efficient access to indexed data. | -| 10b. | Implementing Metadata Caching Layer |Develop and retry IPFS metadata if un-indexed by Metadata IPFS Integration Handler. | -| 11a. | Transfer of Collection Ownership |Incorporate functionality to transfer collection ownership. | -| 12a. | Collection settings Schema Design | Development and design of a GraphQL schema entity representing Collection settings | -| 12b. | Collection settings handler | Implement a handler to add collection settings into data | +| 8a. | Data Views Development |Construction of data views for efficient access to indexed data. | +| 8b. | Implementing Metadata Caching Layer |Develop and retry IPFS metadata if un-indexed by Metadata IPFS Integration Handler. | +| 9. | Transfer of Collection Ownership |Incorporate functionality to transfer collection ownership. | +| 10a. | Collection settings Schema Design | Development and design of a GraphQL schema entity representing Collection settings | +| 10b. | Collection settings handler | Implement a handler to add collection settings into data | ## Future Plans 🔭 @@ -189,9 +189,9 @@ Upon the successful deployment of the AssetHub Indexer, our team plans to contin 4. Establishment of user profiles to enable personalized user interfaces. 5. Incorporation of constituent elements for individual NFT representation. 6. Implement action components for functionalities like LIST, SEND, BUY, MINT, BURN, and Atomic Swap. -6. Development of comprehensive statistical representations and analytics mechanisms. +7. Development of comprehensive statistical representations and analytics mechanisms. 8. Introduction of rankings to highlight top-performing users, collections, or items. -7. Personalization of the user interface to enhance the user experience. +9. Personalization of the user interface to enhance the user experience. 10. Maintenance of compatibility with runtime upgrades and changes in the Kusama/Statemine ecosystem. 11. Regular updates to keep up with Substrate for continuous system enhancement. 12. Management of upgrades to parachain runtime versions, including indexer enhancements and related costs.