# Lock BSV behind keys, time or a secret: every rule

Every do and don't the guide states on the pages behind this skill. The costly ones come first; the full list follows, grouped by page. Quote them; do not paraphrase them.

50 rules: 18 that can cost money, 3 that can cost trust, 29 standard.

## Start here

- **DO** _(Costs money)_ Build time conditions with nLockTime and nSequence, and test that an early spend fails. A test that only proves the late spend succeeds proves nothing.
  <https://www.bitcoinsv.design/guide/rule/b62aa2ae7d/>
- **DO** _(Costs money)_ State where a pre-signed future transaction lives, who holds it, and what happens if the inputs are spent before its date. That is a backup requirement, not an implementation detail.
  <https://www.bitcoinsv.design/guide/rule/31f330a837/>
- **DO** _(Costs money)_ Warn before a condition becomes unmeetable, not after. "One more lost key and this is unrecoverable" is useful; the same message afterwards is not.
  <https://www.bitcoinsv.design/guide/rule/039e20ae48/>
- **DON'T** _(Costs money)_ Let a user create a condition they have not demonstrably tested. Require a small-value rehearsal of the unlock path before real money goes in.
  <https://www.bitcoinsv.design/guide/rule/b13bd63634/>
- **DO** _(Costs money)_ Back up the wallet configuration alongside the key material, and include it in the recovery drill. A condition nobody can reconstruct is money nobody can move. See Backups.
  <https://www.bitcoinsv.design/guide/rule/85a7914dd7/>
- **DO** _(Costs money)_ Back up the wallet configuration with the same care as a key. It names every key in the arrangement.
  <https://www.bitcoinsv.design/guide/rule/63bb703e74/>
- **DON'T** _(Costs money)_ Offer a period shorter than a few months. A path that opens while somebody is on a long trip is a theft risk dressed as a feature.
  <https://www.bitcoinsv.design/guide/rule/a67beef669/>
- **DO** _(Costs money)_ Make sure they keep the pre-signed transaction, since without it the path is theoretical. The wallet should hold it and the backup should include it.
  <https://www.bitcoinsv.design/guide/rule/6b029ec268/>
- **DON'T** _(Costs money)_ Add somebody to a recovery path without telling them. The arrangement only works if they still have their key when it matters.
  <https://www.bitcoinsv.design/guide/rule/83ba29796b/>
- **DO** _(Costs money)_ Send the new recovery transaction to the recovery people as part of every refresh, and show on the home screen anyone who has not received it.
  <https://www.bitcoinsv.design/guide/rule/80b2f24149/>
- **DO** _(Costs money)_ Treat it as a change with consequences: move the money to new outputs first, so the removed person's copy stops working, then say who was removed and send the new transaction to the people who remain.
  <https://www.bitcoinsv.design/guide/rule/03a855b0c8/>
- **DON'T** _(Costs money)_ Let somebody be removed from a recovery path without the wallet confirming the replacement transaction actually reached everybody who needs it.
  <https://www.bitcoinsv.design/guide/rule/9f8f455aa6/>
- **DO** _(Costs money)_ The pre-signed transaction is the part other backup designs have no slot for, and the part that makes this arrangement real. Back it up with the configuration, re-export it every time it is rebuilt, and include it in the recovery drill. See Backups.
  <https://www.bitcoinsv.design/guide/rule/3e4771352c/>
- **DON'T** _(Costs money)_ Finish setup without the user having restored from it once, with a small amount. An untested multi-key wallet has more ways to fail than a single-key one.
  <https://www.bitcoinsv.design/guide/rule/18966d7037/>
- **DON'T** _(Costs money)_ Let the limit be raised with a single key. Raising the threshold for spending is itself a high-value action and needs the quorum.
  <https://www.bitcoinsv.design/guide/rule/3e6a8e94db/>
- **DON'T** _(Costs money)_ Let the everyday wallet pull from savings on its own. A compromised app would drain both, which defeats the whole arrangement. See Multiple wallets.
  <https://www.bitcoinsv.design/guide/rule/3b0fcb147c/>
