Multisig Accounts with the Cere Explorer

Multisig Transactions with Accounts Tab

You can instantiate a multisig account directly on the Accounts Tab of the Cere Explorer, and utilize this account for fund transfers.

Multisig Transactions with Extrinsic Tab

A multisig account facilitates three types of actions:

In situations necessitating only a single approval, the convenience method as_multi_threshold_1 should be utilized. This function only requires the other signatories and the raw call as arguments. It should be noted that the Cere Explorer lacks integration for this call since multisig accounts with threshold=1 cannot be created. In case you need to create a multisig with threshold 1, you can utilize txwrapper-core, which is developed and maintained by Parity Technologies. A comprehensive multisig example is available for reference and modification to understand the underlying functionality.

However, in scenarios that require more than a single approval, multiple signatories will likely need to endorse the call before its final execution. When you initiate a new call or approve a call as a multisig, a nominal deposit is required. This deposit remains locked in the pallet until the execution of the call. This deposit is instituted to impose an economic cost on the storage space that the multisig call occupies on the chain and dissuade users from creating dangling multisig operations that never get executed. The deposit will be reserved in the caller's accounts, so multisig wallet participants should have supplementary funds available.

The deposit is contingent on the threshold parameter and is calculated as follows:

Deposit = depositBase + threshold * depositFactor

Here, depositBase and depositFactor are chain constants (denoted in CERE units) established in the runtime code. At present, the deposit base equals 20.088 CERE, and the deposit factor equals 0.032 CERE.

Consider a multisig on Cere with a threshold of 2 and three signers. This can be done in the Cere Explorer or using Polkadot{.js} API.

The signed call is a serialized form of the call. If you want to decode the signed call data, you will need the metadata for the chain and the call data. You can fetch the metadata and the call data from the Substrate chain. It's important to note that the decoding process varies depending on whether the call is being made to a pallet or to the core runtime.

The signed call data is the actual encoded version of the method (including the module and function name) and the parameters that you want to pass to it. You can use Polkadot{.js} API to decode the call data. For example, you can use the api.createType('Call', signedCall).toHuman() method in the Polkadot{.js} API to convert the signed call into a human-readable format.

Example 1

Let's say, Alice, Bob, and Charlie want to create a 2-of-3 multisig to manage their startup's funds jointly. Let's see how it's done:

  1. Add everyone else's account to the Address Book on Cere Explorer.

    We'll play as Alice, but the other two need to do the same. Obviously, we assume that everyone has access to their own account on the Accounts page.