Skip to content

Commit

Permalink
Update MS
Browse files Browse the repository at this point in the history
  • Loading branch information
adamdossa committed Oct 23, 2024
1 parent be851e0 commit 59ce87d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
14 changes: 13 additions & 1 deletion polymesh-docs/primitives/identity.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,22 @@ In particular an *Admin Identity* can be assigned via `multisig::addAdmin`, whic
Additionally a MultiSig can leave and join new identities, similar to any other key. Changing identity will not update the *Admin Identity* of the MultiSig - this must be amended separately if needed.

To change identity, a MultiSig must:
- leave its current identity by executing a proposal of `identity::leaveIdentityAsKey`

- receive a `JoinIdentity` authorisation from another identity

and then either:

- leave its current identity by executing a proposal of `identity::leaveIdentityAsKey`
- create / approve the `JoinIdentity` authorisation by a direct call to `multisig::approveJoinIdentity` by the required number of signers

or:

- create a proposal for an atomic batch of two transactions using `utility::batch`:
- leave its current identity by executing `identity::leaveIdentityAsKey`
- join its new identity by executing `identity::joinIdentityAsKey`

The latter approach is recommended provided the `JoinIdentity` authorization can be issued before the MultiSig needs to leave its current identity.

#### Payment Management

MultiSigs can hold funds, once they have been attached as a Primary / Secondary Key to an identity. If they are removed from the identity they can continue to hold funds, as per normal external key behaviour, but these funds are locked until the key is reattached to a CDD'ed identity.
Expand Down
14 changes: 9 additions & 5 deletions polymesh-docs/primitives/multisig.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,6 @@ A *Paying Identity* can be removed either by the MultiSig, or by the *Paying Ide

It may be that the MultiSig needs to be detached from its current identity, and attached to a new identity.

In order to be detached from an identity, a MultiSig must have a POLYX balance of less than 1 POLYX. This is to avoid a large amount of POLYX being locked on a MultiSig which can no longer transact as a result of not being attached as a primary or secondary key to an identity.

Once the balance has been decreased below 1 POLYX, the MultiSig can leave its current identity.

![Leave Identity](../images/multisig/24-leave_identity.png)

![Leave Identity Event](../images/multisig/25-leave_identity_event.png)
Expand All @@ -155,4 +151,12 @@ To join a new identity, a MultiSig must use the dedicated extrinsic `multisig::a

![Accept Identity](../images/multisig/28-join_identity.png)

![Accept Identity Event](../images/multisig/29-join_identity_event.png)
![Accept Identity Event](../images/multisig/29-join_identity_event.png)

Note that it is also possible to simplify the workflow using Polymesh's native batching functionality,

Instead you can create a proposal for an atomic batch of two transactions using `utility::batch`:
- leave the current identity by executing `identity::leaveIdentityAsKey`
- join the new identity by executing `identity::joinIdentityAsKey`

The latter approach is recommended provided the `JoinIdentity` authorization can be issued before the MultiSig needs to leave its current identity.

0 comments on commit 59ce87d

Please sign in to comment.