Documentación / Conceptos de Bittensor / Seguridad
Multisig, explained: tutorial
What a Bittensor multisig is, how M-of-N works, and how to create a wallet, run public and private transactions, and cancel one, with video walkthroughs.
Última revisión: 2026-10-30
A normal wallet has one key. Whoever holds that key controls everything, and if it leaks, everything is gone, irreversibly. A multisig ("multi-signature") account fixes that by requiring several keys to agree before anything moves. This tutorial covers why you would use one, how it works, and how to create, run and cancel multisig transactions in Taostats Actions.
Why you'd use one
A single key is a single point of failure in both directions:
- If it's stolen. A compromised laptop, a phished seed phrase or one bad dependency, and an attacker drains the account. There is no undo, no support line and no chargeback.
- If it's lost. Lose the one key (a dead drive, a forgotten phrase) and the funds are frozen forever. Same finality, opposite cause.
A multisig removes that single point of failure. Funds live at an address controlled by a group of keys, and a transaction only goes through once enough of them approve. That gives you:
- Theft protection. A thief with one key can propose a transfer but cannot execute it. The other signers see the pending request and never co-sign.
- Loss protection. Lose a key and you have lost nothing: the remaining signers can still move the funds to a fresh account.
- Shared control. A team treasury where no one person can move money alone. Every payment needs a second (or third) pair of eyes.
How they work: M-of-N
A multisig is described by two numbers, written M-of-N:
- N is the total number of member keys (the signatories).
- M is the threshold: how many of them must approve before anything happens.
A 2-of-3 multisig has three member keys and needs any two of them to sign. A 3-of-5 has five members and needs any three.
The address is derived, not created
There is no key that unlocks a multisig. Its address is calculated from the member set plus the threshold: the same keys and the same M always give the same address, on any machine. Nobody holds "the multisig key"; there are only the members' own keys, working together.
Picking your numbers is a trade-off
Raising the threshold M makes the account harder to attack but easier to lock yourself out of. The gap between N and M is your safety net: how many keys you can lose and still transact.
| Setup | Thief needs | Keys you can lose | Good for |
|---|---|---|---|
| 2-of-3 | 2 | 1 | The classic. One rogue or one lost key, no problem. |
| 2-of-4 | 2 | 2 | Keys spread across places or people; survives two losses. |
| 3-of-5 | 3 | 2 | The strongest balanced choice for a larger team treasury. |
Create a multisig wallet
In Taostats Actions, Import or Create New Multisig Wallet takes the signatories and the threshold and derives the address. Because the address comes from those two things, importing an existing multisig and creating a new one are the same step. Nothing goes on chain until the multisig has its first transaction.
Public or private transactions
When someone starts a multisig transaction, they choose how much of it is visible on chain while it waits for the other signatures. This is the one real choice you make each time, a trade-off between transparency and privacy.
- Public (
as_multi): the full transaction goes on chain immediately. Anyone can read exactly what is proposed. Co-signers look it up and approve, and nothing needs to be sent around. - Private (
approve_as_multi): only a hash of the transaction goes on chain. The chain shows that a transaction with this fingerprint is pending, but not what it does, until it executes.
What the hash is
A hash is a short, unique fingerprint of the transaction. You can compute the fingerprint from the transaction, but you cannot work backwards from the fingerprint to the transaction. In the private flow the chain only sees the fingerprint, so the transaction itself (its call data) has to reach the other signers separately: a copy-paste, a link or a shared file.
One subtlety about "private"
Private hides the details of a transaction only if those details can't be guessed. Anyone can compute a hash from a transaction, so an observer who can guess what you're doing can hash their guess and compare it with the pending one. If you always do the same thing (say, 50 TAO to the same wallet every Thursday), the private version isn't hidden: a watcher tries the obvious call and sees it match. The hash is doing its job; the leak is that the transaction is predictable.
Two fixes for predictable transactions:
- Add a random remark to the transaction. It changes the hash every time, so nobody can guess it. In Taostats Actions this is the Make unguessable option.
- Use the MEV shield when the transaction executes, so it can't be front-run at that moment.
The remark protects the waiting period; the shield protects the execution.
Public (as_multi) | Private (approve_as_multi) | |
|---|---|---|
| On chain while pending | The whole transaction | Only its hash |
| Co-signers get the details from | The chain (automatic) | You, sent separately |
| Visible to the public before it runs | Yes | No |
| Extra step for signers | None | Paste in the call data to check the hash |
| Best when | Simplest and most transparent: the default | You don't want the pending action public early |
Either way, it becomes public in the end. When the approval that reaches the threshold is submitted, the transaction executes on chain and everyone can see it. That final approval must carry the full call data, because it is what runs the call. "Private" only means hidden while waiting for signatures.
Public transaction walkthrough
Private transaction walkthrough
Cancel a pending transaction
A pending multisig transaction can be cancelled at any point before it executes, with cancel_as_multi. Only the signatory who started it (the first approval, which reserved the deposit) can cancel it. The cancel names the multisig (threshold and the other signatories), the timepoint of that first approval, and the call hash. On success the pending transaction is removed, its deposit is returned to the signer who started it, and the chain emits MultisigCancelled.
Cancelling needs only the hash, not the call data. That makes it the way out of a private transaction whose call data has been lost: it can never be executed, but it can be cancelled. In Taostats Actions, View or Cancel Multisig Transactions lists your pending transactions and cancels one.
Summary
- A multisig is an account controlled by a group of keys, needing M of N to approve any action.
- It protects you from both theft (one key can't act alone) and loss (one lost key doesn't lock you out).
- Its address is derived from the members and the threshold: change either and it's a new account.
- Each transaction is public (the whole transaction on chain) or private (only its hash on chain, call data passed around separately).
- Before signing, always confirm the transaction's hash matches the chain.
- The signer who started a pending transaction can cancel it before it executes and gets the deposit back.