6

What is/are the preferred approach/es (crates, pallets, etc.) to efficiently limiting NFT transfers to members of a group?

Here efficiently refers to the resources consumed to execute the transfer.

Ideally the following characteristics would still be supported:

  • The NFT is soulbound to the group (can't be transferred to another group)
  • The group can be delimited by a Parachain (but doesn't have to be)
  • The NFT can be destroyed by the current owner and a group account
  • The NFT can by minted by a group-account and the to-be-owner
  • The NFT transfer can be prepared/signed off-line by the group member-pair
  • The on-chain NFT transfer requires only the receiving member and a group account
  • The NFT data is all on-chain

Appreciate any pointers.

2 Answers 2

2

FRAME has the NFTs pallet with the logic to deal with Nfts, it is highly configurable to adjust it to the logic you want when adding it into your chain. For example with the Pallet-level feature flags would allow disabling functionalities not needed in the runtime.

It has an extrinsic to change the permissions over a collection of items that can be useful for your use case:

set_team: Alter the permissioned accounts of a collection.

See the full documentation here: https://wiki.polkadot.network/docs/learn-nft-pallets

If with all the configuration you still can't can implement your own logic, you can build your own pallet coupling it to the NFTs pallet. An example of this is a work in progress feature: NFTs fractionalization, (see in the docs).

Another alternative is implement this logic with a Smart Contract, see this previous StackExchange question: When should I build a Substrate FRAME Pallet versus a Smart Contract?.

2
1

Collating information here that (eventually, in the fullness of time, etc.) should address the use case. Open questions will reflect the state of play.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.