PAW Documentation

Multi-party Computation

Multi-Party Computation (MPC)

An Introduction to Multi-Party Computation
Cryptocurrencies are essential tools for anyone dealing with crypto. However, they are not all the same. Think of crypto wallets as digital vaults. They offer convenience and accessibility, making them important for modern, decentralized finance.

Crypto wallets don't actually store your cryptocurrencies. Instead, they hold your private key, which you need to access and use your funds. If your private key is compromised, all the assets linked to it are at risk.

One variant of cryptocurrency, multisig, has the well-known two-step signature and requires a multi-signature. However, there's another option gaining attention, especially useful for institutions such as exchanges and wallet companies: Multi-Party Computation (MPC) wallets. These wallets offer unique benefits and are becoming increasingly popular in certain sectors for the control and flexibility they offer.

What is MPC?
Multi-Party computation (MPC) wallets combine the strength of single-signature and multi-signature wallets into one solution. Unlike a single wallet that may store multiple private keys, MPC divides multi-private keys into distributable cryptographic shares. Each participant holds one share, ensuring only single authority from accessing the complete key. To authorize transactions or reconstruct the key, a predefined number of shares, known as the threshold, must be combined.

This approach, known as Secret Sharing, enables secure transaction signing without revealing private keys among participants. Unlike multi-sig wallets, which demand one or more bonded parties to allow key shares to be processed independently across different devices. This distribution minimizes the risk of a single point of failure and protects against corruption.

Advantages of MPC

  • Secure custody: With MPC, the complete private key is never present on any single device throughout its lifecycle, even during usage. Security is boosted through shared responsibility, which protects against compromising theft of the total cryptographic key.
  • Flexibility: A highlighted advancement of MPC over multi-sig is its flexibility. Unlike multi-sig, MPC allows for ongoing modification and maintenance of the signature scheme.
  • Enhancements: Changes from "2 of 3" to "3 of 4" set-ups would only require existing parties to agree on the new policy and the addition of a new signer.

Disadvantages of Multi-Sig

  • Privacy: In a multi-signature setup, each party signs transactions on the blockchain, revealing the wallets involved in each transaction. This transparency allows anyone to trace the identities associated with these wallets through the transaction history stored on the blockchain.
  • Transaction speed: Usually, each party has to individually sign the transaction on-chain, which can slow down the transaction process. Each party holds their own key, typically linked to their personal wallet, and must independently sign the transaction.
  • Inflexibility: The structure of a multi-signature setup is closely linked to the address. This means that modifying the access policy, such as adding or removing users from the group, is not possible. To make these configurations, funds must be transferred to a new multi-signature address.
  • Transaction costs: Multi-signature wallets such as Gnosis Safe operate as smart contracts, which can increase gas costs. Inherent MPC levels of signing transactions from a hot wallet, might contribute to enhanced multi-party approval, where only a single signature is sufficient to seal the blockchain. This approach leads to savings in long-term fees, potentially saving thousands of dollars long term.

General MPC Wallet Transaction Flow

  1. Initiate Transaction: A transaction request is sent to the wallet provider's server.
  3. Generation of Random Numbers: The server generates a random number and sends it to the user's private key share.
  5. Send Encrypted Number: The server sends the encrypted random number back to the user.
  7. Decryption of the Number: The user decrypts the random number with their private key share.
  9. Sign Transaction: The user signs the transaction using the random number.
  11. Return Signed Transaction: The user sends the signed transaction to the server.
  13. Combination of Signatures: The server combines the user's signature with those of other parties involved in the transaction.
  15. Publish Transaction: The transaction is broadcasted to the blockchain for block confirmation.

This sequence makes it secure and coordinated signing transactions in an MPC setup.