What resets depth
One rule covers all of it. If the carrier outpoint is spent in a confirmed transaction, the stretch ends and depth restarts at zero.
- Which everyday wallet actions spend a carrier, from a consolidation to an exchange deposit.
- Why bumping a fee from a sibling output leaves the carrier alone, and what replacing the parent transaction changes instead.
- The five habits behind almost every accidental spend, and how locking the carrier output stops automatic coin selection and max sends from taking it.
- What a reset leaves you with: the same artifact id, every earlier ring, and one new ring recording the stretch that just closed.
- How to ask an indexer whether an outpoint in a transaction you are about to sign is a carrier.
Everything on this page is that rule wearing different clothes. There is no separate list of forbidden actions, and nothing is watching your intent. The chain sees an outpoint consumed, and that is the whole event. The public page on how depth works shows the same moment as a picture.
Action by action
Three columns: what you did, whether the carrier ended up as an input, and why. Every yes in the middle column is the same spend seen from a different wallet screen, so read the third column rather than trying to memorise the first.
| Action | Resets depth | Why |
|---|---|---|
| Sending the endowment to someone | Yes | The carrier is an input |
| Sending part of it, with change back to yourself | Yes | The carrier is still consumed. The change output is a new output at a new height. |
| Consolidating several outputs into one | Yes | Consolidation spends every input, carrier included |
| Sweeping a wallet to a new seed | Yes | A sweep spends everything it can find |
| Depositing to an exchange | Yes | The deposit transaction spends the carrier. The exchange then spends it again into its own wallet. |
| Selling the artifact | Yes | Delivery to the buyer is a spend. See Transferring an artifact. |
| Replacing an unconfirmed transaction that would create the carrier | No, nothing has started | An unconfirmed transaction has no protocol effect, so no depth is running yet. The replacement does have a different txid, so the carrier is a different outpoint, and for a reveal the artifact id changes too. |
| Bumping the fee of a transaction that spends the carrier | Yes | The replacement still spends the carrier |
| Moving to a new address for privacy | Yes | Any move is a move |
| CPFP by spending a different output of the same transaction | No | A sibling output is a different outpoint. The carrier is untouched. |
| Receiving more coins to the same address | No | New outputs do not affect the carrier outpoint |
| Signing an attestation | No | Signing a message spends nothing |
| An unconfirmed spend sitting in the mempool | Not yet | Depth ends at the height the spend confirms. Replace it with a transaction that leaves the carrier alone and nothing happened. |
| Your indexer going offline | No | Depth is chain data, not indexer data |
The case that does not reset: CPFP on a different output
Say your reveal transaction created two outputs: vout 1 is the carrier, vout 2 is a small change output. The transaction is stuck at a low fee.
- Spending vout 2 in a child transaction with a high fee bumps the parent and leaves the carrier alone. Depth is unaffected.
- Spending vout 1 does the same fee job and destroys the stretch.
This is why the mint walkthrough tells you to keep a separate output for fee bumping. Build the escape hatch before you need it.
If the transaction that would create your carrier has not confirmed yet, no stretch is running, so neither way of speeding it up can cost you depth. They differ on identity. CPFP from a sibling output keeps the txid you already wrote down. Replacing it by fee gives it a new txid, so the carrier becomes a different outpoint, and a replaced reveal produces a different artifact id.
Where accidents actually come from
Five patterns cover nearly all of them. In each one the wallet is doing exactly what it was built to do, which is why an accidental spend sits on the public list of risks instead of being treated as user error.
- Automatic coin selection. Your wallet picks inputs to minimise fees and picks the carrier. Fix: lock the output.
- Consolidation during low fees. A wallet or a helpful script tidies up when fees drop. Fix: never point consolidation tooling at the artifact wallet.
- Restore and sweep. Restoring some wallets sweeps found coins to fresh addresses. Fix: check the restore behaviour before restoring, and restore watch only first if you can.
- Sending "everything". A max send spends every output that is not locked. Fix: lock the carrier, then max sends skip it.
- Custodial anything. Once coins reach a custodian, they are moved on the custodian's schedule. Fix: do not deposit an artifact carrier anywhere.
If it happens
You did not lose the artifact. You lost the current stretch.
- The artifact id is unchanged.
- A ring is engraved for the stretch that just ended, recording exactly how deep it got.
- The artifact follows the money to a successor output, and depth restarts from that block.
- If no output qualifies as a successor, the artifact becomes a relic and stops.
Successor selection is deterministic and you can steer it. See KEEP and the default rule.
Check before you sign
Any wallet that can list transaction inputs can answer the only question that matters: is my carrier outpoint one of the inputs. If your tooling supports it, the indexer answers it in bulk without storing anything:
curl -s -X POST https://indexer.example.org/patina/safety/outpoints \
-H 'content-type: application/json' \
-d '{"outpoints":["1d29e5ba13cecf357a9218518914617f872eeaa83a33bf6be6fd78dfdd1ce9c6:1"]}'
Each outpoint comes back classified as carrier, commit, or none,
with the artifact ids it would affect. The endpoint stores nothing you send it. Details in the
endpoint reference.