Vault
Also called: vaults, Bitcoin vault, OP_VAULT, covenant vault, reactive security.
A vault holds bitcoin so that withdrawals must wait out a delay, during which the owner can send the coins to a safe recovery address instead.
A vault is a custody setup that adds a waiting period to withdrawals. Spending happens in two steps: first a withdrawal is triggered on-chain, then, only after a delay such as a day, the coins can move to their final destination. During the delay the owner can claw them back to a pre-chosen recovery path, typically a key kept in very secure cold storage. If a thief steals the everyday key, the owner sees the trigger and sweeps the coins to safety before the theft completes.
How vaults can be built
- Today, with pre-signed transactions. The trigger, withdrawal and recovery transactions are signed in advance with a key that is then deleted. This works under current rules, but as BIP 345 describes, it requires secure key deletion, fixed amounts and careful backup of the pre-signed transactions.
- With covenant opcodes. A covenant lets the script itself enforce the trigger, delay and recovery structure. BIP 345 (OP_VAULT and OP_VAULT_RECOVER, by James O'Beirne and Greg Sanders) was designed for this, used together with BIP 119 CHECKTEMPLATEVERIFY, whose references include simple CTV vault designs. BIP 347 notes that OP_CAT is enough to build vaults, and BIP 443 (OP_CHECKCONTRACTVERIFY) offers a general building block whose motivation includes the same two-step withdrawal. Template opcodes such as BIP 446 can likewise fix the withdrawal transaction in advance.
Building blocks
Vaults rely on relative timelocks (OP_CHECKSEQUENCEVERIFY, BIP 112) for the delay, and on fee bumping, such as anchor outputs, so the recovery transaction confirms quickly when it matters.
BIP 345 also notes a side benefit: a long, provable delay makes coercion (the "$5 wrench attack") less useful. See the covenants guide for how the vault proposals compare.