Diving Deeper: Everything you wanted to know about NFT XCM - Answers to Your Frequently Asked Questions from the Community. Learn more below:

In December last year, Unique Network and Acala launched an impressive Polkadot development to advance the NFT ecosystem: Cross-Chain NFTs in a readily available PoC (Proof-of-Concept). We’re here to answer your frequently asked questions and highlight helpful discussions that we believe will help you gain a further understanding of what NFT XCM (proposal #379) is.

The following is broken down into various sections to better organise your questions.

Architecture & Implementation

Q: I would love to see the solution's architecture and implementation details that you have worked out, to allow this proposal to be reviewed on a technical level, and make sure that it is a success.

A: All details are in the report, with a bunch of links for specifics.

[Response provided by Unique Network’s CEO, Aleksandar Mitrovich]

Q: How is this XCM NFT being audited, and made sure it will be in Polkadot-SDK integrated, so every parachain can use it?

A: Regarding the audit, will see with Parity. As far as I'm concerned, between the people involved in this, are a stronger check than auditors are, but will see. The version that will require auditing is still 6-9 months away. As for GitHub - I doubt Parity will want this in their repos for maintenance clarity, like many other community-built components (ORML and the like) - they're outside. Will figure it out as we go. Right now code is in https://github.com/UniqueNetwork/xnft, tests are in https://github.com/uniqueNetwork/xnft-tests.

A few more: https://github.com/UniqueNetwork/unique-chain/tree/master/pallets/foreign-assets

https://github.com/AcalaNetwork/Acala/tree/master/modules/xnft

https://github.com/open-web3-stack/open-runtime-module-library/pull/966

https://github.com/uniqueNetwork/xnft

https://github.com/AcalaNetwork/Acala/tree/master/modules/xnft

But all of these are PoC and work in progress.

[Response provided by Unique Network’s CEO, Aleksandar Mitrovich]

Q: Is the main benefit of proposal 379 (Cross Chain NFTs) to allow the creation of more complex NFTs?

A: The primary benefit of Proposal 379 is not necessarily to create more complex NFTs, but to enable the transfer of NFTs across different parachains. This involves handling the complexities of NFT metadata and ownership as they move between different blockchain environments within Polkadot. NFTs in Polkadot ecosystem are not only created on AssetHub, paras like Moonbeam, Astar, Nodle and others mint NFTs on their parachains locally and this is to allow all of them to seamlessly and securely be transferred across the ecosystem.

[Response provided by community member Jimmy Tudeski]

Q: Isn't proposal 379 (Cross Chain NFTs) effectively replacing the AssetHub NFT standard with a new standard?

A: Proposal 379 does not necessarily replace the Asset Hub's NFT standard. Instead, it can be seen as an extension or an addition to the Polkadot ecosystem that enables the existing NFT standards, like those used in the Asset Hub, to be transferable across parachains.

Conceptually, the idea is not to centralize NFTs under a new standard but to create a protocol or mechanism whereby NFTs, regardless of their originating parachain or standard, can be transferred, recognized, and interacted with across different parachains.

[Response provided by community member Jimmy Tudeski]

Q: What are the trade-offs compared to for example using only AssetHub?

A: AssetHub is a dumb parachain (storage) and will stay that way. It's never going to have what the rest of parachains have. It has a simple NFTs pallet that doesn't have 10% of functionality that RMRK or Unique or others have. It's 1000 times slower. It's created and lives only to issue tokens if there's no other place. So you can't use AssetHub for moving NFTs or for doing anything, really, except to create them. And it will stay that way to the most extent.

You can try and build stuff that works on that parachain, but ... that's a discussion for another time and place. Main point is — you can't replace all of Polkadot with just AssetHub, and AssetHub can not be the NFT XCM protocol.

[Response provided by Unique Network’s CEO, Aleksandar Mitrovich]

Q: It is a parachain just like the others so why it cannot support XCM?

A: It can and it will.

[Response provided by Unique Network’s CEO, Aleksandar Mitrovich]

Q: You could create the NFT on AssetHub and then bridge it on another chain with XCM?

A: Yes, that's exactly the goal here.

[Response provided by Unique Network’s CEO, Aleksandar Mitrovich]

Q: My understanding is that this is exactly the same approach you plan to use for your project. So if my understanding is correct and of course it may very well be incorrect as I'm not very technical but I still want to understand the main difference is that with your project it's possible to make more advanced types of NFT that are currently not being supported by AssetHub?

A: The approach indeed is the same for AssetHub, Centrifuge or any other parachain that uses Substrate pallets. For EVM and Ink parachains the approach is the same, the implementation has to be different, but the result is the same.

[Response provided by Unique Network’s CEO, Aleksandar Mitrovich]

Q: What is the benefit of creating NFTs on parachains and then having to create an extra parachain to manage the locks for the bridges? Isn't it effectively the same thing to just have every parachain create their NFTs on AssetHub?

A: There will be no extra parachain. The proposal is to create the NFT XCM - to enable the Cross-Consensus Messaging (XCM) format to handle Non-Fungible Tokens (NFTs).

It’s a communication framework for cross-consensus messaging for non-fungible assets.

XCM is a language or protocol developed for Polkadot and Kusama, allowing different blockchains (parachains) in these networks to communicate and transfer assets, including tokens and data. XCM facilitates interoperability between parachains.

When we talk about "NFT XCM," we're referring to the use of this cross-consensus messaging system specifically for the transfer of NFTs.

379 is a concept or proposal to extend the XCM protocol's capabilities to include the handling and transferring of NFTs across different parachains.

NFT XCM is not a parachain in itself, nor is it a new format of NFTs. It's a proposed extension of the existing XCM protocol to handle NFTs, ensuring their unique metadata and ownership details are preserved and recognized as they move across various parachains in the Polkadot ecosystem.

[Response provided by community member Jimmy Tudeski]

Business Plans & Use Cases

Q: What is the business case, that is, why do we need this?

A: Interoperability (ability to move assets between chains) is a core value proposition of Polkadot (see it's white paper and all communications about themselves - the word "Interoperability" is almost always in the 3-5 list of things why Polkadot exists). Interoperability means being able to move assets from one chain to another. To do that you need bridges. XCM is a specialized set of bridges (messaging protocol) that exists between parachains connected to the Polkadot Relay chain. This protocol now can carry fungible tokens only, it does not carry NFTs. It also doesn't carry other types of assets (see comment above from Centrifuge), but NFTs are next in terms of market size need. So to conclude, NFT XCM is needed to finish the job of interoperability that Polkadot promised.

As for specific use cases that may use the NFT in the near future (this may be a better explanation for some people, here are just a few examples:

  • i) NFT produced on one parachain needs to have access to a number of dApps if they are to have utility, and most will be on another parachain. DeFi chains don't do NFTs, and how else to combine them if not by sending an NFT from a host chain to a DeFi chain for collateral for a loan, for example. Only Centrifuge can do that today (maybe Moonbeam), but most parachains can't, including AssetHub.
  • ii) How do you launch DED NFTs? On AssetHub? You can't have games on AssetHub. You can't have DeFi on assethub. You can't have anything on just one parachain. You need many parachains if you're Polkadot. And for them to talk to each other, you need NFT XCM.
  • iii) We have minted Carbon Offset NFTs. With XCM, those can be used in any parachain to offset their carbon footprint for the parachain itself or for its dApps.
  • iv) alternative is a centralized bridge - shameful approach for Polkadot, tbh.
  • v) I am not yet sure, but we might need NFT XCM for the marketplace for the Coretime NFTs, too. We only started diving into that, so it's just intuitive use case at this point.

