Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reorganisation of the proxy page #3711

Merged
merged 103 commits into from
Oct 7, 2022
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
6b016ec
Changed subtitle structure
filippoweb3 Aug 26, 2022
5718c89
Removed how-to guide
filippoweb3 Aug 26, 2022
841d07b
Removed how-to guide for removing proxies
filippoweb3 Aug 26, 2022
cf5f57e
Corrected wrong statements
filippoweb3 Aug 26, 2022
e68f398
Added link substrate pallets, small edits to intro
filippoweb3 Sep 1, 2022
843f962
Moved anon proxies at the end
filippoweb3 Sep 7, 2022
4b7352d
Changed position of how-to guides for anon
filippoweb3 Sep 9, 2022
d894e51
Removed multi-sig proxy diagram
filippoweb3 Sep 9, 2022
4ca02d6
Removed image anon proxy diagram
filippoweb3 Sep 9, 2022
0b99839
Moved video up in the section, changed text
filippoweb3 Sep 9, 2022
342dd1c
Added text to compare proxies with Anon
filippoweb3 Sep 9, 2022
864817b
More detailed text added
filippoweb3 Sep 9, 2022
bbfd9d7
Deleted resources section
filippoweb3 Sep 9, 2022
aefd5dd
Added danger banner
filippoweb3 Sep 9, 2022
c9cf5fe
Added benefits of Anon
filippoweb3 Sep 9, 2022
b7a159b
More about anon benefits
filippoweb3 Sep 9, 2022
53bfa96
Update docs/learn/learn-proxies.md
filippoweb3 Sep 12, 2022
cf37341
Update docs/learn/learn-proxies.md
filippoweb3 Sep 12, 2022
da4ae58
Update docs/learn/learn-proxies.md
filippoweb3 Sep 12, 2022
c0c137d
Update docs/learn/learn-proxies.md
filippoweb3 Sep 12, 2022
6e36178
Update docs/learn/learn-proxies.md
filippoweb3 Sep 12, 2022
361d610
Major edits
filippoweb3 Sep 12, 2022
58a0e88
Small fix
filippoweb3 Sep 12, 2022
e07bf84
Tiny edit from grammarly
filippoweb3 Sep 13, 2022
5bde78f
Update docs/learn/learn-proxies.md
filippoweb3 Sep 15, 2022
acdd335
Update docs/learn/learn-proxies.md
filippoweb3 Sep 15, 2022
ae59714
Minor edits
filippoweb3 Sep 15, 2022
edef7fe
Updated screenshots
filippoweb3 Sep 15, 2022
fa1fbf9
Removed "Putting it all together"
filippoweb3 Sep 15, 2022
d1a603d
Changed "why use a proxy"
filippoweb3 Sep 15, 2022
9e6e611
Moved time-delayed proxies
filippoweb3 Sep 15, 2022
ed7ed66
Added Figure about anonymous proxies
filippoweb3 Sep 15, 2022
5207cf7
Minor edits
filippoweb3 Sep 15, 2022
c1540a4
Updated font
filippoweb3 Sep 15, 2022
e9fba32
Added figure why anon proxies
filippoweb3 Sep 15, 2022
d450d28
Removed technical video about anon proxies
filippoweb3 Sep 15, 2022
6fb46cc
Added new tutorial about creating and deleting anon proxies
filippoweb3 Sep 15, 2022
967595f
Updated example and figure description
filippoweb3 Sep 16, 2022
d77b466
Added plot figure
filippoweb3 Sep 16, 2022
9829446
Moved banner removing anon
filippoweb3 Sep 26, 2022
b2269dd
Removed confusing Bold points
filippoweb3 Sep 26, 2022
f1c1921
Changed title structure anon proxies
filippoweb3 Sep 26, 2022
b8807ab
Added part about multisigs and anon
filippoweb3 Sep 26, 2022
6e64006
Added new diagram and description
filippoweb3 Sep 26, 2022
84ad9b5
Added section about proxy calls
filippoweb3 Sep 26, 2022
33daa40
Minor edits
filippoweb3 Sep 26, 2022
c8cfce0
Added figure and description
filippoweb3 Sep 26, 2022
09fe681
Added more details to figure description
filippoweb3 Sep 26, 2022
4e2bca0
Added some more details
filippoweb3 Sep 26, 2022
0065084
Minor edits
filippoweb3 Sep 26, 2022
bc4e159
Renamed figure, added new one
filippoweb3 Sep 26, 2022
a36f02a
Added example multisg with anon proxies
filippoweb3 Sep 26, 2022
12428af
More description details
filippoweb3 Sep 26, 2022
ae725dc
Minor edits
filippoweb3 Sep 27, 2022
d95ae3d
Added link to tutorial video
filippoweb3 Sep 28, 2022
8138cd5
Added section to insert tutorial video
filippoweb3 Sep 28, 2022
cabef28
Corrected figure
filippoweb3 Sep 28, 2022
965c627
Moved info banner up
filippoweb3 Sep 28, 2022
b90c178
Fixed titles capitalization
filippoweb3 Sep 28, 2022
6d29a38
Added link to video tutorial about anons
filippoweb3 Sep 28, 2022
9f0e0b7
Corrected some misconceptions
filippoweb3 Sep 28, 2022
4a52818
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
144874d
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
22419f9
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
63e8674
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
f3aff44
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
909fedd
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
5ff0a73
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
5458389
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
05605d7
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
ac3b226
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
0693b1b
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
0d93a2e
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
ede3060
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
7213551
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
9e11444
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
8e90841
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
a79fa7f
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
866043d
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
518c5f5
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
254ea40
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
eb3972b
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
a25d9b3
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
20b9dc0
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
bfc7533
Update docs/learn/learn-proxies.md
filippoweb3 Sep 29, 2022
6faa362
SEO stuff
filippoweb3 Sep 29, 2022
c805c24
Moved VIP stuff at the beginning and added some additional contexts
filippoweb3 Sep 29, 2022
fca2886
Added italic, details about non-ownership of then anon
filippoweb3 Sep 29, 2022
dc9f015
Added info redenomination anon proxies
filippoweb3 Sep 29, 2022
b4f4115
Tiny edits
filippoweb3 Sep 29, 2022
100834c
Prettified
filippoweb3 Sep 29, 2022
5bbd5ef
Removed old Figures, added new ones (partial)
filippoweb3 Oct 4, 2022
20bae3b
Replaced more figures (partial)
filippoweb3 Oct 4, 2022
97fd1ba
Major edits
filippoweb3 Oct 5, 2022
3630c2e
Deleted banner
filippoweb3 Oct 5, 2022
430f09f
Replaced figure
filippoweb3 Oct 5, 2022
55c76cb
Updated figure description
filippoweb3 Oct 5, 2022
3660cb1
Minor edits to figure description
filippoweb3 Oct 5, 2022
afdb667
Minor edits
filippoweb3 Oct 5, 2022
6bc0be8
Merge branch 'master' into reorg-proxy-page
filippoweb3 Oct 5, 2022
9a572db
Prettified
filippoweb3 Oct 5, 2022
705f617
Reorg proxy deposit
filippoweb3 Oct 5, 2022
a85226c
Added video pure proxies - multisig
filippoweb3 Oct 6, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed docs/assets/multisig_proxy_diagram.png
Binary file not shown.
Binary file removed docs/assets/proxy_anonymous_diagram.png
Binary file not shown.
224 changes: 97 additions & 127 deletions docs/learn/learn-proxies.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,30 @@ slug: ../learn-proxies
---
import RPC from "./../../components/RPC-Connection"

