paritytech / paritytech/host-rust-core

RFC: NFT Purses

Open
#512 3 comments 0 reactions 1 assignee View on GitHub

@TorstenStueber is already working on this.

Since Sep 11, 2026.

Contacts Epic NFTs R2 R2 blocker rfc Scarcity
Dominant language
Swift
Stars
10
Forks
3
Avg merge
1d 10h
Merged PRs (30d)
148

Description

Description

For unlinkability and anonymity reasons, Scarcity was designed to have a single NFT per account. For this reason, it was decided to implement the same functionality as for Coinage for NFTs - NFT Purses. The main functionality expected from the NFT Purses is to retrieve all purses/accounts holding NFTs, easily get the next available account to mint an NFT to, and easily send an NFT from one person to another without knowing the recipient's address.

Motivation

Reading a user's NFTs involves iterating through all derived accounts and checking each for NFT holdings. The same functionality will be used in multiple products. Having it in the host API means a reusable SDK that will improve the dev experience and code quality. Additionally, this will solve the issue with sending an NFT to your contact.

Requirements

  • Retrieve all accounts for the current user that hold NFTs in a single query, without probing derived accounts one by one.
  • Get the next free account to mint or receive an NFT into.
  • Send an NFT to another person without knowing their address: the recipient side is resolved for us.
  • By default, everything stays inside the calling product's context, so accounts from different products cannot be linked to each other or to the person.
  • A product can share its purses with declared friendly products. For example, Jollity also mints collectibles and should mint into the Scarcity purses.
  • Same behaviour on every host (desktop, mobile, web).
Nice to have
  • Send several NFTs to the same person in one action. Each item requires its own empty account on the recipient side. The recipient side is resolved once and yields one destination per item.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.