Multisig

Multisig Addresses & Accounts

Each multisig created is referenced by an address that is a PDA. The PDA is derived from a createKey which is also saved in the multisig account for later derivation. The createKey can be random, or even a wallet's public key, but it is important to note this createKey so one can easily reference or fetch multisigs for later use.

The Multisig address is derived via the Solana Web3 function findProgramAddress, using the following seeds and format:

anchor.web3.PublicKey.findProgramAddress([
    anchor.utils.bytes.utf8.encode("squad"),
    createKey.toBuffer(),
    anchor.utils.bytes.utf8.encode("multisig")
], programId)

The format for multisig PDAs is:

["squad", createKey, "multisig"]

For a more in-depth look at what data is being store on-chain for a multisig, you can inspect the Ms struct in the Squads MPL repo.

Last updated