MinaGuard · User Guide
MinaGuard is a multi-sig wallet on the Mina blockchain. Funds move only when the required number of owners approve, and the chain enforces this with a zero-knowledge proof. No server or individual owner can move funds alone.
This guide covers the core terminology, the propose, approve, and execute lifecycle, and the steps to create and operate a vault.
Control
N-of-M approval
Enforced by
On-chain proof
Sign with
Auro, Ledger, or offline
Start here
Every action follows the same three stages. Nothing is committed on-chain until the final stage.
An owner drafts and signs the action, which is recorded as a proposal. Proposing counts as the proposer's first approval.
The remaining owners review and approve the proposal. Approvals are tracked as confirmations.
When confirmations reach the threshold, the proposal is executed: the proof is submitted on-chain and the change takes effect. Any party can execute; only reaching the threshold matters.
Owners sign a proposal hash, not a readable form. This is known as blind signing. Before signing, MinaGuard recomputes the hash from on-chain state and verifies it matches, so the app's display corresponds to what is signed.
Start here
The application uses a small, consistent vocabulary.
You; a vault you do not own is shown as View-only.Required Confirmations.Your first Vault
Creating a vault takes four steps and confirms after roughly three minutes.
Connect Auro (browser extension) or Ledger (USB, via WebHID). Ledger also requires a Vault Index, the account number on the device (default 0).
From Your Vaults, select Create Vault. Enter a local nickname and choose a network. Only Testnet is currently available.
The vault address is generated automatically. Add each owner address (up to twenty; your wallet is included by default) and set the threshold.
Select Deploy Vault. A single transaction creates the vault and installs its owners, confirming after the next block.
Your first Vault
Once a vault is deployed, every action follows this sequence.
Open a vault and select New Proposal. Choose an action, complete the form (the nonce is prefilled), and select Submit Proposal. Proposing records the proposer's first approval.
Each remaining owner opens the proposal and selects Approve Proposal. Confirmations accrue until the threshold is met. If a proposal cannot proceed, the app disables the action and states why, right on the proposal.
When the threshold is met, select Execute Proposal. Any party can execute. If the vault balance is insufficient, execution is blocked.
Going further
Every action is one of the following types. The chips indicate whether an action affects the current vault (LOCAL) or a SubVault (REMOTE), and whether it changes the config nonce.
Send MINA to up to nine recipients.
Add a signer to the owner set.
Remove a signer. Blocked if it would drop the owner count below the threshold.
Change the number of approvals required.
Set or clear the block-producer delegate. Moves no funds.
Deploy a SubVault owned by this Vault.
Fund one or more SubVaults from this Vault.
Return an amount from a SubVault to this Vault.
Drain a SubVault's balance to this Vault and permanently disable its multisig. Irreversible.
Enable or disable a SubVault running its own proposals.
Going further
A SubVault is a vault owned by another vault, used to separate funds into compartments the owning Vault controls. Nesting is limited to one level.
On a top-level vault, open SubVaults and select Create SubVault. Owners and threshold are prefilled from the Vault. Propose it, have the Vault owners approve, then execute to initialize the SubVault.
Allocate to SubVaults sends MINA to SubVaults. Reclaim from SubVault returns an amount to the Vault, capped at the SubVault balance.
Toggle SubVault Multi-sig controls whether a SubVault can run its own proposals. When disabled, the SubVault is controlled only by its Vault; Vault-authorized actions still apply.
Destroy SubVault drains the SubVault to its Vault and permanently disables it. The action is irreversible and requires confirmation.
Going further
To keep an owner key on a machine that is never online, use air-gapped signing. Propose, approve, and execute each offer an Online and Offline option.
On the Offline tab, enter the Signer Address (Fee Payer): the public key of the key held on the offline machine. No wallet connection is required.
Under Instructions, download mina-guard-cli for your platform and verify it against the published SHA256SUMS.
Select Export Bundle. The app downloads a JSON file describing exactly what will be signed, and warns of any fee-payer balance or account-creation costs.
Transfer the bundle to the offline machine and run:
The CLI prints a readable summary and requires you to type y before signing.
Return signed.json to an online machine and upload it. The app verifies it is bound to the correct vault and proposal, then broadcasts it.
Reference
The Auro browser extension. The standard option; its network follows the extension.
A Ledger device over USB (WebHID). The app requests a Vault Index. The network is fixed by the vault's deployment.
The signing key never goes online. See Air-gapped signing.
MinaGuard User Guide
Terminology and flows reflect the application as built. Where the interface wording and the contract behavior differ, the contract is authoritative.