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

xcm tool for NFTs #1798

Merged
merged 2 commits into from
Jul 12, 2023
Merged

xcm tool for NFTs #1798

merged 2 commits into from
Jul 12, 2023

Conversation

anshulWeb3
Copy link
Contributor

XCM tool for cross chain NFT
The Crosschain NFT Pallet is a unique initiative designed to facilitate the smooth movement of NFTs across various blockchain networks, utilizing the XCM protocol. Through the implementation of this pallet, individuals can effortlessly exchange NFTs between relay chains and parachains.

Grant level

  • Level 1: Up to $10,000, 2 approvals
  • Level 2: Up to $30,000, 3 approvals
  • Level 3: Unlimited, 5 approvals (for >$100k: Web3 Foundation Council approval)

Application Checklist

  • The application template has been copied and aptly renamed (project_name.md).
  • I have read the application guidelines.
  • Payment details have been provided (bank details via email or BTC, Ethereum (USDC/DAI) or Polkadot/Kusama (USDT) address in the application).
  • The software delivered for this grant will be released under an open-source license specified in the application.
  • The initial PR contains only one commit (squash and force-push if needed).
  • The grant will only be announced once the first milestone has been accepted (see the announcement guidelines).
  • I prefer the discussion of this application to take place in a private Element/Matrix channel. My username is: @_______:matrix.org (change the homeserver if you use a different one)

@CLAassistant
Copy link

CLAassistant commented Jun 12, 2023

CLA assistant check
All committers have signed the CLA.

@keeganquigley
Copy link
Contributor

keeganquigley commented Jun 14, 2023

Thanks @anshulWeb3 for the application.

  • Can you integrate more technical details into the delivery table itself, such as the pallet functions?
  • We only offer USDT payment on Statemint/Statemine. Please update according to our payment options for Ethereum.
  • Are you able to provide the GitHub accounts of your team members, or otherwise provide proof of previous work?

Thanks!

@keeganquigley keeganquigley self-assigned this Jun 14, 2023
@keeganquigley keeganquigley added the changes requested The team needs to clarify a few things first. label Jun 14, 2023
@anshulWeb3
Copy link
Contributor Author

anshulWeb3 commented Jun 14, 2023

Thankyou @keeganquigley for the review.

  1. I have added details to the delivery table.
  2. I have changed the payment address.
  3. The names of team members are clickable and they have the github repos for the team members. Also, I have added the stack exchange profiles of my team members.
    Kindly check.

@keeganquigley
Copy link
Contributor

Thanks for the changes @anshulWeb3 it's looking better now. I will mark the application as ready for review and ping the committee members internally. In the meantime, a few additional questions:

  • Did this come out of a need to transfer your own NFTs, or otherwise what temperature checks have been done to let you know that this is needed in the community?
  • Have you checked other NFT bridging solutions to see if some of these pallets have already been built? I seem to remember RMRK working on a substrate-to-substrate bridge but am not finding any updates with a quick search.

@keeganquigley keeganquigley added ready for review The project is ready to be reviewed by the committee members. and removed changes requested The team needs to clarify a few things first. labels Jun 14, 2023
@anshulWeb3
Copy link
Contributor Author

Thankyou @keeganquigley for the questions.

  1. To answer your first question, our team was researching on XCM and it's applications as we were looking into interoperability solutions. Cross chain NFT transfers interested us as NFT are a big part of functionality on blockchain and there are already many NFT projects that are live. Cross-chain support for NFT across the Substrate ecosystem could open a lot of possibilities in the future.
  2. Yes, we looked into other bridging solutions. Work has been done for Fungible assets but we couldn't find anything relevant to our needs. Hence, we felt a need for this to exist. xTokens pallet exists why not xNFT. This project is also a part of our research on XCM and there is a lot more to come.

Copy link
Contributor

@keeganquigley keeganquigley left a comment

Choose a reason for hiding this comment

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

Cool, thanks @anshulWeb3 for clarifying. For the price, I'm willing to approve this PoC. Looking forward to see the result!

Copy link
Collaborator

@Noc2 Noc2 left a comment

Choose a reason for hiding this comment

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

