Proxy Accounts (Proxies) allow users to use an account less frequently but actively participate in the network with the weight of the tokens in that account. Proxies are allowed to perform a limited amount of actions related to specific substrate pallets on behalf of another account.

Why use a Proxy?

Proxies are helpful because they let you delegate efficiently and add a layer of security. Rather than using funds in a single account, smaller accounts with unique roles can complete tasks on behalf of the main stash account. Proxies can be hotter than the initial account, which can be kept cold, but the weight of the tokens in the colder account can be used by the hotter accounts. This increases the security of your accounts by minimizing the number of transactions the cold account has to make. This also drives attention away from the stash account, although it is possible to determine the relationship between the proxy and the proxied account.

From the security perspective, we can imagine proxies as bodyguards of a VIP, loyal and ready to risk their lives to ensure the VIP's protection. But proxies are also useful in other contexts such as efficient account management at the corporate level. They also provide an elegant solution to change signatories within multi-signature accounts, and they can be used within proxy calls and nested proxy calls. In this page we will explore all these interesting use cases of proxies within the Cere ecosystem.

For example, having a staking proxy will make the stash account isolated within the staking context. In other words, the account assigned as a staking proxy can participate in staking on behalf of that stash. Without the proxy you will need to sign all the staking-related transactions with the stash. If the proxy is compromised, it doesn't have access to transfer-related transactions, so the stash account could just set a new proxy to replace it.

Creating multiple proxy accounts that act for a single account, lets you come up with more granular security practices around how you protect private keys while still being able to actively participate in the network.

The maximum number of proxies allowed for a single account is 32.

You can have the same proxy for multiple accounts.

Creating Proxy

The Accounts Tab in the Cere Explorer cannot handle complex 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 in Cere Explorer directly.

Proxy Types

You can set up a proxy account via the proxy pallet. When you set a proxy, you must choose a type of proxy for the relationship. When a proxy account makes a transaction, Cere filters the desired transaction to ensure that the proxy account has the appropriate permission to make that transaction on behalf of the cold account. For example, staking proxies have permission to do only staking-related transactions.

Cere offers the following Proxy Types:

Any Proxy: 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 Proxy: Proxies that are of the type Non-transfer are accounts that allow any type of transaction except balance transfers. Hence, this proxy does not have permission to access calls in the Balances and XCM pallet.

Governance Proxy: The Governance type will allow proxies to make transactions related to governance.

Staking Proxy: The Staking type allows all staking-related transactions. The stash account is meant to stay in cold storage, while the staking proxy account makes day-to-day transactions like setting session keys or deciding which validators to nominate. The staking proxy can fully access Staking, Session, Utility and Fast Unstake pallets.

Identity Judgement Proxy: The Identity Judgement proxies are in charge of allowing registrars to make judgments on an account's identity. This proxy can only access provide_judgementcall from the Identity pallet along with the calls from the Utility pallet.

Cancel Proxy: Proxies that are of the type Cancel allow accounts to reject and remove any time-delay proxy announcements. This proxy can only access reject_announcement call from the Proxy pallet.