13

There are some good conceptual explainers on what anonymous proxies are, yet it's not clear to me which use cases they serve best.

What are some problems that using anonymous proxies would solve? What are some concrete case studies?

2 Answers 2

13

One good use case is to be able to transfer ownership of a multisig member. Since multisig AccountIds are derived based on their members, changing one member changes the address of the multisig. If that account is staked or otherwise locked into some long-term commitment, it can be overly burdensome to change a member.

However, if all members are anonymous proxies, one member can simply set a new proxy to the anonymous (proxied account) and renounce their proxy rights.

Concretely, this is useful e.g. in a company that uses multisigs to manage its assets, but has employees join or leave the company. When an employee who is a member of a multisig leaves, they can transfer that member to a new employee.

5
  • So the problem they solve is how to set permissions for a changing set of privileged members - with minimal overhead? The company example is good, thank you! Any others? Apr 6, 2022 at 13:05
  • 1
    You could do what Joe described in reverse order too: Have the anonymous proxy be controlled by a multisig, and if you need to replace a signatory, you simply create a new multisig that you add to the anonymous proxy and remove the previous one.
    – michalis
    Apr 6, 2022 at 17:41
  • 1
    So this is a great example that finally made it click for me: anon proxies are keyless in that there is no private key that exists to be able to sign on behalf of this account. Thus when the anon proxy sets a different delegate, the full* exclusive control of the account (*assuming a fully permissive ProxyType::Any) atomically moved to another keyed account that can sign on it's behalf. Sound right? If so I can come up with a few more concrete examples :)
    – Nuke
    Apr 6, 2022 at 17:54
  • 1
    Yeah, what Dan said is correct, the "anon proxy" is keyless and has one (or many) proxies. The proxied (anon account) can only be accessed via proxy.proxy(<call>), but of course call could be to add a proxy (it can have multiple proxies) or remove a proxy, including the caller. Apr 7, 2022 at 8:54
  • You could also transfer a full staked account if it's on an anon. Say an anon proxy has 100 DOT staked, of course it can't transfer parts of it without unbonding, but it could transfer "ownership" of the entire account in its staked state by adding a new Any proxy and then removing itself. Apr 7, 2022 at 8:55
4

Another use case would be if you want an account where several different people have different levels of access.

For example, an anonymous proxy of a company might be controlled by a multisig consisting of the C-level executives (with the "Any" type), which in turn can be consisting of anonymous proxies as Joe described, and they allocate one or two employees to handle staking. So, they add these accounts to the anonymous proxy with a type of "Staking". These employees can take any staking action, but they can't do anything else with the account.

You could do something similar with a personal account for increased security. You could have your stash on an anonymous proxy and the account with type "Any" is a hardware wallet locked in a vault. You then add an account for staking and another for governance, or a single one with type "NonTransfer". If any of these are compromised, your funds are still safe.

1
  • You can do the staking example even simpler. Just make a multisig composed entirely of anon proxies (and therefore transferable members) and then set a Staking proxy to the multisig account directly. Apr 7, 2022 at 8:57

Your Answer

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

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