Thanks for the application. I have some questions:

  • Are you aware of XCM V3 and it's support for NFT transfers?
  • I assume that the biggest problem between different parchains and NFTs is standardization. How would you like to address this? What research/work has been done in regard to fungible assets that you could potentially leverage? Feel free to update the application accordingly.

@anshulWeb3
Copy link
Contributor Author

Thanks @Noc2 for reviewing the application.

  1. Yes, we are aware of XCM v3 and we are building this xNFT pallet on top of the XCM v3 functionality for NFT transfers i.e the pallet consists of methods that combines the XCM functionality relevant for transferring NFT across chains. This pallet may be integrated with the substrate SDK as a module.
  2. As of now our pallet supports the transfer of (only) NFT that are made using the NFT pallet provided by substrate. We plan to extend this functionality for custom NFTs in future. We have researched the xToken pallet (used for cross chain Fungible Asset transfers) currently used by parachains like Moonbeam and also have studied about Sovereign Account, TeleportAsset and ReserveTransferAsset. The architecture of the xNFT pallet will be somewhat similar to the xToken pallet.

Copy link
Collaborator

@takahser takahser left a comment

Choose a reason for hiding this comment

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

@anshulWeb3 are you aware of this issue and this open PR that is related to that issue?

To enable derivative NFTs in the NFTs pallet, we should be able to represent a CollectionId as a MultiLocation.

It seems like some changes will have to be done to the NFT pallet, before XCM support can be implemented (cc @jsidorenko).

@vstam1
Copy link

vstam1 commented Jun 20, 2023

Hi @anshulWeb3,

I think this discussion is also relevant for your tool.

@anshulWeb3
Copy link
Contributor Author

anshulWeb3 commented Jun 20, 2023

Thankyou for the review @takahser .
No, I just looked into this issue and the PR. Thankyou for bringing this into our notice. I believe that we will have to start our work once the PR you mentioned in your comment is merged.

@anshulWeb3
Copy link
Contributor Author

Hi @vstam1 ,
Thankyou for the reference.

@takahser
Copy link
Collaborator

@anshulWeb3 thanks for your feedback.

I believe that we will have to start our work once the PR you mentioned in your comment is merged.

I agree that it's a good idea to wait for the relevant changes on the NFT pallet to be implemented, but I'd generally be happy to support this effort once that's done. I think it's advisable to have a look at the RFC that @vstam1 has shared in the comment above. Ideally, you'd get familiar with the changes that are currently being implemented and adapt your proposal accordingly.

In the meanwhile I'm going to put this application on hold, but feel free to further update it.

@takahser takahser added the on hold There is an external blocker, such as another grant in progress. label Jun 20, 2023
@vstam1
Copy link

vstam1 commented Jun 21, 2023

I have to mention that the RFC is a proposal for a new instruction for XCMv4. It can still take some time before we release v4. The planning now is Q4 2023.

@takahser
Copy link
Collaborator

@vstam1 do you think it'd be possible to parallelise the development of XCMv4 and this proposal? Maybe, once the relevant part of the XCMv4 API is fixed the grantee team could start implementing this?

@vstam1
Copy link

vstam1 commented Jun 27, 2023

Unfortunately we cannot. XCM is versioned, and we cannot add another instruction to version 3.

@takahser takahser self-assigned this Jul 5, 2023
@takahser takahser self-requested a review July 5, 2023 13:32
Copy link
Collaborator

@takahser takahser left a comment

Choose a reason for hiding this comment

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

@anshulWeb3 I got the note from @vstam1 that they're going to move XCM into a separate repository to simplify the development process. Once the necessary changes have been implemented, you could technically start working on it, even before XCMv4 would be released. The downside of this approach is that the API might change until the release so you'd have to keep updating that dependency as you work on your code, to spot breaking changes early and avoid introducing breaking changes. This would allow you to accelerate the development and start earlier. 👍

@anshulWeb3 anshulWeb3 requested a review from Noc2 July 12, 2023 06:31
@Noc2 Noc2 removed the on hold There is an external blocker, such as another grant in progress. label Jul 12, 2023
Copy link
Collaborator

@Noc2 Noc2 left a comment

