NFTs and Multi-signature Accounts

NFTs and Multi-signature Accounts

The Polkadot JS Extension has no built-in support for multi-signature addresses. The dapps and UIs supporting multisigs should instead implement it on their end. Singular and Kanaria currently have no native support for multisigs. If you do have some NFTs on either of those platforms, here's how to interact with them until we add official support.


Before we begin:

  • open https://polkadot.js.org/apps
  • under Address Book make sure you have added all the signatories of your multi-sig
  • make sure the multi-sig is in your account list. If it is not, add it with the [+Multisig] button

All further steps will happen in the Developer -> Extrinsics screen, so go there now.

How to Send an NFT

Please note that ONLY SENDING AND LISTING FOR SALE IS SUPPORTED - do not try to hatch, destroy, or buy an NFT with a multi-sig, it will not work!

Starting the Call

The person starting this call must do the following:

  1. Select system -> remark
  2. Enter RMRK::SEND::1.0.0::EGGID::RECIPIENT as the value, where EGGID is your egg's ID, and RECIPIENT is the recipient, like so: RMRK::SEND::1.0.0::339252-0aff686563bed3a66b-SI6CR-YO-0000000000000001::CpjsLDC1JFyrhm3ftC9Gs4QoyrkHKhZKtK7YqGTRFtTafgp

Do not click submit. Save the encoded call data and encoded call hash somewhere. You will need it later.

Example for RMRK::SEND::1.0.0::469271-0aff686563bed3a66b-SI6CR-MULTISIG_TEST-0000000000000004::1FRMM8PEiWXYax7rpS6X4XZX1aAAxSWx1CrKTyrVYhV24fg:

  • Encoded call data: 0x00010902524d524b3a3a53454e443a3a312e302e303a3a3436393237312d3061666636383635363362656433613636622d53493643522d4d554c54495349475f544553542d303030303030303030303030303030343a3a3146524d4d38504569575859617837727053365834585a5831614141785357783143724b5479725659685632346667
  • Call hash: 0x091a69840076b7b0234935a0addb74b5317b3afce48eac9f54955092a1e36785

Then, "reset" the extrinsics screen to how it was when it first loaded, without submitting any transaction.

For the main "submit the following extrinsic" selection now pick multisig -> approveAsMulti.

  • For threshold, put your multisig's threshold.
  • For other signatories, put the other signatories of the multisig, in the original order, excluding yourself.
  • For call hash put the call hash stored earlier.
  • For max weight, put something like 100000

Execute this from your signatory account.

The accounts screen will now have an indicator that there are pending approvals:

Approving the Call

You can approve this from the three-dots menu:

Every signatory should do this, except the last one, who will also need to enter the call data the call starter has stored.

The call starter should give this call data to the final approver, or the final approver should regenerate the call data following the instructions from the previous step.

The multisig transaction should be processed in a few seconds.

NFTs and Multi-signature Accounts