[Response provided by Unique Network’s CEO, Aleksandar Mitrovich]

Q: What is the context of this in relation to Polkadot's overall strategy, Parity plans and AssetHub?

A: The way NFT XCM is designed and implemented perfectly fits into Polkadot implementations and Parity plans, because:

  • a) the only change required from the relay chain side is already in the chain as part of our Milestone 1 (https://github.com/paritytech/xcm-format/pull/45).
  • b) The whole idea fits into decentralization that Parity wants to encourage — we picked up on this and are doing it/have done it. We're the original creator of NFTs in Polkadot, and have done more then anyone on them, and we built the needed expertise and experience, as well as organizational capabilities to accomplish this. The plans and implementation was done and will be continued in close consultation with core developers, which is the only way to make sure we stay current — Polkadot changes quite a lot.
  • c) As for AssetHub — it is simply an asset storage, and issuance hub for those asset that want it (stablecoins, for example). For doing something with NFTs, you need to move them to other parachains, and for that you need the NFT XCM. There are no smart contracts on AssetHub because it's just a storage.

[Response provided by Unique Network’s CEO, Aleksandar Mitrovich]

DOT Spending

Q: How did you calculate the amount according to expected work?

A: Spot DOT price. With the volatility we have now using things like 7da would not make sense. As for the whole budget, it's in the proposal, spreadsheet is linked close to the end.

