I am new to the smart contract world. I am tasked with the following situation:

Building a multi-sig vault that different clients can use.

I see 2 approaches

  1. Create 1 smart contract that stores all user addresses and balances, all implementation details are in 1 smart contract.
  2. Create a multi-sig vault contract that works for 1 user, and then create a smart contract clone factory that can create clones of the single-user multi-sig vault.

I am unsure how to analyze the pros and cons of the 2 approaches, especially if generic state variables (variables that apply to every vault) need to be changed. Any advice on this?


  • I would go for single contract, since paying for new contract is a lot of money, users won't want to use your service if it is expensive to sign up
    – Nulik
    Mar 2, 2023 at 21:36

2 Answers 2


What is the point of approach 2?

  • Create a multi-sig vault contract that works for 1 user.

How it gonna be 'multisig' if only 1 user have permissions on it?

Here's a generic multisig wallet example: https://solidity-by-example.org/app/multi-sig-wallet/

If you need to create clones of this instance, you can then use Factory contract to mint new multi-sig wallets.

Here's a good guide for it: https://betterprogramming.pub/learn-solidity-the-factory-pattern-75d11c3e7d29

Good luck.

  • I need to build a custom solution for a client, which requires 1 user to have "admin" control, and the other users work in the multi-sig fashion. Would you recommend the clone method or 1 contract method for gas efficiency?
    – pranp2001
    Mar 2, 2023 at 6:11
  • @pranp2001 i would suggest you to use the example from the first link i provided, combined with OpenZeppelin's Owned library. You can make an ownerOnly function that would proceed any transaction without any other confirmations, while the rest of the rest of the code will work as normal multi-sig wallet for the rest of the users.
    – Akall
    Mar 3, 2023 at 8:24

It depends on the use case.

One disadvantage of 1 is that all your users will share the same wallet address.

A disadvantage of 2 is that it will be slightly more expensive, since you have to deploy one proxy contract per user.

Your Answer

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

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