Argent’s Multisig is a must-have for companies, protocols and DAOs holding crypto. If you’re building on Starknet, or holding large amounts of capital, then this article is a must-read.
Our Multisig is tailor-made for the Starknet ecosystem, and we’ve harnessed account abstraction to offer unrivaled security, simplicity and extensibility.
Below you’ll find an overview of our Multisig design, its benefits, and a step-by-step guide.
What is a multisig?
Short for multisignature wallet, a ‘multisig’ is a cryptocurrency wallet that requires multiple signatures to execute a transaction. A standard crypto wallet requires only a single signature.
In a multisig wallet, any owner can initiate a transaction. However, it stays pending until the other owners also sign it. Once the signature threshold is reached, the transaction is submitted to the blockchain. If owners disagree on a transaction, they can cancel it before signing.
Argent’s Approach to Building a Multisig
The image below shows two different approaches to constructing a multisig:
On the right you can see how traditional multisigs are designed, particularly in the EVM space. The multisig is controlled by standard accounts (i.e. EOAs in EVM space), which are controlled by signers (i.e. private keys). Due to the lack of account abstraction, that was the best solution for designing a multisig.
The illustration on the left shows the design of Argent’s Multisig. By leveraging Starknet’s native account abstraction, it is possible to build a much simpler and more direct form of a multisig account. As shown in the illustration, there is no need for single accounts per signer. A signer can directly interact with the multisig account. This brings a few advantages that we will highlight below.
Advantages of Argent’s Multisig
Security: Our contracts are already implemented in the new and more secure Cairo1 language. Furthermore, the smart contracts have been carefully audited by Consensys Diligence. Check out the audit to understand the details.
Simplicity: Compared to the traditional multisig approach in the EVM space, our approach implements multisig accounts in a much simpler and more direct way. From a technical point of view, the account is like any other account except that it requires more signatures to execute a transaction. This has a couple of advantages:
- Transaction fees: Multisig can pay for its own gas fees, which is better for teams. In a traditional EOA multisig the last owner needs to pay for the transaction execution. It’s also easier to track transaction fees for your team. Your accountants will thank us later.
- Transaction execution:Executing a transaction simply needs the required signatures, which can be efficiently synchronised off-chain. This ensures quick and reliable transaction execution, even for extensive multisig setups.
Extensibility: The Multisig smart contract fills a crucial gap on Starknet. We designed it to be open for future extensions, free of custom logic or ties to Argent wallets. This allows anyone to build applications on it or customise the basic Multisig contract as needed.
Here's how Argent's Multisig flows from a more technical standpoint:
How multisig works:
Creating/Joining a multisig
With the latest Argent X release, users can now create or join “multisig accounts” in addition to “Standard accounts”. When a user creates or joins a new multisig account, Argent X generates a private and public keypair for the user (like for standard accounts).
We refer to the private key as “signer key” and to the public key as “signer pubkey”. On the Argent X UI, whenever a user interacts with the other owners, represented by their “signer pubkeys”, they will be shown encoded as “Base58” to avoid any confusion with account addresses or private keys.
Setting the owners and the threshold
The creator can define a multisig with 1 to 32 owners (i.e. signer pubkeys) depending on the needs of the team. And, the creator needs to define a threshold like “3 out of 5”, i.e. the required signatures out of all owners to execute a transaction.
Funding and activation
Once the multisig is defined, the creator needs to fund it with a bit of ETH to be able to activate it. That’s a simple deployment of the smart contract with the defined parameters like signer pubkeys and threshold on Starknet. After completion, the multisig is active and any change to it will require a transaction that needs the required confirmation of the owners.
Creating a transaction request
Every owner can initiate a transaction request (eg. send Eth) at any time by “confirming a transaction” like they are used to with standard accounts. The transaction request and the signatures will be shared off-chain through Argent’s backend with the other owners of the multisig. An owner can always check the status of an “transaction request” on the activities. The transaction will be executed on-chain as soon as the required number of owners have provided their signatures for it.
Signing a transaction request
When an owner opens their multisig account they will see a notification on the activities if there is a pending transaction request. They can review the full transaction details and existing signatures (of the other owners) and then decide to confirm or reject it.
When the number of confirmations reaches the threshold, the transaction is sent to the sequencer (or RPC node) and will be executed on-chain
Creating your first multisig wallet
The following section is a step-by-step guide to setting up multisig:
1. Download Argent X
Add the Argent X extension to your Chrome browser, open it up, and click "Create Account"
2. Selecting your account
Select “Multisig Account”
3. Fill in the signer pubkeys of the other owners
You will be redirected to an expanded version of Argent X, fill in the signer keys for the Multisig and click “Next”. You can add as many signers/owners as you want. It’s required to use signer pubkeys from different Argent X wallets for security purposes.
4. Get the signer keys from other owners
To get signer pubkeys from other owners, ask them to follow the same process in step 1. When they are on step 2, they need to select “Join existing Multisig”. This will generate their signer pubkey, which they send to you.
5. Set the multisig threshold
Select the threshold. This is the number of valid signatures required to execute a transaction. Then click “create multisig”.
6. Fund and activate the multisig
Now that your multisig has been successfully created, you need to add some funds (ETH) to it and activate it with a simple deploy transaction.
7. Set-up complete ☑️
Once deployed, any owner of the multisig can request to execute transactions.
Now that your multisig is up and running, let’s tell you what's on the horizon.
Multisig is the most secure wallet for Starknet but we will continue to add more features to expand its capabilities. Here are some of the features in the pipeline:
- Additional signer options: You asked for it, and we listened. With upcoming releases, we’ll be adding new signer options, such as Ledger, and mobile wallets.
- Transaction queuing: with upcoming releases, you will also be able to queue multiple transactions.
- Better Notifications: Receive an email if you have a pending transaction request.
And so many more…
Argent’s multisig contracts are written in Cairo 1, and have been audited by Consensys Diligence. Our goal is to offer teams a secure place for their funds and secure shared control for their most critical smart contracts.
We want to build a product that suits your needs, so if you have any questions, feedback, or constructive criticism, please reach out to me @0xdarlington, I’d love to help you build on Starknet with Argent.
For more developer resources, follow us across our socials:
Argent Twitter — @argentHq
Argent Engineering Twitter — @argentDeveloper
LinkedIn — @argentHq
Youtube — @argentHQ