Polkadot provides a module that allows users to set proxy accounts to perform a limited number of
actions on their behalf. Much like the Stash and Controller account relationship in
[staking](learn-staking.md), proxies allow users to keep one account in cold storage and actively
participate in the network with the weight of the tokens in that account.

Check out our Polkadot YouTube video that explains what proxy accounts are:
Much like controller accounts in
[staking](learn-staking.md), proxies allow users to use an account (it can be a stash account in cold storage or another account in a hot wallet) less frequently but actively
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved
participate in the network with the weight of the tokens in that account. Proxies can be viewed as an "extreme" version of a controller account, i.e. proxies are allowed to perform a limited amount of actions related to specific [substrate pallets](https://docs.substrate.io/reference/frame-pallets/) on behalf of another account. Check out the video below about proxies.
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

[![Proxy Accounts](https://img.youtube.com/vi/1tcygkq52tU/0.jpg)](https://www.youtube.com/watch?v=1tcygkq52tU)


## Why use a Proxy?

Proxies are great to use for specific purposes because they add in a layer of security. Rather than
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved
using funds in one sole account, smaller accounts with unique roles complete tasks for the main
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved
stash account. This drives attention away from the main account and to proxies.
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

## Creating Proxies

:::info

To create a **proxy account** read [this support article](https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account).

:::

## Proxy Types

You can set a proxy account via the Proxy module. When you set a proxy, you must choose a type of
You can set a proxy account via the Proxy pallet. When you set a proxy, you must choose a type of
proxy for the relationship. Polkadot offers:

- Any
Expand All @@ -33,18 +45,18 @@ When a proxy account makes a `proxy` transaction, Polkadot filters the desired t
that the proxy account has the appropriate permission to make that transaction on behalf of the cold
account.

### Any Proxies
### Any
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

As implied by the name, a proxy type of **Any** allows the proxy account to make any transaction,
including balance transfers. In most cases, this should be avoided as the proxy account is used more
frequently than the cold account and is therefore less secure.

### Non-transfer Proxies
### Non-transfer
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

Proxies that are of the type **Non-transfer** are accounts that allow any type of transaction except
[balance transfers](learn-balance-transfers.md) (including [vested](learn-DOT.md/#vesting) transfers).

### Governance Proxies
### Governance
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

The **Governance** type will allow proxies to make transactions related to governance (i.e., from the
Democracy, Council, Treasury, Technical Committee, and Elections pallets).
Expand All @@ -57,7 +69,7 @@ governance proxies or watch our

:::

### Staking Proxies
### Staking
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

The **Staking** type allows staking-related transactions, but do not confuse a staking proxy with the
controller account. Within the staking pallet, some transactions must come from the stash account, while
Expand All @@ -66,18 +78,18 @@ controller account makes day-to-day transactions like setting session keys or de
validators to nominate. The stash account still needs to make some transactions such as bonding extra funds or designating a new controller account. A proxy doesn't change the _roles_ of stash and
controller accounts, but does allow the stash to be accessed even less frequently than using a controller account.

### Identity Judgement Proxies
### Identity Judgement
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

The **Identity Judgement** proxies are in charge of allowing registrars to make judgement on an account's
identity. If you are unfamiliar with judgements and identities on chain, please refer to
[this page](learn-identity.md#judgements).

### Cancel Proxies
### Cancel
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

Proxies that are of the type **Cancel** allow accounts to reject and remove any time-delay proxy
announcements.

### Auction Proxies
### Auction
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

Proxies that are of the type **Auction** are accounts that allow transactions pertaining to parachain
auctions and crowdloans. The Auction proxy account can sign those transactions on behalf of an account
Expand All @@ -86,122 +98,14 @@ proxy can do. Before participating in a crowdloan using an Auction proxy, it is
check with the respective parachain team for any possible issues pertaining to the crowdloan rewards
distribution.

### Anonymous Proxies

Polkadot includes a function to create an **Anonymous proxy**. Such type of proxy is the only way of accessing a designated primary account. That is, it generates an address but no corresponding private key. Normally, a primary
account designates a proxy account, but anonymous proxies are the opposite. The account that creates
the proxy relationship is the proxy account and the new account is the primary.

:::danger Use extreme care with anonymous proxies. Once you remove the proxy relationship, the primary account will be inaccessible.

:::

![anonymous proxy](../assets/proxy_anonymous_diagram.png)

:::note Explainer video on anonymous proxies

Learn more about anonymous proxies from our
[technical explainer video](https://www.youtube.com/watch?v=iWq53zXo7dw&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=28&ab_channel=Polkadot).

:::

### Time-delayed Proxies

We can add an additional layer of security to proxies by giving them a delay time. The delay will be
quantified in number of blocks. {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }} has 6
seconds of block-time. A delay value of 10 will mean 10 blocks, which equals to 1 minute of delay.
The proxy will announce it's intended action and wait for the number
of blocks defined in the delay time before executing it. The proxy will include the hash of the
intended function call in the announcement. Within this time window, the intended action may be
cancelled by accounts that control the proxy. Now we can use proxies knowing that any malicious
actions can be noticed and reverted within a delay period.

:::caution The Polkadot-JS UI cannot handle complicated proxy setups
## Removing Proxies

The Polkadot-JS UI cannot handle complicated proxy setups (e.g. a proxy -> multisig
-> an anonymous proxy which is part of another multisig). These complex setups must be done using the
[extrinsics tab](https://polkadot.js.org/apps/#/extrinsics) directly.
:::info Removing proxies

These complex proxy setups should only be performed if you are comfortable enough interacting directly with
the chain, as you will be unable to sign extrinsics using the UI.
The remove proxies read the section "Removing Proxies" on [this support page](https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account).
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

:::

## Why use a Proxy?

Proxies are great to use for specific purposes because they add in a layer of security. Rather than
using funds in one sole account, smaller accounts with unique roles complete tasks for the main
stash account. This drives attention away from the main account and to proxies.

Anonymous proxies, in particular, can be used for permissionless management. In this example below,
there is a multisig with four different accounts inside. Two of the accounts, Alice and Bob, have an
anonymous proxy attached to them. In the case that the multisig account wanted to add or remove
Alice or Bob or even add in a new account into the anonymous proxy, the anonymous proxy would take
care of that change. If a multisig wanted to modify itself without an anonymous proxy, a whole new
multisig would be created.

![anonymous multisig proxy](../assets/multisig_proxy_diagram.png)

## How to set up a Proxy

### Using the Polkadot-JS UI

- [Creating a Proxy](https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account)
- [Creating an Anonymous Proxy](https://support.polkadot.network/support/solutions/articles/65000182196)

### Removing Proxies

Under the [accounts tab in the Polkadot-JS UI](https://polkadot.js.org/apps/#/accounts) there is blue button next to the account that has proxies.
Hovering on the blue button lets you click on a link that says "proxy overview", which displays a pop-up
window like the one shown below. In this pop-up window, you have an option to clear individual proxy accounts
or all of them. Under the hood, the UI is calling the extrinsics `removeProxy` for individual accounts and
`removeProxies` for clearing all of the proxy accounts.

![Remove Proxies](../assets/remove_proxies.png)

The procedure for removing an Anonymous Proxy is different and there are a few functions on the extrinsic page
that will help do this.

:::warning There is no way to get access to the primary account after deleting the anonymous proxy

`removeProxy` or `removeProxies` do not work for anonymous proxies. You must use the
`killAnonymous` function which must be called **from** the *anonymous* proxy.
This means that the anonymous proxy must be added as an account to the Polkadot-JS UI.

:::

The following steps can be used to remove your anonymous proxy:

- **Step 0**: You need to know the following information:

- the **account** you created the anonymous proxy from
- **type of proxy**, index (almost always 0)
- **block height** it was created at
- the **extrinsic index** in the block (on most block explorers, you will see the extrinsic ID listed as something along the lines of "9000-2" -> 9000 is the block height (block number) and 2 is the extrinsic index. You can find this information by looking up your account in a block explorer.

![anon proxy info](../assets/kill-proxy-1.png)

- **Step 1**: Go to https://polkadot.js.org/apps/#/accounts (make sure you are on correct network).
- **Step 2**: Click `Proxied` and add your address, name it `ANON PROXY`. You should now see this address
in accounts. Now you need to call `killAnonymous` from the anonymous proxy. It is important to note that anonymous proxies *work backwards*; the original account acts as the proxy.

![add proxy to delete](../assets/kill-proxy-2.png)

- **Step 3**: Go to https://polkadot.js.org/apps/#/extrinsics
- **Step 4**: Call extrinsic `proxy.killAnonymous` using the selected account ANON PROXY and the following parameters:

- Spawner: (original account)
- Proxy type (kind of proxy)
- Index 0 (almost always, but can be seen in creating extrinsic)
- Block number x
- Extrinsic index y

![call extrinsic](../assets/kill-proxy-3.png)

- **Step 5**: Submit and sign extrinsic

![sign extrinsic](../assets/kill-proxy-3.png)

## How to view your Proxies

To view your proxy, head over to the Chain State (underneath "Developer") page on
Expand Down Expand Up @@ -273,5 +177,71 @@ The required deposit amount for one proxy is equal to:
{{ polkadot: <RPC network="polkadot" path="consts.proxy.proxyDepositFactor" defaultValue={330000000} filter="humanReadable"/> :polkadot }}
{{ kusama: <RPC network="kusama" path="consts.proxy.proxyDepositFactor" defaultValue={110000000} filter="humanReadable"/> :kusama }} * num_proxies

## Resources
[Proxy pallet documentation](https://crates.parity.io/pallet_proxy/index.html)
## Anonymous Proxies (aka key-less anonymous accounts)

:::info

To create an **anonymous proxy account** check out [this support article](https://support.polkadot.network/support/solutions/articles/65000182196).
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

:::

:::note Explainer video on anonymous proxies

Learn more about anonymous proxies from our
[technical explainer video](https://www.youtube.com/watch?v=iWq53zXo7dw&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=28&ab_channel=Polkadot).

:::

:::danger Risk of loss of funds

Read carefully the text below and before performing any action using anonymous proxies on {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }}, experiment on the Westend testnet.

:::

Anonymous proxies are not real proxies. Proxies that we described so far are _existing accounts_ assigned as proxies by a primary account. These proxies act on behalf of the primary account reducing the exposure of the primary account's private key. Remember, the more often we use an account's private key to sign for different things, the more we expose such key to the internet increasing the visibility of that account. The purpose a proxies is thus to draw the attention of potential attackers away from the primary account, as proxies' private keys will be used most of the time to perform actions on behalf of the primary account. We can imagine proxies as bodyguards of a VIP, loyal and ready to risk their life to ensure the VIP's protection.
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

Anonymous proxies are new accounts that are _created_ (not assigned) by a primary account. That primary account then acts as `any proxy` on behalf of the anonymous proxy. Note that, to avoid confusion, in this section we will refer to `Anon` for anonymous proxy. Anon are not real proxies, they are **key-less anonymous accounts** as they do have an address but do not have a corresponding private key and, in some sense, are anonymous and belong to nobody. Nobody owns the Anon, as nobody has a private key to control it. The use of the Anon is strictly bound to the relationship between the Anon and the `Any` proxy (not necessarily the one who created the Anon in the first place). Once that relationship is broken, the Anon will be inaccessible (even if visible on the Polkadot-JS UI). Also, Anon accounts are non-deterministic, this means that if we lose one Anon, the next one we create from the same primary account will have a totally different address.
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

Anon accounts cannot sign anything because they do not have private keys. As a consequence, Anon cannot act as proxies (which is controversial given their original name), and cannot be included in multi-sig. An Anon account acting as a proxy will not be able to sign anything on behalf of the primary account, and an Anon within a multi-sig will not be able neither to initiate nor to approve any call.
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

:::danger

Once you remove the relationship with `Any` proxy, the Anon will be inaccessible. Also, Anon accounts cannot sign for anything. For example, do not include Anon in a multi-sig account.
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

:::

### Why bother about Anon accounts?

Despite their complexity and associated dangers, Anon accounts have a few important benefits:

- **Enhanced security**. Anon accounts cannot be stolen because they do not have private keys. The only accounts that have full access to the Anon are `Any` proxies. Security can be further increased if the `Any` proxy is a multi-signature account.

- **Simplified and secure account management at corporate-level**. Probably the greatest benefit of using Anon accounts is for the management of complex account relationships at corporate-level. Let's take for example 3 Board members Alice, Bob and Charlie. They create a multi-signature account `ABC 1` holding the treasury of their company, and they use it to create the anonymous account `Anon`. They transfer the treasury to the Anon, and they decide to add the multi-signature account `DEF` composed by Dan, Eleanor and Frank (Finance Team) as a staking proxy of Anon to delegate all staking-related actions. After some time, Charlie decides to leave the company. Alice and Bob just have to create a new multi-sig account `ABC 2` (with Carl, the new member of the Board), add it as `Any` proxy to the Anon, and remove `ABC 1`. The rest of the relationships between the Anon and any other proxy stays the same, and the process will always require 4 signatures (two to add ABC 2 as a new proxy, and two remove ABC 1). Without the Anon, the funds will stay on ABC 1. If Charlie leaves, Alice and Bob will have to create ABC 2 with Carl and transfer all funds to it from ABC 1, remove any proxy from ABC 1 and add them to ABC 2. This procedure must be repeated for any modifications of the Board membership. The procedure not only requires much more signatures (4 signatures for each proxy in the case of a multi-sig with `threshold=2`), but it also exposes all funds to potential attackers every time the Board changes its members.
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved

:::caution Removing anonymous proxies

The procedure for removing an Anon is different from the one used to remove proxies. Visit the section "Removing an Anonymous Proxy" on [this support article](https://support.polkadot.network/support/solutions/articles/65000182196).

:::

## Time-delayed Proxies

We can add an additional layer of security to proxies by giving them a delay time. The delay will be
filippoweb3 marked this conversation as resolved.
Show resolved Hide resolved
quantified in number of blocks. {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }} has 6
seconds of block-time. A delay value of 10 will mean 10 blocks, which equals to 1 minute of delay.
The proxy will announce it's intended action and wait for the number
of blocks defined in the delay time before executing it. The proxy will include the hash of the
intended function call in the announcement. Within this time window, the intended action may be
cancelled by accounts that control the proxy. Now we can use proxies knowing that any malicious
actions can be noticed and reverted within a delay period.

:::caution The Polkadot-JS UI cannot handle complicated proxy setups

The Polkadot-JS UI cannot handle complicated proxy setups (e.g. a proxy -> multisig
-> an anonymous proxy which is part of another multisig). These complex setups must be done using the
[extrinsics tab](https://polkadot.js.org/apps/#/extrinsics) directly.

These complex proxy setups should only be performed if you are comfortable enough interacting directly with
the chain, as you will be unable to sign extrinsics using the UI.

:::