Skip to main content
Version: 0.14 (unstable)

Core Concepts

Transaction lifecycle

Every multisig transaction follows the same lifecycle: propose, sign, execute, sync.

  1. Propose: The proposer builds a TransactionSummary locally, signs it, and pushes it to Guardian as a delta proposal.
  2. Sign: Each cosigner fetches pending proposals, verifies the transaction details against their local state, and submits their signature.
  3. Execute: Once the threshold is met, any participant pushes the final delta (with all signatures). Guardian returns the acknowledged delta. The executor builds and submits the on-chain transaction.
  4. Sync: All participants fetch the latest state from Guardian to stay synchronized.

Key architecture: 2-of-3 setup

A common configuration uses a 2-of-3 threshold:

KeyHolderPurpose
Key 1User hot keyDaily transactions
Key 2User cold keyRecovery and emergency override
Key 3Guardian service keyCo-signing and policy enforcement
  • Normal operations: Hot key + Guardian's co-signature are sufficient.
  • Emergency override: Hot + cold keys alone can rotate out Guardian or switch providers.
  • Guardian alone cannot move funds: It holds only one key in the threshold.

Transaction types

TypeDescription
Transfer (P2ID)Send assets to another account
Consume notesSpend incoming notes
Add signerAdd a new cosigner to the multisig account
Remove signerRemove a cosigner
Change thresholdUpdate the required signature count
Switch GuardianChange the Guardian provider endpoint

Signer types

The TypeScript SDK supports multiple signer backends:

SignerSchemeUse case
FalconSignerFalconLocal Falcon key (default)
EcdsaSignerECDSALocal ECDSA key
ParaSignerECDSAExternal EVM wallets via Para SDK
MidenWalletSignerAnyMiden Wallet browser extension

Offline fallback

If Guardian is unreachable, the SDKs support fully offline workflows:

  1. Create a proposal locally and export it as JSON.
  2. Share the file with cosigners through any side channel.
  3. Each cosigner signs offline and returns the signed file.
  4. Once the threshold is met, execute the transaction on-chain.

This ensures multisig operations remain functional even without Guardian connectivity.