- **DO** _(Costs money)_ Move the funds to a new arrangement when a key is lost, and say why: the old key still works on every output it is part of until the money moves.
  <https://www.bitcoinsv.design/guide/rule/c85e78c073/>
- **DO** _(Costs money)_ Back up the wallet configuration alongside the keys, and include it in the recovery drill. A quorum of signers with no record of the arrangement cannot spend. See Backups.
  <https://www.bitcoinsv.design/guide/rule/2d50f1ba9d/>
- **DO** _(Costs trust)_ Treat the condition as public when you design it. A recovery path that only works because nobody knows it exists is not a security property.
  <https://www.bitcoinsv.design/guide/rule/6c60d5831a/>
- **DO** _(Costs trust)_ Let a partly signed payment be abandoned cleanly, without leaving funds stuck.
  <https://www.bitcoinsv.design/guide/rule/d1ea40e31c/>
- **DON'T** _(Costs trust)_ Build savings features into the everyday wallet. A wallet that is both ends up too slow for a coffee and too exposed for savings.
  <https://www.bitcoinsv.design/guide/rule/e9a7cf3858/>

## Every rule, by page

### Spending conditions

https://www.bitcoinsv.design/guide/patterns/spending-conditions/

- **DO** _(Costs money)_ Build time conditions with nLockTime and nSequence, and test that an early spend fails. A test that only proves the late spend succeeds proves nothing.
  <https://www.bitcoinsv.design/guide/rule/b62aa2ae7d/>
- **DO** _(Costs money)_ State where a pre-signed future transaction lives, who holds it, and what happens if the inputs are spent before its date. That is a backup requirement, not an implementation detail.
  <https://www.bitcoinsv.design/guide/rule/31f330a837/>
- **DO** State the minimum transaction version any script you document requires. A script that works in one version and silently fails in another is the worst kind of documentation error.
  <https://www.bitcoinsv.design/guide/rule/cef6a5fb47/>
- **DON'T** Assume every wallet or service in the chain of custody emits the version your script needs. Check before you depend on it.
  <https://www.bitcoinsv.design/guide/rule/165a3631ce/>
- **DO** _(Costs trust)_ Treat the condition as public when you design it. A recovery path that only works because nobody knows it exists is not a security property.
  <https://www.bitcoinsv.design/guide/rule/6c60d5831a/>
- **DO** Describe a condition by its consequence: "Locked until 1 March 2027. Nobody can move this, including you."
  <https://www.bitcoinsv.design/guide/rule/c25799d12f/>
- **DO** Show the whole schedule on one screen, including the rules that have not taken effect yet.
  <https://www.bitcoinsv.design/guide/rule/5e1c50a8ad/>
- **DO** _(Costs money)_ Warn before a condition becomes unmeetable, not after. "One more lost key and this is unrecoverable" is useful; the same message afterwards is not.
  <https://www.bitcoinsv.design/guide/rule/039e20ae48/>
- **DO** Let an unfinished setup be saved and resumed. These arrangements need several devices or several people and rarely come together in one sitting.
  <https://www.bitcoinsv.design/guide/rule/c52aed0ae0/>
- **DON'T** _(Costs money)_ Let a user create a condition they have not demonstrably tested. Require a small-value rehearsal of the unlock path before real money goes in.
  <https://www.bitcoinsv.design/guide/rule/b13bd63634/>
- **DON'T** Offer a condition builder to ordinary users. Offer two or three worked arrangements with names and plain descriptions, and let the complexity live in the templates rather than in the user's head.
  <https://www.bitcoinsv.design/guide/rule/14e24f95bf/>
- **DO** _(Costs money)_ Back up the wallet configuration alongside the key material, and include it in the recovery drill. A condition nobody can reconstruct is money nobody can move. See Backups.
  <https://www.bitcoinsv.design/guide/rule/85a7914dd7/>

### Multi-key

https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/

- **DO** Show whose signature is still outstanding, and give a way to nudge them. Most of the time a shared payment is waiting on a person, not on the network.
  <https://www.bitcoinsv.design/guide/rule/1a6af3cd89/>
