> For the complete documentation index, see [llms.txt](https://shinkalabs.gitbook.io/hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinkalabs.gitbook.io/hub/andromeda/guides/discovery.md).

# Discovery

Discovery proves that a user controls an external wallet, so it can be linked to an identity or added as a recovery owner. The user signs a challenge with that wallet using the wallet ecosystem's own message-signing convention; Andromeda checks the signature and resolves the wallet.

{% hint style="info" %}
Exact request and response bodies are in the [OpenAPI spec](https://api.andromedainfra.pro/openapi.json).
{% endhint %}

## The flow

1. `POST /v1/recovery/challenge` with the wallet you are proving and an `appId` (required). Returns a challenge appropriate for the wallet's signing scheme.
2. The user signs the challenge in their wallet, using that wallet's standard message-signing flow.
3. `POST /v1/recovery/resolve` with the signature. Andromeda verifies it and returns the resolved wallet identity.

The `appId` scopes the proof, so a signature gathered for one application cannot be reused by another.

## Supported schemes

Seven off-chain signing conventions are covered:

| Scheme              | Ecosystem | Convention                     |
| ------------------- | --------- | ------------------------------ |
| `ed25519-raw`       | Solana    | raw ed25519 over the challenge |
| `ed25519-near`      | NEAR      | NEP-413 signed message         |
| `ed25519-aptos`     | Aptos     | AIP-62 signed message          |
| `secp256k1-eip191`  | EVM       | `personal_sign` / EIP-191      |
| `secp256k1-adr036`  | Cosmos    | ADR-036 signed message         |
| `secp256k1-bitcoin` | Bitcoin   | BIP-137 message signature      |
| `sr25519-substrate` | Substrate | sr25519 signed message         |

See [Recovery schemes](/hub/andromeda/reference/recovery-schemes.md) for how these map to what is validated on-chain when the wallet is later used.

## Discovery vs on-chain validation

Discovery is the **off-chain** proof of ownership. When the wallet is actually used (as a recovery owner signing a recovery, say), the signature is validated **on-chain** by a Solana runtime precompile, and only four schemes exist there: Ed25519, Secp256k1 (by Ethereum-style address), Secp256r1, and full WebAuthn (quorum members only). So a Substrate user who proves ownership with `sr25519-substrate` for discovery enrolls their on-chain recovery owner using Ed25519 or Secp256k1, both of which Substrate supports natively. This is deliberate: no on-chain attestor. See [Zero attestor](/hub/andromeda/concepts/zero-attestor.md).

## Where it leads

* Add the proven wallet to a recovery roster: [Configure recovery](/hub/andromeda/guides/configure-recovery.md).
* Link the proven wallet to an identity: [Identity](/hub/andromeda/concepts/identity.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://shinkalabs.gitbook.io/hub/andromeda/guides/discovery.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
