⚡ Tóm tắt — Đọc trong 60 giây
Multisig: M trong N người phải đồng ý mới thực hiện được giao dịch
Multisig (Multi-Signature) Wallet là loại ví yêu cầu ít nhất M chữ ký hợp lệ trong số N người ký (signers) được ủy quyền trước khi giao dịch được thực thi. Ví dụ 2-of-3: có 3 signers, cần bất kỳ 2 người nào đồng ý để giao dịch thực hiện. Mất hoặc bị compromise 1 key không ảnh hưởng — vẫn cần M chữ ký.
Trên Bitcoin, multisig dùng P2SH/P2WSH script. Trên Ethereum, Gnosis Safe là implementation phổ biến nhất — smart contract đã hold hàng chục tỷ USD không bị hack. Safe là tiêu chuẩn de-facto cho DAO treasury, fund management, và bất kỳ tổ chức nào cần quản lý crypto tập thể.
M-of-N
Threshold
M phê duyệt trong N signers
On-chain
Smart contract
Logic transparent, auditable
Gnosis Safe
Tiêu chuẩn
$50B+ được bảo vệ
DAO
Treasury chuẩn
Uniswap, Aave, mọi protocol
Trước multisig, mọi ví crypto đều dùng mô hình single-key: 1 private key kiểm soát hoàn toàn tài sản. Đây là single point of failure — ai có key đó là có tất cả. Trong môi trường tổ chức, điều này không thể chấp nhận được.
Multisig (Multi-Signature) là cơ chế yêu cầu nhiều private keys ký cùng nhau mới có thể thực hiện giao dịch. Nguyên tắc M-of-N: setup N signers, cần ít nhất M signatures hợp lệ. Bất kỳ tập hợp M signers nào trong N đều có thể approve — không cần specific M người cụ thể.
Tại Sao Cần Multisig?
- Loại bỏ single point of failure: 1 key bị compromise không đủ để hack
- Quản lý tập thể: Treasury của DAO cần nhiều người đồng ý — không ai một mình kiểm soát
- Separation of duties: Người đề xuất tx và người approve có thể là nhóm khác nhau
- Recovery: Mất 1 key vẫn có thể dùng ví với keys còn lại
- Audit trail: Mọi approval được ghi on-chain — minh bạch hoàn toàn
Gnosis Safe — Transaction Flow
Signer A ──▶ proposeTransaction(to, value, data)
│ tx được lưu off-chain (IPFS hoặc Safe backend)
│ hash = keccak256(tx params + nonce)
▼
Signer B ──▶ approveHash(txHash) ── on-chain signature
Signer C ──▶ approveHash(txHash) ── on-chain signature
│ threshold (2-of-3) reached
▼
Any signer ──▶ execTransaction() ── executes on-chain
└── emits ExecutionSuccess event
Gnosis Safe có 2 cách approve: on-chain approval (gọi approveHash — tốn gas, rõ ràng trên explorer) và off-chain signature (ký EIP-712 typed data, submit cùng lúc execute — tiết kiệm gas). Thực tế hầu hết dùng off-chain signatures gom lại trong 1 execTransaction call.
| Khía cạnh | Bitcoin Multisig | Ethereum Multisig (Safe) |
| Mechanism | Bitcoin Script (P2SH/P2WSH) | Smart Contract (EVM) |
| Address format | 3... (P2SH) hoặc bc1q... (P2WSH) | 0x... (contract address) |
| Max signers | 15 (P2SH), unlimited (P2WSH) | Không giới hạn |
| Flexibility | Fixed M-of-N, khó thay đổi | Thay đổi được signers và threshold |
| Gas overhead | Tốn fee theo script size | Smart contract execution gas |
| Upgradability | Không — phải migrate funds | Có thể upgrade contract logic |
| Native chain support | Bitcoin only | Mọi EVM chain |
| Tools | Sparrow Wallet, Electrum | Safe{Wallet}, Tenderly |
Gnosis Safe (nay là Safe{Wallet}) là smart contract multisig wallet được deploy trên Ethereum từ 2018 và hiện available trên 40+ EVM chains. Đây là implementation được audit kỹ nhất trong lịch sử Ethereum — hàng chục firm security đã review code, không có critical vulnerability nào.
Architecture
- Safe Proxy: Contract nhẹ mỗi user deploy — delegatecall đến Safe Singleton
- Safe Singleton: Implementation contract dùng chung — tiết kiệm gas deployment
- Modules: Extensions thêm tính năng (time-lock, spending limit, recovery module)
- Guards: Hook chạy trước/sau mỗi transaction để validate
// Gnosis Safe — Tạo và execute transaction cơ bản (ethers.js)
import { ethers } from "ethers"
import { Safe, SafeFactory } from "@safe-global/protocol-kit"
// Deploy new Safe 2-of-3
const safeFactory = await SafeFactory.create({ ethAdapter })
const safe = await safeFactory.deploySafe({
safeAccountConfig: {
owners: [signerA, signerB, signerC], // 3 signers
threshold: 2 // cần 2/3
}
})
// Tạo transaction
const safeTransaction = await safe.createTransaction({
transactions: [{
to: recipientAddress,
value: ethers.parseEther("1.0").toString(),
data: "0x"
}]
})
// Signer A ký
const signedTx = await safe.signTransaction(safeTransaction)
// Signer B ký thêm và execute
const txResponse = await safe.executeTransaction(signedTx)
🏆
Safe trong thực tế
Uniswap, Aave, Compound, Lido, ENS, Gitcoin, Optimism — mọi DeFi protocol lớn đều dùng Gnosis Safe cho treasury. Tổng giá trị được bảo vệ bởi Safe đã vượt $100 tỷ USD tại peak. Code open-source: github.com/safe-global/safe-contracts.
| Config | Chịu được | Cần để ký | Use case |
| 1-of-2 | 1 key down | 1 người | Cá nhân có 2 devices — không nên dùng cho lớn |
| 2-of-3 | 1 key compromised | 2 người | Small team, startup, personal large holdings |
| 3-of-5 | 2 keys down/compromised | 3 người | Mid-size DAO, fund management |
| 4-of-7 | 3 keys down | 4 người | Large DAO treasury, protocol governance |
| 6-of-11 | 5 keys down | 6 người | Major protocol như Uniswap, Aave |
Nguyên Tắc Chọn Threshold
- Threshold nên ≥ ceil(n/2) để đảm bảo majority agreement (tránh split decision)
- Không dùng 1-of-N cho bất kỳ số tiền đáng kể nào — loại bỏ hoàn toàn bảo vệ
- Diversity: Signers nên ở địa lý khác nhau, dùng hardware wallet khác loại
- Operational overhead: Threshold cao = khó coordinate cho urgent transactions
- Emergency mechanism: Cân nhắc timelock + lower threshold cho emergency scenarios
DAO treasury là use case phổ biến nhất của multisig. Số tiền lớn, nhiều stakeholders, yêu cầu minh bạch và phòng tránh rogue actor — tất cả điều này phù hợp hoàn hảo với multisig design.
Cấu trúc Điển Hình của DAO Treasury
- Governance multisig: 5-of-9 hoặc 6-of-11 — kiểm soát main treasury, threshold cao, slow process
- Operational multisig: 2-of-4 — chi tiêu hàng ngày (contributor payments, expenses), threshold thấp hơn, faster
- Emergency multisig: 2-of-3 core team — chỉ dùng emergency (security incident), kèm timelock ngắn
Workflow Thực Tế
Contributor tạo proposal trên Snapshot (off-chain governance). Sau khi community vote pass, multisig signers review và approve execution trên Safe. Với Zodiac module, Safe có thể execute on-chain proposals tự động sau quorum đạt được — không cần manual signing từng transaction.
Timelock là smart contract thêm vào một khoảng thời gian chờ (thường 24–72 giờ) giữa lúc transaction được propose và lúc có thể execute. Dù multisig đã đủ chữ ký, transaction vẫn phải chờ hết timelock mới execute được.
Lợi ích: cộng đồng và security researchers có thời gian phát hiện và phản ứng nếu có giao dịch đáng ngờ. Gnosis Safe kết hợp với TimelockController (OpenZeppelin) hoặc Zodiac Delay module để implement timelock.
🚨
Bài học Ronin Bridge — Multisig sai cách
Ronin Network mất $625M tháng 3/2022 do multisig setup sai. Họ dùng 5-of-9 nhưng để 4 key trên cùng một server của Sky Mavis — attacker compromise server đó, lấy 4 keys. Cộng thêm 1 key từ Axie DAO (do Sky Mavis nắm giữ để xử lý transactions nhanh nhưng chưa revoke), tổng 5 keys. Bài học: diversity của signers phải thực sự phân tán — cùng tổ chức kiểm soát không tính là separate signers.
Key Ceremony
Khi setup multisig lần đầu, cần thực hiện key ceremony: mỗi signer generate key của họ một cách độc lập (không ai biết key của người khác), verify public keys trên nhiều kênh, sau đó deploy Safe contract với danh sách signers. Nếu một signer generate key "không an toàn" (dùng tool bị compromise, môi trường không sạch), toàn bộ setup có thể bị ảnh hưởng.
Signer Rotation
Khi signer rời team hoặc key bị compromise: sử dụng đủ M signers hiện tại để call swapOwner() trên Safe — thay thế signer cũ bằng địa chỉ mới. Quan trọng: phải revoke ngay khi phát hiện, không trì hoãn. Cần quy trình rõ ràng cho signer offboarding.
Lỗi Phổ Biến Nhất
- Signers tập trung: Cùng tổ chức hoặc cùng server quản lý nhiều keys (Ronin case)
- Không test recovery: Chưa bao giờ thực hành quy trình signer rotation trước khi cần thật
- Threshold quá thấp: 1-of-3 setup để "tiện" nhưng loại bỏ bảo vệ
- Không có backup signer: Signer chính mất liên lạc, giao dịch urgent bị block
Đọc thêm về các vụ hack liên quan multisig tại Các Vụ Hack Ví Lớn Nhất.
Multisig có tốn gas hơn ví thường không?+
Có — Gnosis Safe là smart contract account, tốn thêm khoảng 40.000–100.000 gas so với EOA tương đương. Overhead bao gồm: storage access cho signer list, validation logic, emit events. Với gas price thấp trên L2 (Arbitrum, Base), overhead này rất nhỏ và không đáng kể. Bitcoin multisig (P2SH) tốn thêm vài sats do script size lớn hơn.
3-of-5 hay 2-of-3 — setup nào tốt hơn?+
Phụ thuộc threat model. 2-of-3: đơn giản, cần 2 người approve — phù hợp nhóm nhỏ tin tưởng cao. 3-of-5: chịu được 2 người down/compromise đồng thời — phù hợp tổ chức lớn hơn. Rule of thumb: threshold nên ≥ ceil(n/2). Tránh 1-of-2 (quá yếu) và threshold quá cao (operational nightmare). DAO lớn thường dùng 4-of-7 hoặc 6-of-11.
Mất 2 key trong 3-of-5 multisig có recover được không?+
Không — nếu còn lại dưới threshold (3), không thể thực hiện bất kỳ transaction nào. Funds bị locked vĩnh viễn. Đây là lý do cần backup strategy nghiêm túc: mỗi signer backup key ở nơi an toàn. Một số setup thêm 1 emergency key được lưu đặc biệt để xử lý recovery scenarios.
Gnosis Safe có audit không?+
Có — Gnosis Safe là smart contract được audit nhiều nhất trong Ethereum. Audit bởi G0 Group, OpenZeppelin, Solidified, ConsenSys Diligence và nhiều firm khác từ 2017 đến nay. Contract đã hold hàng chục tỷ USD không bị hack kỹ thuật (chỉ lỗi operational của users). Code open-source tại github.com/safe-global/safe-contracts.
Tài Liệu Tham Khảo
- Gnosis Safe Contracts — GitHub (safe-global)
- Safe{Core} Documentation — safe.global
- OpenZeppelin TimelockController
- OpenZeppelin — On the Security of Multisig Wallets
- Safe Signatures Documentation
- EIP-712 — Structured data signing