- **DO** Walk the setup one key at a time, and say for each one where it is going and what losing it would mean.
  <https://www.bitcoinsv.design/guide/rule/aa6d776a46/>
- **DO** Let an unfinished setup be saved and resumed. Gathering three devices or three people rarely happens in one sitting.
  <https://www.bitcoinsv.design/guide/rule/9dbd190984/>
- **DON'T** Finish setup without the user having restored from it once. An untested multi-key wallet is a wallet with more ways to fail than a single-key one.
  <https://www.bitcoinsv.design/guide/rule/973cc5b477/>
- **DO** _(Costs money)_ Back up the wallet configuration with the same care as a key. It names every key in the arrangement.
  <https://www.bitcoinsv.design/guide/rule/63bb703e74/>
- **DO** Show what is being signed in plain terms on every device that signs, and how many signatures are collected.
  <https://www.bitcoinsv.design/guide/rule/a4c57c41cd/>
- **DO** _(Costs trust)_ Let a partly signed payment be abandoned cleanly, without leaving funds stuck.
  <https://www.bitcoinsv.design/guide/rule/d1ea40e31c/>
- **DON'T** Say "2-of-3 multisig". Say "Two of your three keys are needed to spend", and name the keys the way the user named them.
  <https://www.bitcoinsv.design/guide/rule/47ec5ed38b/>
- **DO** Pick on the trust question, not the privacy one. If the parties need to be sure no one of them can ever reconstruct the whole key, that is bare multisig. If the goal is one person's key surviving a fire, shares are simpler and cheaper.
  <https://www.bitcoinsv.design/guide/rule/314d72ca3c/>

### Time-based recovery

https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/

- **DO** Explain the arrangement before any key is created, in terms of what happens rather than what it is made of: "You can always spend this. If you don't use it for a year, the people you choose can."
  <https://www.bitcoinsv.design/guide/rule/8dfae2ba23/>
- **DO** Name each key by where it is, not by its number. "This phone", "Signing device", "Anna's phone" is what the owner will need to recognise in two years.
  <https://www.bitcoinsv.design/guide/rule/127a0fb82c/>
- **DO** Turn reminders on by default and say why: the path opening is the failure case, and a reminder is what prevents it.
  <https://www.bitcoinsv.design/guide/rule/af11a6d2c2/>
- **DON'T** _(Costs money)_ Offer a period shorter than a few months. A path that opens while somebody is on a long trip is a theft risk dressed as a feature.
  <https://www.bitcoinsv.design/guide/rule/a67beef669/>
- **DO** Tell them what they have been given, in a message they can understand without the app: "Maya has named you on her savings wallet. You can't spend anything. If she doesn't use it for a year, you and one other person can move it on her behalf."
  <https://www.bitcoinsv.design/guide/rule/c0b4b90826/>
- **DO** _(Costs money)_ Make sure they keep the pre-signed transaction, since without it the path is theoretical. The wallet should hold it and the backup should include it.
  <https://www.bitcoinsv.design/guide/rule/6b029ec268/>
- **DON'T** _(Costs money)_ Add somebody to a recovery path without telling them. The arrangement only works if they still have their key when it matters.
  <https://www.bitcoinsv.design/guide/rule/83ba29796b/>
- **DO** Show the date plainly on the home screen, as a date rather than a countdown. "Recovery opens 14 March 2027" is checkable; "in 237 days" is anxiety.
  <https://www.bitcoinsv.design/guide/rule/4c280b1a8a/>
- **DO** Remind well in advance, more than once, and through a channel that is not the app. Somebody who has stopped opening the app is exactly the person who needs reminding.
  <https://www.bitcoinsv.design/guide/rule/f5dbcff12d/>
- **DO** Notify the recovery people when the path is refreshed, so they know the arrangement is alive.
  <https://www.bitcoinsv.design/guide/rule/8040ebc146/>
- **DO** _(Costs money)_ Send the new recovery transaction to the recovery people as part of every refresh, and show on the home screen anyone who has not received it.
  <https://www.bitcoinsv.design/guide/rule/80b2f24149/>