Additionally, I would add that the proposal includes funds for bounties for use cases so that Polkadot (d)marketing will have actual use cases to show off right from the start, and for documentation/educational content on the NFT XCM topic

[Response provided by Unique Network’s CEO, Aleksandar Mitrovich]

NFT XCM Proposal Summary Presentation

For a non-technical overview and further information about NFT XCM and its proposal, we’ve created a simplified summary to aid your understanding, see here.

Technical & Non-Technical Highlights from the Team

The following information within this section is important highlights that we believe to be useful and helpful to further clarify and simplify the vision and understanding around NFT XCM (Proposal #379) by core members of the Unique Network team.

Non-Technical overview to simplify the proposal

[The following response is provided by Unique Network’s CTO, Greg]

The proposal will deliver four items:

1. XNFT pallet: serves as an adapter to many NFT pallets that are in use in the ecosystem. The main goal of it is to standardize XCM NFT transfers, i.e. make them work the same way across all parachains. Any parachain that is willing to utilize this standard will need to develop some code to include it and run a forkless upgrade in order to include it. We have done this with Acala to provide a tangible result of Milestone 1.

2. Runtime API for fee estimation: This is an important piece for making NFT transfers reliable. The key reason behind it is that one parachain cannot ask another parachain for any piece of information without paying a fee, so we get into a dead loop if we need to ask for the fee estimate. This component resolves this and allows to carry the fee estimation logic out to the client app. Like with xnft pallet, parachains may choose to include it so that they can utilize this deliverable.

3. The XCM transfer failures may be painful. In order to make them a bit more reliable we have proposed an RFC-37, which basically defines a way for asset recovery in case of failures. Implementation of RFC-37 is another deliverable. Tested, with usage examples provided.

4. The client API is the final piece. It will allow any 3rd party to create applications using this library and abstract away any XCM details. Example #1 is a wallet transfer. Our deliverable would be some JS code that a JS developer without XCM knowledge would be able to run.

Technical Insight by Core Dev at Unique Network

[The following response is provided by Unique Network’s Core Dev, Daniel]

1. We want to implement a generalized pallet for NFT reserve-based transfers via XCM (the "xnft" pallet). This pallet will be an adapter between XCM and any NFT engine existing on a given chain (like ORML NFT, Unique Network pallets, pallet-nfts, etc).

This pallet is a tool to enable the chain to send its NFTs and receive foreign NFTs. It implements all the necessary stuff like:

  • a. registering a derivative collection (a collection corresponds to the original collection on a remote chain). It is the place where an NFT derivative corresponding to the original NFT of the original collection will be minted.

  • b. holding the mapping between the original NFT Asset ID and the derivative ID.

  • c. XCM Asset Transactor (implements transfer-related XCM operations for NFTs).

The "xnft" requires only basic NFT operations to function: create_derivative_collection, mint_derivative, withdraw_derivative, and transfer NFT.

So, it becomes easy to make XCM NFT work if you can map the mentioned operations to the NFT engine on your chain.

The important thing is that the "xnft" pallet will make no assumptions about the NFT implementation.

For instance, the NFT XCM Adapter by Parity assumes that NFT metadata is preserved if the NFT is burned and minted again (with the same ID): https://github.com/paritytech/polkadot-sdk/blob/ac303406ffc0b1478b53d236a7983c31755717bc/polkadot/xcm/xcm-builder/src/nonfungibles_adapter.rs#L210-L249

This assumption is true for Parity's pallets (uniques and nfts) but could be false for other NFT engines (ORML NFT, Unique Network, Smart Contracts, etc).

Also, if you use Parity's adapters, you need to implement the registration of derivative collections and all the related stuff all by yourselves. The "xnft" pallet implements this for you.

The "xnft" pallet is meant to be universally applicable.

At the moment, we implemented a working PoC xnft pallet: https://github.com/AcalaNetwork/Acala/tree/master/modules/xnft. It is the adapter between XCM and ORML NFT.

We also modified our foreign-assets pallet to handle the XCM NFTs on our chains https://github.com/UniqueNetwork/unique-chain/tree/master/pallets/foreign-assets

We will generalize these implementations.

The WIP generalized "xnft" pallet can be found here: https://github.com/uniqueNetwork/xnft

2. We want to implement the fee estimation Runtime API for XCM messages. It is possible without changing XCM or XCM Executor. We need to expose the XCM Weigher via the Runtime API. It is necessary to make the XCM execution fees more predictable.

3. We already proposed an accepted RFC #37 to XCM to make the recovery process of trapped NFTs easier. See the RFC where the motivation is provided: https://github.com/paritytech/xcm-format/blob/master/proposals/0037-custom-asset-claimer.md. By the way, the XCM RFCs are located in the xcm-format repository, not polkadot-fellows. I think it's because XCM is a generic format and doesn't have to be bound to the Polkadot ecosystem.

4. We want to implement the RFC #37 that we proposed. That requires a change to the XCM Executor.

5. We want to implement (or augment an existing) JS library based on PolkadotJS for XCM transfers. This library will utilize the fee estimation RPC to predict fees and will provide a convenient way for recovering trapped NFTs.

6. We want to build UI for transferring NFT assets (again, with fee estimation and trapped NFTs recovery).

7. We want to test all the stuff properly. In particular, we want to support the e2e tests of the xnft pallet integrations. We already wrote tests for the PoC (Karura <-> Quartz). See the test repository here: https://github.com/uniqueNetwork/xnft-tests. We will also provide the CI setup. 02:34

8. We want to propose an RFC to XCM containing:

  • a. An XCM NFT metadata format that could be reported via the QueryResponse instruction. We think about the key-value pairs as the most general thing.

  • b. Several new instructions related to metadata operations: QueryMetadata (requesting some of the keys or requesting the list of the keys), ModifyMetadata (a request to the reserve chain to modify the specified keys), and two extra instructions for metadata modification approvals. See our sub0 presentation about the modification approvals: https://youtu.be/4DAHuWUvbwI?si=eDi0MOgdliWjkB4Q

I just described the Milestone 2 (without the R&D needed for Milestone 3)

During Milestone 3, we want to implement an extension of the "xnft" pallet to be used as an adapter to EVM so that NFT Smart Contracts can interact with XCM.

Also, during this milestone, we want to research the possibility of providing the same for Ink! SCs

During Milestone 4, we want to finalize the XCM metadata operations RFC.

We will continue to update this blog with new and updated information as we go along once new information/comments/feedback and answers become available.

References

Comments and additional questions that have been highlighted in this blog can be found in the Proposal for NFT XCM - https://polkadot.polkassembly.io/referenda/379

Giotto’s X (Twitter) Spaces “Where experts simplify proposals for voters” - https://x.com/giottodf/status/1746178123719225648?s=20

Giotto’s OpenGov Proposal Template Feedback - https://x.com/giottodf/status/1746401243403043295?s=20

Jimmy Tudeski’s informative opinion and technical insights - https://twitter.com/stakenode_dev/status/1746492537349558441

Technical information by Unique Network’s core dev - https://polkadot.polkassembly.io/referenda/379#Z2eZ7DdpphccCk9EEnNC

Unique Network’s NFT XCM PoC Blog Post - https://unique.network/blog/unique-network-cross-chain-nft-proof-of-concept-is-here

What is NFT XCM?

XCM (Cross-Consensus Message Format, or Cross-Chain Messaging) is a messaging format and language used to communicate between consensus systems. NFT XCM allows users to easily transfer NFTs from one parachain to another - making NFTs more accessible, unlocking new ideas and concepts and bringing NFTs to Polkadot.

Alexander Mitrovic, the CEO of Unique Network, delivered the first proposal outlining our vision for easy NFT transfers on September 15th, 2023 highlighting the vision for mass adoption of NFTs.

Since then, the team has been developing a proof of concept to test this functionality and becoming one of the first to successfully create a solution where you can now transfer NFTs via XCM on Polkadot.

See the full NFT XCM proposal on OpenGov here.

Stay Up To Date

Follow Unique Network to get all the latest information, and join us to start your own unique, development journey:

  1. Follow us on Twitter @Unique_NFTchain
  2. Join our community Telegram
  3. Join our community Discord
  4. For Developer Queries: [email protected]
  5. For Any Other Queries: [email protected]