> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nacrelabs.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Recover unprocessed PRL

> Reclaim a deposit yourself if it didn't get processed.

Every Deposit Address has a script-path you can spend yourself **after 7
days (1,008 Pearl blocks)**, with no validator signatures. If a deposit
fails to process for any reason, this is how you reclaim the PRL on your
own.

<Note>
  You only need this flow if a deposit was **not** processed (no wPRL was
  minted) and you want your PRL back. If wPRL was minted, use the
  [redemption flow](/wprl/burn) instead.
</Note>

## When to use this

Use the recovery flow if:

* You deposited PRL to a Deposit Address more than 7 days ago, and
* No wPRL was ever minted to your Solana wallet for that deposit, and
* The deposit has not already been swept into the Cold Reserve.

If any of these are false, the standard flows apply and you should not need
to recover manually.

## How the script-path works

Your Deposit Address is a Taproot output with two spending paths:

```
Deposit Address = Taproot(
  internal_key = TEE-enforced signing quorum,  // key-path
  script_tree  = [
    leaf 0: <1008> OP_CSV OP_DROP <your_xonly_pubkey> OP_CHECKSIG
  ]
)
```

The script-path leaf requires:

1. **Time:** the input must have `nSequence ≥ 1008`, and the deposit must
   have been confirmed at least 1,008 blocks ago.
2. **Signature:** a Schnorr signature from a key you control, deterministically
   derived from your Solana wallet.

The key is derived as:

```
solana_signature      = signMessage(your Solana wallet, canonical message)  // 64-byte ed25519 sig
user_emergency_secret = HKDF-SHA256(IKM = solana_signature,
                                    info = "nacre-hot-reserve-user-key-v2")
```

The canonical message is a fixed 62-byte payload — domain tag + network

* your Solana pubkey — so signing it never authorizes anything else,
  and ed25519 is deterministic so re-signing reproduces the same secret.
  Anyone holding your Solana wallet can re-derive this key on demand;
  there is nothing extra to back up. Only the holder of the Solana
  *secret* key can produce the signature, so the emergency exit really is
  user-controlled.

## Option A: Use the Nacre app

<Steps>
  <Step title="Open the Nacre app and connect your Solana wallet">
    Visit `TBD`. Use the same Solana wallet that created the Deposit Address.
  </Step>

  <Step title="Find the stuck deposit">
    Open **Activity → Stuck deposits**. The app lists deposits that are older
    than 7 days and have not been processed. *(UI: screenshot TBD.)*
  </Step>

  <Step title="Sign and broadcast the reclaim transaction">
    Click **Reclaim**, enter the Pearl address that should receive your PRL,
    and sign the reclaim message with your Solana wallet. The app builds the
    script-path spend, broadcasts it, and shows confirmation status.
  </Step>
</Steps>

## Option B: Use the `nacre-reclaim` CLI

<Note>
  The standalone `musl`-static `nacre-reclaim` CLI is **planned but not
  yet shipped.** The previous skeleton in `crates/nacre-reclaim-cli/`
  was removed in a recent cleanup pass — it was a stub binary that
  printed `nacre-reclaim (skeleton)` and exited. The full design
  (commands, acceptance criteria, reproducible-build requirements)
  lives in `ARCHITECTURE.md §6.9`. Until the CLI returns, **Option A
  (the web app) is the supported emergency exit.**
</Note>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Do I need to ask validators or admins to approve this?">
    No. The script-path spend uses only your signature. Validators, the
    aggregator, and the admin multisig are not involved.
  </Accordion>

  <Accordion title="What if I lost my Solana wallet?">
    The emergency key is derived from your Solana key, so if you lose access
    to that wallet you lose access to the reclaim path as well. Keep your
    Solana wallet backed up.
  </Accordion>

  <Accordion title="My deposit was already swept into the Cold Reserve">
    The Cold Reserve is shared across all users and is not user-recoverable.
    If a sweep happened but wPRL was not minted, contact support (`TBD`).
    The on-chain `DepositInteraction` record can still be used to attest the
    mint.
  </Accordion>

  <Accordion title="Why 7 days?">
    The 7-day delay gives validators enough time to process every legitimate
    deposit under all expected conditions (extended Pearl reorgs, validator
    outages, scheduled maintenance) while still capping how long your PRL
    can ever be unrecoverable.
  </Accordion>
</AccordionGroup>