- **DO** _(Costs money)_ Treat it as a change with consequences: move the money to new outputs first, so the removed person's copy stops working, then say who was removed and send the new transaction to the people who remain.
  <https://www.bitcoinsv.design/guide/rule/03a855b0c8/>
- **DON'T** _(Costs money)_ Let somebody be removed from a recovery path without the wallet confirming the replacement transaction actually reached everybody who needs it.
  <https://www.bitcoinsv.design/guide/rule/9f8f455aa6/>
- **DO** Fold the path rebuild into device replacement automatically, and show it as a step so the owner knows it happened.
  <https://www.bitcoinsv.design/guide/rule/eda637f60b/>
- **DO** _(Costs money)_ The pre-signed transaction is the part other backup designs have no slot for, and the part that makes this arrangement real. Back it up with the configuration, re-export it every time it is rebuilt, and include it in the recovery drill. See Backups.
  <https://www.bitcoinsv.design/guide/rule/3e4771352c/>

### Savings wallet

https://www.bitcoinsv.design/guide/savings-wallet/

- **DO** Size it by what the everyday wallet should not hold. "How much would you be uncomfortable keeping on your phone?" is the question that produces a sensible split.
  <https://www.bitcoinsv.design/guide/rule/1eb2669b31/>
- **DON'T** _(Costs trust)_ Build savings features into the everyday wallet. A wallet that is both ends up too slow for a coffee and too exposed for savings.
  <https://www.bitcoinsv.design/guide/rule/e9a7cf3858/>
- **DO** Walk setup one key at a time, saying for each where it is going and what losing it would mean.
  <https://www.bitcoinsv.design/guide/rule/c9c8e70a29/>
- **DO** Let setup be saved and resumed. Gathering devices rarely happens in one sitting, and a setup that cannot be resumed tends to be abandoned.
  <https://www.bitcoinsv.design/guide/rule/3a979d7e2f/>
- **DON'T** _(Costs money)_ Finish setup without the user having restored from it once, with a small amount. An untested multi-key wallet has more ways to fail than a single-key one.
  <https://www.bitcoinsv.design/guide/rule/18966d7037/>
- **DO** Design on the assumption that the rule is readable. A recovery path that works only because nobody knows it exists is not a security property. See Multi-key.
  <https://www.bitcoinsv.design/guide/rule/434b4c253c/>
- **DO** Say which path a payment is taking before the user starts, not after. "This is above your limit, so it needs your signing device too."
  <https://www.bitcoinsv.design/guide/rule/90ba3c11ba/>
- **DO** Show progress through a multi-key signature as collected and outstanding, naming the device still needed.
  <https://www.bitcoinsv.design/guide/rule/0b19f18430/>
- **DON'T** _(Costs money)_ Let the limit be raised with a single key. Raising the threshold for spending is itself a high-value action and needs the quorum.
  <https://www.bitcoinsv.design/guide/rule/3e6a8e94db/>
- **DO** Make the transfer a named action with the destination prefilled, so it is two taps from the savings home screen.
  <https://www.bitcoinsv.design/guide/rule/8d0a0bb957/>
- **DON'T** _(Costs money)_ Let the everyday wallet pull from savings on its own. A compromised app would drain both, which defeats the whole arrangement. See Multiple wallets.
  <https://www.bitcoinsv.design/guide/rule/3b0fcb147c/>
- **DO** _(Costs money)_ Move the funds to a new arrangement when a key is lost, and say why: the old key still works on every output it is part of until the money moves.
  <https://www.bitcoinsv.design/guide/rule/c85e78c073/>
- **DO** _(Costs money)_ Back up the wallet configuration alongside the keys, and include it in the recovery drill. A quorum of signers with no record of the arrangement cannot spend. See Backups.
  <https://www.bitcoinsv.design/guide/rule/2d50f1ba9d/>
- **DO** Prompt an occasional recovery check. A wallet opened twice a year is one whose backup has had a long time to go stale.
  <https://www.bitcoinsv.design/guide/rule/3353cfee07/>
