Multisig Safe{Wallet} Setup
Safe{Wallet} (formerly Gnosis Safe) is de facto standard multisig wallet in EVM ecosystem. Over $100 billion in assets under management, audited contract, built-in UI on app.safe.global. Setting up correct multisig — not just clicking "create": need to choose threshold correctly, configure owners, understand gas implications, optionally connect Safe Guard for policy enforcement.
Key Parameters on Creation
Owners — addresses whose signatures accepted by contract. Each owner — EOA or smart contract (e.g., another Safe). Use hardware wallet addresses for owners, not MetaMask browser keys.
Threshold (M-of-N) — how many signatures needed for transaction execution. For team treasury: 3-of-5 or 2-of-3. Don't make 1-of-N for real funds — this single point of failure. Don't make N-of-N — losing one key blocks everything.
Chain — Safe deployed separately on each network. Same Safe address can be obtained on different networks via Safe Factory with same saltNonce — useful for multichain treasury with single address.
Setup Process
Creation via app.safe.global: select network → add owners → set threshold → pay deployment (gas). Contract deployed via SafeProxyFactory, proxy created to verified implementation contract.
For programmatic creation — Safe{Core} SDK:
import { SafeFactory } from '@safe-global/protocol-kit'
const safeFactory = await SafeFactory.create({ ethAdapter })
const safe = await safeFactory.deploySafe({
safeAccountConfig: {
owners: ['0xAlice...', '0xBob...', '0xCarol...'],
threshold: 2,
},
saltNonce: '0x123' // for deterministic address
})
Safe Guard: Restrictions on Top of Multisig
Safe Guard is smart contract called before each transaction from Safe. Allows adding policies: recipient address whitelist, spending limits, forbid certain functions.
Without Guard: any 2-of-3 owners can send any transaction anywhere. With Guard: additional logic checks, can't bypass even with full quorum.
Signing and Executing Transactions
Transaction created in Safe UI or via SDK. Each owner signs off-chain (no gas). After threshold signatures collected — anyone may call execTransaction on-chain and pay gas. Doesn't have to be owner.
| Operation | Gas cost (Ethereum mainnet) |
|---|---|
| Deploy Safe | ~280,000 gas |
| execTransaction (2-of-3) | ~120,000–150,000 gas |
| Add owner | ~80,000 gas |
| Change threshold | ~50,000 gas |
On L2 (Arbitrum, Base, Optimism) gas magnitudes lower — Safe significantly cheaper there.
Security Recommendations
Each owner stores key on separate hardware wallet. Backup seed-phrase — physically, in different places. On team member change — add new owner, remove old via Safe transaction (requires current quorum). Never set threshold = total owners: losing one key = losing access.
Setup Safe for team of 2 to 20 participants with proper policies — 1-3 days work.