Choose a reason for hiding this comment

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

Thanks for pinging me here. Given that's a level 1 grant, the application is already approved. But I'm happy to approve it as well and merge it.

@Noc2 Noc2 merged commit 482d9cd into w3f:master Jul 12, 2023
@github-actions
Copy link
Contributor

Congratulations and welcome to the Web3 Foundation Grants Program! Please refer to our Milestone Delivery repository for instructions on how to submit milestones and invoices, our FAQ for frequently asked questions and the support section of our README for more ways to find answers to your questions.

Before you start, take a moment to read through our announcement guidelines for all communications related to the grant or make them known to the right person in your organisation. In particular, please don't announce the grant publicly before at least the first milestone of your project has been approved. At that point or shortly before, you can get in touch with us at [email protected] and we'll be happy to collaborate on an announcement about the work you’re doing.

Lastly, please remember to let us know in case you run into any delays or deviate from the deliverables in your application. You can either leave a comment here or directly request to amend your application via PR. We wish you luck with your project! 🚀

@keeganquigley
Copy link
Contributor

Hi @anshulWeb3 did you want us to re-open the pull request? Are you still working on the milestone?

@anshulWeb3
Copy link
Contributor Author

Hi @keeganquigley we are currently looking for solutions which align with "not changing the Frame NFT pallet" approach. Apart from that we are waiting for the required changes to get uptream.

@keeganquigley
Copy link
Contributor

Thanks @anshulWeb3 do you think these required changes will happen soon?

@keeganquigley
Copy link
Contributor

Hi @anshulWeb3 do you plan on submitting a delivery soon? If not, please consider submitting an amendment to extend the timeline. Thanks!

@keeganquigley
Copy link
Contributor

Hi @anshulWeb3 are you still working on this grant? I noticed there hasn't been much activity on the repos. Please let us know, otherwise after 2 weeks we will close the grant due to inactivity.

@anshulWeb3
Copy link
Contributor Author

Hi @keeganquigley . Sorry for the delayed response. I was on a Medical leave and the access to the account was with me only so any other team member was unable to respond in time. We've been engaged in research related to this matter and have explored various methods to access private fields such as ItemMetadataOf and CollectionMetadataOf within the FRAME NFT pallet, without altering the actual code. During this process, we've identified a solution and are currently in the implementation phase. We plan to provide you with a comprehensive update by next week. Thanks for your patience.

@anshulWeb3
Copy link
Contributor Author

Hi @keeganquigley . We have successfully reverted all modifications made to the FRAME NFT pallet, including changes to structs such as CollectionDetails, ItemDetails, CollectionMetadata, and ItemMetadata. These structs now align with the standard FRAME NFT pallet.
However, we are currently addressing the final outstanding change, which involves making a Type of RuntimeCall in the Config of the FRAME NFT pallet to enable the calling of functions of the FRAME NFT pallet from the xnft pallet. We are actively working to resolve this issue and will provide updates as soon as it is resolved.
If you have any suggestions or insights regarding this matter, we are open to receiving them. Additionally, we will keep you informed about the resolution of the previous RuntimeCall issue as soon as it is resolved. Thank you for your understanding and cooperation.

@semuelle
Copy link
Member

semuelle commented Jan 2, 2024

Thanks for the update, @anshulWeb3. Sounds good to me. But could you submit an amendment to the grant application with an updated timeline? That makes it a lot easier for us to track project progress.

@anshulWeb3
Copy link
Contributor Author

Hi @keeganquigley , @semuelle We have successfully addressed the Runtime call challenge and are pleased to inform you that we will be delivering the xnft-pallet by the upcoming week.

@anshulWeb3
Copy link
Contributor Author

Hi @keeganquigley . The development is done and we are setting up the testing environment using Trappist. We expect to deliver by Wednesday. Thanks!

@keeganquigley
Copy link
Contributor

Great @anshulWeb3 sounds good thanks for the update!

@anshulWeb3
Copy link
Contributor Author

Hello @keeganquigley . We are happy to announce that we have submitted the delivery of xNFT pallet. Looking forward to your response. Link to the PR.
Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready for review The project is ready to be reviewed by the committee members.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants